ปกติแล้ว Excel มี Option Button ให้เลือกใช้อยู่เรียบร้อยแล้วไม่จำเป็นต้องสร้างขึ้นมาใหม่แต่อย่างใด แต่หากต้องการจะสร้างขึ้นมาเองเพื่อสามารถกำหนดคุณสมบัติต่าง ๆ ยกตัวอย่างเช่นการใส่สี ตีเส้น แรเงา หรือทำเป็นรูปแบบ 3 มิติ เพื่อความสวยงามก็สามารถทำได้ครับ
ตัวอย่างที่จะนำเสนอต่อไปนี้เป็นการวาด 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 ที่ตรงกับวงรีนั้น ๆ
ตัวอย่างภาพการใช้งาน Option Button ที่สร้างขึ้นเองด้วย Oval Object
เราสามารถใช้ 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
ไม่มีความคิดเห็น:
แสดงความคิดเห็น