snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#1
Post
by Palmib » Tue May 08, 2012 9:37 pm
จากไฟล์ที่แนบมานะคะ คืออยากสร้างกราฟแบบนั้นอ่ะค่ะ
แต่ทำไม่เป็น ไม่รู้ว่าสต้องเลือกแบบไหน
เลยอยากขอความช่วยเหลือค่ะ ใครทำได้
ช่วยกรุณาแนะนำทีนะคะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31178 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Tue May 08, 2012 10:18 pm
จากไฟล์ที่แนบมาพบว่ากราฟนี้ใช้ข้อมูลจากไฟล์
10head.xls ควรแนบไฟล์นั้นหรือ Save ไฟล์ตัวอย่างมาจากไฟล์นั้น จะไม่ได้ต้องเสียเวลาสร้างกราฟเลียนแบบ คิดว่าสะดวกในการแนะนำขั้นตอนการทำมากกว่าครับ
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#3
Post
by Palmib » Tue May 08, 2012 11:02 pm
ไฟล์นี้ใช้ได้ไหมคะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31178 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Wed May 09, 2012 1:44 pm
ลองดูวิธีการตามภาพด้านล่างและ
ทำซ้ำตั้งแต่ภาพที่ 3 กับข้อมูลอื่น ๆ ตามต้องการ กรณีต้องการเปลี่ยนให้เป็นกราฟเส้นให้คลิกขวาลงบนแท่งกราฟแล้วเลือก Change series type ครับ
You do not have the required permissions to view the files attached to this post.
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#5
Post
by Palmib » Thu May 10, 2012 4:14 pm
ขอบคุณมากมากค่ะ
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#6
Post
by Palmib » Thu May 10, 2012 4:24 pm
Code: Select all
Public Sub Graph_RSA(wn)
Charts.Add
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData Source:=Sheets("RSA_KPOV_" & wn).Range("W15"), _
PlotBy:=xlColumns
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "='XXXXX'!R5C3:R14C3"
ActiveChart.SeriesCollection(1).Values = "='XXXXX'!R18C5:R27C5"
ActiveChart.SeriesCollection(1).Name = "='XXXXX'!R4C5"
ActiveChart.SeriesCollection(2).XValues = "='XXXXX'!R5C3:R14C3"
ActiveChart.SeriesCollection(2).Values = "='XXXXX'!R18C6:R27C6"
ActiveChart.SeriesCollection(2).Name = "='XXXXX'!R4C6"
ActiveChart.SeriesCollection(3).XValues = "='XXXXX'!R5C3:R14C3"
ActiveChart.SeriesCollection(3).Values = "='XXXXX'!R5C7:R14C7"
ActiveChart.SeriesCollection(3).Name = "='XXXXX'!R4C2:R17C2"
ActiveChart.SeriesCollection(4).Values = "='XXXXX'!R18C7:R27C7"
ActiveChart.SeriesCollection(4).Name = "='XXXXX'!R18C2:R30C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:="RSA_KPIV chart"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "RSA"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
ActiveChart.SeriesCollection(4).Select
ActiveChart.SeriesCollection(4).ChartType = xlLineMarkers
ActiveChart.SeriesCollection(3).Select
ActiveChart.SeriesCollection(3).ChartType = xlLineMarkers
ActiveChart.SeriesCollection(4).Select
With Selection.Border
.ColorIndex = 3
.Weight = xlMedium
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 3
.MarkerStyle = xlTriangle
.Smooth = False
.MarkerSize = 7
.Shadow = False
End With
ActiveChart.SeriesCollection(3).Select
With Selection.Border
.ColorIndex = 1
.Weight = xlMedium
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = 1
.MarkerForegroundColorIndex = 1
.MarkerStyle = xlDiamond
.Smooth = False
.MarkerSize = 5
.Shadow = False
End With
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 7
.Pattern = xlSolid
End With
ActiveChart.SeriesCollection(2).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
ActiveChart.Axes(xlValue).MajorGridlines.Select
With ActiveChart.Axes(xlValue)
.MinimumScale = -0.5
.MaximumScale = 1
.MinorUnit = 0.05
.MajorUnit = 0.1
.Crosses = xlCustom
.CrossesAt = 0
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
End Sub
จากโค้ดข้างบนนะคะ ถ้าค่า wn เป็น integer นะคะ
แล้วหนู part ค่าเข้ามา เพื่อเป็นการกำหนดให้เป็นชื่อ sheet ค่ะ
แล้วหนูต้องกำหนดค่า XXXXX เป็นอะไรหรอคะ??
snasui
Site Admin
Posts: 31178 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#7
Post
by snasui » Thu May 10, 2012 4:32 pm
'XXXXX' ใช้แทนชีทใดก็ใส่ชื่อชีทนั้นครับ
part น่าจะเป็น pass คือการส่งค่ามาจาก Procedure อื่น ๆ
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#8
Post
by Palmib » Thu May 10, 2012 4:45 pm
อ้อ ใช่ๆค่ะ พิมพ์ผิดๆ แต่หนูกำหนดค่าเป็นแบบนี้ค่ะ
ActiveChart.SeriesCollection(1).XValues = "=' RSA_KPOV_'&wn !R5C3:R14C3"
แล้วมันไม่ได้ค่ะ มันขึ้น Run-time error '1004'
Unable to set the XValues property of the Series class
ค่ะ หนูควรแก้ยังไงหรอคะ?
snasui
Site Admin
Posts: 31178 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#9
Post
by snasui » Thu May 10, 2012 4:52 pm
สามารถแก้เป็นด้านล่างได้ครับ
ActiveChart.SeriesCollection(1).XValues = "=' RSA_KPOV_" & wn & "'!R5C3:R14C3"
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#10
Post
by Palmib » Thu May 10, 2012 5:00 pm
มันก็ยัง error อยู่เลยค่ะ
snasui
Site Admin
Posts: 31178 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#11
Post
by snasui » Thu May 10, 2012 5:06 pm
ควรส่งไฟล์ตัวอย่างมาด้วยครับจะได้ช่วยทดสอบได้
Error ฟ้องว่าอย่างไรควรแจ้งมาด้วย ตามหลักการเขียน Code เพื่ออ้างถึงชีทและเซลล์ตามที่ตอบไปนั้นผมเห็นว่าถูกต้องแล้ว ยกเว้นแจ้งมาขาดหรือเกินไปจากนั้นครับ
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#12
Post
by Palmib » Thu May 10, 2012 5:20 pm
หนู รัน Procedure exam ก่อนค่ะเพื่อสร้างชีทที่เป็นแบบที่แนบไป
แล้ว call Graph_RSA เพื่อสร้างกราฟค่ะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31178 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#13
Post
by snasui » Thu May 10, 2012 6:07 pm
เปลี่ยน Code เป็นตามด้านล่างครับ สังเกตว่าลบวรรคระหว่างเครื่องหมาย ' และ RSA_KPOV_ ออกไป
Code: Select all
ActiveChart.SeriesCollection(1).XValues = "='RSA_KPOV_" & wn & "'!R5C3:R14C3"
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#14
Post
by Palmib » Fri May 11, 2012 10:36 am
ทำได้แล้วค่ะ ขอบคุณนะคะ : ))
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#15
Post
by Palmib » Wed May 16, 2012 2:41 pm
หนูรบกวนถามค่ะ ว่า ถ้าสมมติหนูอยากกำหนดให้กราฟ ที่สร้างขึ้นมา
อยู่ตรงเซลล์ที่หนูต้องการ หนูต้องกำหนดค่าตรงไหนหรอคะ
ถ้าโค้ดของหนูเป็นแบบนี้
Code: Select all
Charts.Add
ActiveChart.ChartType = xlColumnStacked
' ActiveChart.SetSourceData Source:=Sheets("PSA_KPOV chart_" & wn).Range("N4"), _
PlotBy:=xlColumns
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "='PSA_KPOV chart_" & wn & "'!R5C3:R14C3"
ActiveChart.SeriesCollection(1).Values = "='PSA_KPOV chart_" & wn & "'!R51C9:R60C9"
ActiveChart.SeriesCollection(1).Name = "='PSA_KPOV chart_" & wn & "'!R4C5"
ActiveChart.SeriesCollection(2).Values = "='PSA_KPOV chart_" & wn & "'!R51C10:R60C10"
ActiveChart.SeriesCollection(2).Name = "='PSA_KPOV chart_" & wn & "'!R4C6"
ActiveChart.SeriesCollection(3).Values = "='PSA_KPOV chart_" & wn & "'!R51C11:R60C11"
ActiveChart.SeriesCollection(3).Name = "='PSA_KPOV chart_" & wn & "'!R4C7"
ActiveChart.SeriesCollection(4).Values = "='PSA_KPOV chart_" & wn & "'!R5C12:R14C12"
ActiveChart.SeriesCollection(4).Name = "='PSA_KPOV chart_" & wn & "'!R4C2"
ActiveChart.SeriesCollection(5).Values = "='PSA_KPOV chart_" & wn & "'!R51C12:R60C12"
ActiveChart.SeriesCollection(5).Name = "='PSA_KPOV chart_" & wn & "'!R18C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:="PSA_KPOV chart_" & wn
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Muskie PSA Sigma Contributions"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
snasui
Site Admin
Posts: 31178 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#16
Post
by snasui » Wed May 16, 2012 3:29 pm
สามารถกำหนดที่ With ActiveChart ได้ครับ เป็นเช่น
Code: Select all
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Muskie PSA Sigma Contributions"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
.Left = Worksheets("Sheet1").Range("D5").Left
.Top = Worksheets("Sheet1").Range("D5").Top
.Height = Worksheets("Sheet1").Range("D5:D15").Height
.Width = Worksheets("Sheet1").Range("D5:I5").Width
End With
ส่วนจะกำหนดให้อยู่ในเซลล์ไหน สูงและกว้างเท่ากับกี่เซลล์สามารถเปลี่ยนใน Code ข้างบนได้เลยครับ
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#17
Post
by Palmib » Wed May 16, 2012 3:49 pm
ขอบคุณมากมากนะคะ : ))
Palmib
Member
Posts: 44 Joined: Fri Apr 20, 2012 2:08 pm
#18
Post
by Palmib » Wed May 16, 2012 4:03 pm
เกิด error ค่ะ ขึ้นว่า
"Method or data member not found"
เกี่ยวกับว่าหนูใช้ excel 2000 หรือปล่าวคะ??
cruzz
Member
Posts: 54 Joined: Thu Dec 23, 2010 1:07 pm
#19
Post
by cruzz » Wed May 16, 2012 4:06 pm
แนบไฟล์มาด้วยจะดีมากเลยครับ
snasui
Site Admin
Posts: 31178 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#20
Post
by snasui » Wed May 16, 2012 4:17 pm
Palmib wrote: เกิด error ค่ะ ขึ้นว่า
"Method or data member not found"
เกี่ยวกับว่าหนูใช้ excel 2000 หรือปล่าวคะ??
ไม่เกี่ยวกับ Version ครับ ที่ผมเขียนไปให้นั้นเป็นตัวอย่างว่าต้องการวางไว้ที่ชีทที่ชื่อว่า Sheet1 แต่หากชีทที่ใช้จริงชื่อว่าอะไรก็เปลี่ยนเป็นชื่อนั้น
cruzz wrote: แนบไฟล์มาด้วยจะดีมากเลยครับ
เห็นด้วยครับ ควรแนบไฟล์ตัวอย่างมาด้วยจะสะดวกในการตอบแบบอ้างอิงชีท เซลล์ที่ใช้จริง