Page 1 of 1
Update graph อย่างauto by vba อย่างไรครับ
Posted: Thu Apr 18, 2013 5:05 pm
by lotto009
เรียนอาจาร์ยและทุกท่านครับ
ผมอยากทราบวิธีการ Update 2graph อย่างauto by vba อย่างไรครับ หลังจากที่เรา importเข้ามาแล้ว ซึ่ง
-การ import ผมทำได้ครับ
-ส่วนการ update 2graph อย่างauto by vba อย่างไร
ผมแนบไฟล์มาให้ช่วยดูให้ด้วยครับ ผมกำหนด rangeไว้แล้วแต่ว่าพอเอามาใส่ทำไมไม่ update
ขอบพระคุณครับ

Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Thu Apr 18, 2013 5:30 pm
by snasui

ช่วยอธิบายคำว่า Update ว่าเกิดขึ้นเมื่อใดหรือด้วยเหตุการณ์ใด ด้วยข้อมูลใด
Code ที่เขียนให้ Update คือ Code ใด ติดที่บรรทัดใดครับ
Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Thu Apr 18, 2013 7:38 pm
by lotto009
เรียนอาจาร์ยครับ
-มีข้อมูลเดิมจาก13/3/2013 ถึง31/3/2013
-importเข้ามาต่อใน3/4/2013ถึง6/4/2013
-โดยใช้ range เดิมที่ Range("$A$1:$M$200000")
-ทำให้graphไม่update ตาม
ขอบคุณครับ
Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Fri Apr 19, 2013 1:02 pm
by lotto009
เรียนอาจาร์ยครับ
ผม import fileมาให้อาจาร์ยด้วยครับ คือเอา codeมาหลายๆที่แล้วมาชำแหระอีกทีแบบครูพักลักจำนะครับ
-import ได้ สำเร็จแต่ว่า graph ไม่ขี้น
ขอให้อาจาร์ยช่วยอีกแรงนะครับ ทั้งนี้ผมแนบไฟล์มาให้2ไฟล์คือ ไฟล์ importและ file V3DAILYKPIs_Check.xlsm อีกทีอันนี้รวมcode importพร้อม
เพื่อนๆคนใหนทำได้ต่อช่วยบอกด้วยนะครับ
ขอบคุณครับ

Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Fri Apr 19, 2013 3:05 pm
by snasui

ช่วยตอบตามที่ผมถามด้านบนด้วยครับ
Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Fri Apr 19, 2013 3:26 pm
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" ขึ้นมา
แต่ว่าไม่มีผลออกมาเลยครับ สรุปคือเขียนต่อไม่ได้แหะแหะ

Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Fri Apr 19, 2013 3:57 pm
by snasui

ลองดู
ตัวอย่างการปรับ 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
Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Fri Apr 19, 2013 4:37 pm
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:
ขอบคุณครับ
Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Fri Apr 19, 2013 9:31 pm
by snasui

แนบไฟล์ที่ Update Code แล้วและแจ้งว่าขั้นตอนการทำงานเป็นอย่างไร ติดขัดที่ขั้นตอนใด
สำหรับ Code ที่ผมตอบไปนั้น ที่เครื่องผมทำงานได้เป็นปกติครับ
Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Sat Apr 20, 2013 9:05 am
by lotto009
เรียนอาจาร์ย
ไฟล์แนบแล้วครับ
ขอบคุณครับ

Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Sat Apr 20, 2013 8:38 pm
by snasui
snasui wrote: 
แนบไฟล์ที่ Update Code แล้วและแจ้งว่าขั้นตอนการทำงานเป็นอย่างไร ติดขัดที่ขั้นตอนใด
สำหรับ Code ที่ผมตอบไปนั้น ที่เครื่องผมทำงานได้เป็นปกติครับ

ช่วยตอบตามที่ผมถามครับ

ผมถามอะไรก็ควรตอบตามนั้น หากอธิบายเสริมต่อไปจากนั้นก็จะยิ่งดี ผมถามขั้นตอนการทำงานก็ต้องตอบขั้นตอนการทำงาน หากไม่เข้าใจคำถามสามารถถามกลับมาได้ ทั้งนี้เพื่อให้ผู้ตอบเข้าถึงปัญหาโดยไวครับ
จากที่ตรวจสอบพบว่า Code ที่เขียนไว้เป็นการให้โปรแกรมทำงานทันทีเมื่อ ComboBox มีการเปลี่ยนแปลง ลักษณะการทำงานของโปรแกรมคือนำค่าใน ComboBox ไป Filter
จึงเป็นปกติที่จะเกิด Error หากค่าที่กรอกไม่มีอยู่ในฐานข้อมูล
การดัก Error สามารถใช้ Code
On Error Resume Next เพื่อบังคับให้ทำงานต่อไปแม้จะเกิดค่า Error โดยเขียนไว้หลังการประกาศตัวแปร และก่อน Code อื่น ๆ
Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Sun Apr 21, 2013 8:34 am
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ผิดตรงใหนหรือเปล่าครับ
ขอบคุณมากครับ

Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Sun Apr 21, 2013 8:47 am
by snasui
snasui wrote:-แต่ที่เกิดปัญหาคือgraphที่1ออกมาครบ แต่graphที่ 2ไม่update ตามเหมือนgarph แรกครับ
Graph2 ไม่ Update ก็ถูกต้องแล้วครับ Code ที่ผมแนะนำไปนั้นเป็นแค่ตัวอย่างการปรับกราฟ 1 เท่านั้น สังเกตคำว่า
ตัวอย่าง
สำหรับ Code
Sheets("Chart").ChartObjects(1).Activate และ Code ที่ต่อจากนั้น หมายถึงให้ Active Graph 1 ก่อนแล้วกำหนดค่า
หากต้องการทำกับกราฟอื่นก็ใช้รูปแบบเดียวกัน คือ Active ขึ้นมาก่อนแล้วค่อยกำหนดค่า
Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Sun Apr 21, 2013 9:28 am
by lotto009
เรียนอาจาร์ยครับ
ผมเข้าใจที่อาจาร์ยสื่อแล้วครับ ใช่ครับ ตั้งต้นให้แล้วถ้าทำต่อไม่ได้ก้อไม่รู้ว่าอะไรแล้วครับ ได้เรียนรู้อีกแล้ว
ขอบพระคุณมากครับ
อาร์ต

Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Sat Apr 27, 2013 10:17 pm
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
ขอบพระคุณมากครับ

Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Sat Apr 27, 2013 10:23 pm
by snasui

ลองตามนี้ครับ
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
Re: Update graph อย่างauto by vba อย่างไรครับ
Posted: Sat Apr 27, 2013 10:38 pm
by lotto009
เรียนอาจาร์ยที่เคารพ แหะแหะ ถึงว่าพอกดF8จะค้างตรงนั้นตลอดเวลา
ขอบพระคุณมากเลยครับ
