ซ่อมคอมพิวเตอร์นอกสถานที่ รามตำแหง บางกะปิ 083-792-5426

วันพุธที่ 18 กรกฎาคม พ.ศ. 2555

Microsoft Excel Tips and Tricks: การควบคุม Option Button ที่สร้างขึ้นเองด้วย VBA

ปกติแล้ว Excel มี Option Button ให้เลือกใช้อยู่เรียบร้อยแล้วไม่จำเป็นต้องสร้างขึ้นมาใหม่แต่อย่างใด แต่หากต้องการจะสร้างขึ้นมาเองเพื่อสามารถกำหนดคุณสมบัติต่าง ๆ ยกตัวอย่างเช่นการใส่สี ตีเส้น แรเงา หรือทำเป็นรูปแบบ 3 มิติ เพื่อความสวยงามก็สามารถทำได้ครับ
ตัวอย่างที่จะนำเสนอต่อไปนี้เป็นการวาด Object วงรี (Oval) แล้วกำหนดความกว้างและความสูงให้เท่ากันเพื่อเป็นวงกลม (ซึ่งจะขอเรียกชื่อเป็นวงรีเช่นเดิม) โดยมีชื่อ Oval 7, Oval 9, Oval 8, Oval 10 และ Oval 14 ตามลำดับ โดยมีชื่อในช่วงเซลล์ A4:A8 กำกับวงรีแต่ละวงดังนี้
  1. Oval 7: CO (เซลล์ A4)
  2. Oval 9: A (เซลล์ A5)
  3. Oval 8: FTA (เซลล์ A6)
  4. Oval 10: D (เซลล์ A7)
  5. Oval 14: E (เซลล์ A8)
โดยมีเงื่อนไขว่าเมื่อเลือกวงรีใดแล้ว
  1. ให้วงรีนั้นกลายเป็นสีแดง
  2. และวงรีอื่น ๆ ไม่มีสี
  3. ให้เซลล์ C10 แสดงค่าในเซลล์ A4:A8 ที่ตรงกับวงรีนั้น ๆ
ตัวอย่างภาพการใช้งาน Option Button ที่สร้างขึ้นเองด้วย Oval Object
OptionButton
เราสามารถใช้ VBA Code ตามด้านล่างมาช่วยในการทำงานดังกล่าวได้ครับ โดยต้อง Assign Macro ให้กับวงรีแต่ละวงดังนี้
  1. Oval 7: ObjCo
  2. Oval 9: ObjA
  3. Oval 8: ObjFTA
  4. Oval 10: ObjD
  5. 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 ความคิดเห็น:

แสดงความคิดเห็น

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design Downloaded from Free Blogger Templates Download | free website templates downloads | Vector Graphics | Web Design Resources Download.