EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Code: Select all
Sub SmartArtTest()
Dim oSALayout As SmartArtLayout
Set oSALayout = Application.SmartArtLayouts(135) 'Get a reference to the "heirarchy" smartart form.
'Create a smartart shape
Set oShp = ActiveWorkbook.ActiveSheet.Shapes.AddSmartArt(oSALayout)
For i = 1 To 5 'clears all the default excel shapes
oShp.SmartArt.AllNodes(1).Delete
Next
For i = 1 To 5
oShp.SmartArt.AllNodes.Add
oShp.SmartArt.AllNodes(i).TextFrame2.TextRange.Text = Range("A" & i).Value
oShp.SmartArt.AllNodes(i).TextFrame2.TextRange.Text = Range("B" & i).Value
Next
End Sub
จากภาพตัวอย่างในกรอบสีแดงครับ Row 1 ก็จะเป็นกรอบที่ 1 และ Row 2 ก็จะเป็นกรอบที่ 2 ครับ สร้างไปเรื่อยๆ จนครบ Loop ที่ 22 ครับsnasui wrote: Sun Jul 14, 2024 8:55 am ขออภัยครับ เพิ่งเห็นโพสต์นี้
ช่วยอธิบายเพิ่มเติมว่าพิจารณาอย่างไรว่าเป็นกลุ่มเดียวกัน วาดภาพประกอบเพิ่มเติมมาด้วยจะช่วยให้เข้าใจได้ง่ายขึ้นครับ
Code: Select all
Sub SmartArtTest()
Dim rng As Range, r As Range
Dim oSALayout As SmartArtLayout
Set oSALayout = Application.SmartArtLayouts(135) 'Get a reference to the "heirarchy" smartart form.
'Create a smartart shape
With ActiveWorkbook.ActiveSheet
If .Shapes.Count > 0 Then .Shapes(1).Delete
Set oShp = .Shapes.AddSmartArt(oSALayout)
Set rall = .Range("a1", .Range("a" & .Rows.Count).End(xlUp))
End With
For i = 1 To oShp.SmartArt.AllNodes.Count - 1 'clears all the default excel shapes
oShp.SmartArt.AllNodes(1).Delete
Next
' For i = 1 To 5
i = 1
For Each r In rall
oShp.SmartArt.AllNodes.Add
oShp.SmartArt.AllNodes(i).TextFrame2.TextRange.Text = Range("A" & i).Value
oShp.SmartArt.AllNodes(i).TextFrame2.TextRange.Text = Range("B" & i).Value
i = i + 1
Next r
oShp.SmartArt.AllNodes(oShp.SmartArt.AllNodes.Count).Delete
End Sub
Code: Select all
'Other code
For Each r In rall
oShp.SmartArt.AllNodes.Add
oShp.SmartArt.AllNodes(i).TextFrame2.TextRange.Text = Range("B" & i).Value
oShp.SmartArt.AllNodes(i).TextFrame2.TextRange.Text = oShp.SmartArt.AllNodes(i).TextFrame2.TextRange.Text & _
vbCrLf & Range("A" & i).Value
i = i + 1
Next r
'Other code