ปกติแล้ว Excel มี Option Button ให้เลือกใช้อยู่เรียบร้อยแล้วไม่จำเป็นต้องสร้างขึ้นมาใหม่แต่อย่างใด แต่หากต้องการจะสร้างขึ้นมาเองเพื่อสามารถกำหนดคุณสมบัติต่าง ๆ ยกตัวอย่างเช่นการใส่สี ตีเส้น แรเงา หรือทำเป็นรูปแบบ 3 มิติ เพื่อความสวยงามก็สามารถทำได้ครับ
ตัวอย่างที่จะนำเสนอต่อไปนี้เป็นการวาด Object วงรี (Oval) แล้วกำหนดความกว้างและความสูงให้เท่ากันเพื่อเป็นวงกลม (ซึ่งจะขอเรียกชื่อเป็นวงรีเช่นเดิม) โดยมีชื่อ Oval 7, Oval 9, Oval 8, Oval 10 และ Oval 14 ตามลำดับ โดยมีชื่อในช่วงเซลล์ A4:A8 กำกับวงรีแต่ละวงดังนี้
เราสามารถใช้ VBA Code ตามด้านล่างมาช่วยในการทำงานดังกล่าวได้ครับ โดยต้อง Assign Macro ให้กับวงรีแต่ละวงดังนี้
ตัวอย่างที่จะนำเสนอต่อไปนี้เป็นการวาด Object วงรี (Oval) แล้วกำหนดความกว้างและความสูงให้เท่ากันเพื่อเป็นวงกลม (ซึ่งจะขอเรียกชื่อเป็นวงรีเช่นเดิม) โดยมีชื่อ Oval 7, Oval 9, Oval 8, Oval 10 และ Oval 14 ตามลำดับ โดยมีชื่อในช่วงเซลล์ A4:A8 กำกับวงรีแต่ละวงดังนี้
- Oval 7: CO (เซลล์ A4)
- Oval 9: A (เซลล์ A5)
- Oval 8: FTA (เซลล์ A6)
- Oval 10: D (เซลล์ A7)
- Oval 14: E (เซลล์ A8)
- ให้วงรีนั้นกลายเป็นสีแดง
- และวงรีอื่น ๆ ไม่มีสี
- ให้เซลล์ C10 แสดงค่าในเซลล์ A4:A8 ที่ตรงกับวงรีนั้น ๆ
เราสามารถใช้ VBA Code ตามด้านล่างมาช่วยในการทำงานดังกล่าวได้ครับ โดยต้อง Assign Macro ให้กับวงรีแต่ละวงดังนี้
- Oval 7: ObjCo
- Oval 9: ObjA
- Oval 8: ObjFTA
- Oval 10: ObjD
- Oval 14: OjbE
Option Explicit Dim objg As Object Dim obj As Object Sub SelectObj(One As Object, Grp As Object) With One.Fill .ForeColor.RGB = RGB(255, 0, 0) End With Grp.Fill.ForeColor.RGB = RGB(255, 255, 255) If One.Fill.Visible Then Select Case One.Name Case "Oval 14" Range("C10") = "E" Case "Oval 7" Range("C10") = "CO" Case "Oval 9" Range("C10") = "A" Case "Oval 8" Range("C10") = "FTA" Case Else Range("C10") = "D" End Select Else Range("C10") = "" End If End Sub Sub ObjCo() Set obj = ActiveSheet.Shapes("Oval 7") Set objg = ActiveSheet.Shapes.Range( _ Array("Oval 14", "Oval 9", "Oval 8", "Oval 10")) SelectObj obj, objg End Sub Sub ObjA() Set obj = ActiveSheet.Shapes("Oval 9") Set objg = ActiveSheet.Shapes.Range( _ Array("Oval 7", "Oval 14", "Oval 8", "Oval 10")) SelectObj obj, objg End Sub Sub ObjFTA() Set obj = ActiveSheet.Shapes("Oval 8") Set objg = ActiveSheet.Shapes.Range( _ Array("Oval 7", "Oval 14", "Oval 9", "Oval 10")) SelectObj obj, objg End Sub Sub ObjD() Set obj = ActiveSheet.Shapes("Oval 10") Set objg = ActiveSheet.Shapes.Range( _ Array("Oval 7", "Oval 14", "Oval 9", "Oval 8")) SelectObj obj, objg End Sub Sub ObjE() Set obj = ActiveSheet.Shapes("Oval 14") Set objg = ActiveSheet.Shapes.Range( _ Array("Oval 7", "Oval 9", "Oval 10", "Oval 8")) SelectObj obj, objg End Sub
0 ความคิดเห็น:
แสดงความคิดเห็น