:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

Update graph อย่างauto by vba อย่างไรครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
lotto009
Member
Member
Posts: 157
Joined: Sat Sep 22, 2012 11:53 am

Update graph อย่างauto by vba อย่างไรครับ

#1

Post by lotto009 »

เรียนอาจาร์ยและทุกท่านครับ
ผมอยากทราบวิธีการ Update 2graph อย่างauto by vba อย่างไรครับ หลังจากที่เรา importเข้ามาแล้ว ซึ่ง
-การ import ผมทำได้ครับ
-ส่วนการ update 2graph อย่างauto by vba อย่างไร
ผมแนบไฟล์มาให้ช่วยดูให้ด้วยครับ ผมกำหนด rangeไว้แล้วแต่ว่าพอเอามาใส่ทำไมไม่ update
ขอบพระคุณครับ :D
Attachments
V3DAILYKPIs_Check.xlsm
(41.61 KiB) Downloaded 31 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Update graph อย่างauto by vba อย่างไรครับ

#2

Post by snasui »

:D ช่วยอธิบายคำว่า Update ว่าเกิดขึ้นเมื่อใดหรือด้วยเหตุการณ์ใด ด้วยข้อมูลใด

Code ที่เขียนให้ Update คือ Code ใด ติดที่บรรทัดใดครับ
lotto009
Member
Member
Posts: 157
Joined: Sat Sep 22, 2012 11:53 am

Re: Update graph อย่างauto by vba อย่างไรครับ

#3

Post by lotto009 »

เรียนอาจาร์ยครับ
-มีข้อมูลเดิมจาก13/3/2013 ถึง31/3/2013
-importเข้ามาต่อใน3/4/2013ถึง6/4/2013
-โดยใช้ range เดิมที่ Range("$A$1:$M$200000")
-ทำให้graphไม่update ตาม
ขอบคุณครับ
lotto009
Member
Member
Posts: 157
Joined: Sat Sep 22, 2012 11:53 am

Re: Update graph อย่างauto by vba อย่างไรครับ

#4

Post by lotto009 »

เรียนอาจาร์ยครับ
ผม import fileมาให้อาจาร์ยด้วยครับ คือเอา codeมาหลายๆที่แล้วมาชำแหระอีกทีแบบครูพักลักจำนะครับ
-import ได้ สำเร็จแต่ว่า graph ไม่ขี้น
ขอให้อาจาร์ยช่วยอีกแรงนะครับ ทั้งนี้ผมแนบไฟล์มาให้2ไฟล์คือ ไฟล์ importและ file V3DAILYKPIs_Check.xlsm อีกทีอันนี้รวมcode importพร้อม
เพื่อนๆคนใหนทำได้ต่อช่วยบอกด้วยนะครับ
ขอบคุณครับ :D :D :D
Attachments
V3DAILYKPIs_Check.xlsm
V3DAILYKPIs_Check
(41.61 KiB) Downloaded 29 times
CS_import.xlsx
import file
(17.17 KiB) Downloaded 24 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Update graph อย่างauto by vba อย่างไรครับ

#5

Post by snasui »

:D ช่วยตอบตามที่ผมถามด้านบนด้วยครับ
lotto009
Member
Member
Posts: 157
Joined: Sat Sep 22, 2012 11:53 am

Re: Update graph อย่างauto by vba อย่างไรครับ

#6

Post by lotto009 »

ขออนุญาตครับอาจาร์ย
-Update เกิดขึ้นเมื่อหลังจาก import เสร็จจะมี MsgBox "KPIs Data has been imported" ขึ้นมานะครับ
-มีข้อมูลเดิมจาก13/3/2013 ถึง31/3/2013
-importเข้ามาต่อใน3/4/2013ถึง6/4/2013
-โดยใช้ range เดิมที่ Range("$A$1:$M$200000")
-หลังจาก importเสร็จจะมี MsgBox "KPIs Data has been imported" ขึ้นมา
แต่ว่าไม่มีผลออกมาเลยครับ สรุปคือเขียนต่อไม่ได้แหะแหะ :D
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Update graph อย่างauto by vba อย่างไรครับ

#7

Post by snasui »

:D ลองดูตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Private Sub ComboBox1_Change()
    Dim Chart1Range1 As Range
    Dim Chart1Range2 As Range
    Dim l As Long
    Application.ScreenUpdating = False
    ActiveWorkbook.Sheets("Chart").Tab.ColorIndex = 3
    ActiveWorkbook.Sheets("KPIs").Tab.ColorIndex = 4
    Sheets("KPIs").Range("$A$1:$M$200000").AutoFilter Field:=2, Criteria1:=ComboBox1, Operator:=xlAnd
    With Sheets("KPIs")
        l = .Range("A" & Rows.Count).End(xlUp).Row
        Set Chart1Range1 = .Range("E2:E" & l)
        Set Chart1Range2 = .Range("F2:F" & l)
    End With
    Sheets("Chart").ChartObjects(1).Activate
    ActiveChart.SeriesCollection(1).Values = "=KPIs!" & Chart1Range1.Address
    ActiveChart.SeriesCollection(2).Values = "=KPIs!" & Chart1Range2.Address
End Sub
lotto009
Member
Member
Posts: 157
Joined: Sat Sep 22, 2012 11:53 am

Re: Update graph อย่างauto by vba อย่างไรครับ

#8

Post by lotto009 »

เรียนอาจาร์ยครับ
พอใส่cell name ที่ต้องการเข้าไปที่ combobox1
มีข้อความขึ้นว่า
Run-time error'1004':
Invalid Parameter
ที่บรรทัด

Code: Select all

Sheets("Chart").ChartObjects(1).Activate
    [color=#FF0000]ActiveChart.SeriesCollection(1).Values = "=KPIs!" & Chart1Range1.Address[/color]
    ActiveChart.SeriesCollection(2).Values = "=KPIs!" & Chart1Range2.Address
ซึ่งพด end จะมีข้อความขึ้นว่า
Run-time error'1004':
Application-defined or object-defined error
จะข้ามไปแล้ว Chart1Range1 แรก เปลี่ยนส่วน Chart1Range2 ที่สองไม่เปลี่ยนวันที่น่ะครับ  :roll: 
ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Update graph อย่างauto by vba อย่างไรครับ

#9

Post by snasui »

:D แนบไฟล์ที่ Update Code แล้วและแจ้งว่าขั้นตอนการทำงานเป็นอย่างไร ติดขัดที่ขั้นตอนใด

สำหรับ Code ที่ผมตอบไปนั้น ที่เครื่องผมทำงานได้เป็นปกติครับ
lotto009
Member
Member
Posts: 157
Joined: Sat Sep 22, 2012 11:53 am

Re: Update graph อย่างauto by vba อย่างไรครับ

#10

Post by lotto009 »

เรียนอาจาร์ย
ไฟล์แนบแล้วครับ
ขอบคุณครับ :D
Attachments
V3DAILYKPIs_Check.xlsm
มีerrorครับ
(60.81 KiB) Downloaded 33 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Update graph อย่างauto by vba อย่างไรครับ

#11

Post by snasui »

snasui wrote: :D แนบไฟล์ที่ Update Code แล้วและแจ้งว่าขั้นตอนการทำงานเป็นอย่างไร ติดขัดที่ขั้นตอนใด

สำหรับ Code ที่ผมตอบไปนั้น ที่เครื่องผมทำงานได้เป็นปกติครับ
:twisted: ช่วยตอบตามที่ผมถามครับ :roll: ผมถามอะไรก็ควรตอบตามนั้น หากอธิบายเสริมต่อไปจากนั้นก็จะยิ่งดี ผมถามขั้นตอนการทำงานก็ต้องตอบขั้นตอนการทำงาน หากไม่เข้าใจคำถามสามารถถามกลับมาได้ ทั้งนี้เพื่อให้ผู้ตอบเข้าถึงปัญหาโดยไวครับ

จากที่ตรวจสอบพบว่า Code ที่เขียนไว้เป็นการให้โปรแกรมทำงานทันทีเมื่อ ComboBox มีการเปลี่ยนแปลง ลักษณะการทำงานของโปรแกรมคือนำค่าใน ComboBox ไป Filter จึงเป็นปกติที่จะเกิด Error หากค่าที่กรอกไม่มีอยู่ในฐานข้อมูล

การดัก Error สามารถใช้ Code On Error Resume Next เพื่อบังคับให้ทำงานต่อไปแม้จะเกิดค่า Error โดยเขียนไว้หลังการประกาศตัวแปร และก่อน Code อื่น ๆ
lotto009
Member
Member
Posts: 157
Joined: Sat Sep 22, 2012 11:53 am

Re: Update graph อย่างauto by vba อย่างไรครับ

#12

Post by lotto009 »

เรียนอาจาร์ยครับ
ขั้นตอนการทำงานดังนี้ครับ
-import ข้อมูลเข้าไปเมื่อimport เสร็จจะมี MsgBox "KPIs Data has been imported" แสดงว่า importเข้าทั้งหมดแล้ว
-หลังจากนั้น ที่ Combo Box1 ผมจะกรอกcell nameลงไปที่เรามีรายชื่อไว้
-graph2garph แสดงข้อมูลปัจจุบันทั้งหมดออกมาตามที่
-แต่ที่เกิดปัญหาคือgraphที่1ออกมาครบ แต่graphที่ 2ไม่update ตามเหมือนgarph แรกครับ
-แล้วหากเปลี่ยนชื่อcell nameลงไปจะไม่ update ตามไป ต้องกดF8 garphจึงเปลี่ยนตามนะครับ
-ผมเอา"codeของอาจาร์ย On Error Resume Next"ดักไว้ที่หลังการประกาศทั้งหมดเช่นกันครับ ก็ไม่หาย
-หรือว่า excelมัน setผิดตรงใหนหรือเปล่าครับ
ขอบคุณมากครับ :mrgreen:
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Update graph อย่างauto by vba อย่างไรครับ

#13

Post by snasui »

:shock:
snasui wrote:-แต่ที่เกิดปัญหาคือgraphที่1ออกมาครบ แต่graphที่ 2ไม่update ตามเหมือนgarph แรกครับ
Graph2 ไม่ Update ก็ถูกต้องแล้วครับ Code ที่ผมแนะนำไปนั้นเป็นแค่ตัวอย่างการปรับกราฟ 1 เท่านั้น สังเกตคำว่าตัวอย่าง

สำหรับ Code Sheets("Chart").ChartObjects(1).Activate และ Code ที่ต่อจากนั้น หมายถึงให้ Active Graph 1 ก่อนแล้วกำหนดค่า

หากต้องการทำกับกราฟอื่นก็ใช้รูปแบบเดียวกัน คือ Active ขึ้นมาก่อนแล้วค่อยกำหนดค่า
lotto009
Member
Member
Posts: 157
Joined: Sat Sep 22, 2012 11:53 am

Re: Update graph อย่างauto by vba อย่างไรครับ

#14

Post by lotto009 »

เรียนอาจาร์ยครับ
ผมเข้าใจที่อาจาร์ยสื่อแล้วครับ ใช่ครับ ตั้งต้นให้แล้วถ้าทำต่อไม่ได้ก้อไม่รู้ว่าอะไรแล้วครับ ได้เรียนรู้อีกแล้ว :thup:
ขอบพระคุณมากครับ :D
อาร์ต :lol:
lotto009
Member
Member
Posts: 157
Joined: Sat Sep 22, 2012 11:53 am

Re: Update graph อย่างauto by vba อย่างไรครับ

#15

Post by lotto009 »

เรียนอาจาร์ยครับ
ขอรบกวนอีกนิดหนึ่งครับ ผมใช้วิธีนี้ครับ chart ที่2 3 หรือ 4จะไม่updateตามเลยครับ

Code: Select all

Private Sub ComboBox1_Change()
    Dim Chart1Range1 As Range
    Dim Chart1Range2 As Range
    Dim Chart2Range1 As Range
    Dim Chart2Range2 As Range
    Dim Chart2Range3 As Range
    Dim Chart2Range4 As Range
    Dim Chart3Range1 As Range
    Dim Chart3Range2 As Range
    Dim l As Long
    On Error Resume Next
    Application.ScreenUpdating = False
    Sheets("KPIs").Range("$A$1:$M$200000").AutoFilter Field:=2, Criteria1:=ComboBox1, Operator:=xlAnd
    With Sheets("KPIs")
        l = .Range("A" & Rows.Count).End(xlUp).Row
        Set Chart1Range1 = .Range("E2:E" & Str(l))
        Set Chart1Range2 = .Range("F2:F" & Str(l))
        Set Chart2Range1 = .Range("G2:G" & Trim(Str(l)))
        Set Chart2Range2 = .Range("H2:H" & Trim(Str(l)))
        Set Chart2Range3 = .Range("L2:L" & Trim(Str(l)))
        Set Chart2Range4 = .Range("M2:M" & Trim(Str(l)))
        Set Chart3Range1 = .Range("I2:I" & Trim(Str(l)))
        Set Chart3Range2 = .Range("J2:J" & Trim(Str(l)))

    End With
    Sheets("Chart").ChartObjects(1).Activate
    Sheets("Chart").ChartObjects(2).Activate [color=#00FF00][b]'และพอทำการลบตัวนี้ไปจะ update chartตัวแรกครับ[/b][/color]
    Sheets("Chart").ChartObjects(3).Activate[color=#00FF00][b]'และพอทำการลบตัวนี้ไปจะ update chartตัวแรกครับ[/b][/color]
    ActiveChart.SeriesCollection(1).Values = "=KPIs!" & Chart1Range1.Address
    ActiveChart.SeriesCollection(2).Values = "=KPIs!" & Chart1Range2.Address
    ActiveChart.SeriesCollection(1).Values = "=KPIs!" & Chart2Range1.Address
    ActiveChart.SeriesCollection(2).Values = "=KPIs!" & Chart2Range2.Address
    ActiveChart.SeriesCollection(3).Values = "=KPIs!" & Chart2Range3.Address
    ActiveChart.SeriesCollection(4).Values = "=KPIs!" & Chart2Range4.Address
    ActiveChart.SeriesCollection(1).Values = "=KPIs!" & Chart3Range1.Address
    ActiveChart.SeriesCollection(2).Values = "=KPIs!" & Chart3Range2.Address
    Calculate

End Sub
ขอบพระคุณมากครับ
:D
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Update graph อย่างauto by vba อย่างไรครับ

#16

Post by snasui »

:D ลองตามนี้ครับ

Code: Select all

'Other code
Sheets("Chart").ChartObjects(1).Activate
ActiveChart.SeriesCollection(1).Values = "=KPIs!" & Chart1Range1.Address
ActiveChart.SeriesCollection(2).Values = "=KPIs!" & Chart1Range2.Address
Sheets("Chart").ChartObjects(2).Activate
ActiveChart.SeriesCollection(1).Values = "=KPIs!" & Chart2Range1.Address
ActiveChart.SeriesCollection(2).Values = "=KPIs!" & Chart2Range2.Address
ActiveChart.SeriesCollection(3).Values = "=KPIs!" & Chart2Range3.Address
ActiveChart.SeriesCollection(4).Values = "=KPIs!" & Chart2Range4.Address
Sheets("Chart").ChartObjects(3).Activate
ActiveChart.SeriesCollection(1).Values = "=KPIs!" & Chart3Range1.Address
ActiveChart.SeriesCollection(2).Values = "=KPIs!" & Chart3Range2.Address
'Other code
lotto009
Member
Member
Posts: 157
Joined: Sat Sep 22, 2012 11:53 am

Re: Update graph อย่างauto by vba อย่างไรครับ

#17

Post by lotto009 »

เรียนอาจาร์ยที่เคารพ แหะแหะ ถึงว่าพอกดF8จะค้างตรงนั้นตลอดเวลา
ขอบพระคุณมากเลยครับ :D :lol:
Post Reply