Excel Tips การทำเมนูย่อยแบบสวยๆ ให้เซลล์บน Excel
(Beautiful Popup menu on each cell)
Excel Tips ในวันนี้เป็นนำเสนอการทำเมนูโดยการใช้ Shapes ของ Excel มาประยุกต์ใช้..
หากว่าเราต้องการให้คลิกที่เซลล์ใดๆแล้วมีเมนูย่อยปรากฏขึ้นมาเราสามารถทำได้ง่ายๆโดยการออกแบบขึ้นมาเองผ่าน shapes โดยเราจะสมมติหลักการทำงานที่ว่า เมื่อคลิกที่เซลล์ที่ต้องการ ก็จะให้มีเมนูย่อยปรากฏขึ้นมา
สมมติว่าความต้องการของเราคือ คลิกที่เซลล์ A1 แล้วจะมีเมนูย่อยขึ้นมา โดยที่เซลล์ A1 เป็นเมนูหลัก เช่น
ที่เซลล์ A1 เป็นเมนูชื่อว่า Font Size เมื่อคลิกที่ Font Size ก็จะมีเมนูขนาดของ font ปรากฏขึ้นมาอย่างนี้เป็นต้น
เราลองมาทำตัวอย่างนี้กันดีกว่า จะได้เห็นภาพชัดเจนขึ้น
1. เปิด Microsoft Excel ขึ้นมา
(Open Microsoft Excel)
2. ที่ Sheet 1 ตรงเซลล์ A1 ให้เราพิมพ์คำว่า “Font Size”
(Type “Font Size” on A1 cell)
(Type “Font Size” on A1 cell) 3. ใส่สีพื้นให้ เซลล์ A1 และสีตัวอักษรดังภาพ
(Fill background color and font color on cell A1)
4.เพิ่ม Shapes แบบสี่เหลี่ยมมา 6 อัน แล้วกำหนดสีพื้น สีตัวอักษร พร้อมทั้งพิมพ์ข้อความลงไปดังภาพ โดย shapes อันแรกให้ทำขนาดใหญ่กว่าทุกอัน และ อีก 5 อัน ก็กำหนดขนาดประมาณดังภาพด้านล่าง
(Add 6 shapes, fill background color, and fill font color, type text 11, 12, 14, 16, 18)
5. นำ Shapes แต่ละอันมาวางทับกันดังรูป
แล้วคลิกขวาเลือก shapes ทุกอันแล้วคลิกขวาเลือกคำสั่ง Group
6. คลิกขวาที่ Shapes ที่ถูก Group แล้วเลือกคำสั่ง Format Object… จากนั้นคลิกทำเครื่องหมายถูกหน้าคำว่า Locked เพื่อป้องกันการย้าย Control เหล่านี้ (Shapes ต่างๆจะยังไม่ถูก Locked จนกว่าเราจะ Protect Sheet ) แล้วคลิก Close
7. จากนั้นกด ALT+F11 เพื่อไปยังหน้าจอเขียนโค้ด
8. ใส่โค้ดต่อไปนี้ลงไป
Private Sub Worksheet_Activate()
Sheet1.Shapes("Group 12").Visible = msoFalse
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Range("a1").Address Then
Sheet1.Shapes("Group 12").Visible = msoTrue
Else
Sheet1.Shapes("Group 12").Visible = msoFalse
End If End Sub
เราจะเห็นว่า เมื่อเรา Group Shapes เข้าด้วยกันมันจะได้ชื่อ Shapes ใหม่ขึ้นมาซึ่งเราจะเป็นชื่อที่เราจะเอาไปใช้ในการอ้างถึงในการเขียน Vba code ต่อไป
9. เมื่อใส่ Code เสร็จแล้วให้เรากด alt+f11 เพื่อกลับไปยัง excel
แล้วทดสอบการทำงานของโปรแกรมโดยให้ลองคลิกที่เซลล์ A1 ตรงคำว่า font size นั่นแหละ เราจะเห็นว่า Group ของ shapes จะปรากฏตัวขึ้นมา
8. ใส่โค้ดต่อไปนี้ลงไป
Private Sub Worksheet_Activate()
Sheet1.Shapes("Group 12").Visible = msoFalse
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Range("a1").Address Then
Sheet1.Shapes("Group 12").Visible = msoTrue
Else
Sheet1.Shapes("Group 12").Visible = msoFalse
End If End Sub
เราจะเห็นว่า เมื่อเรา Group Shapes เข้าด้วยกันมันจะได้ชื่อ Shapes ใหม่ขึ้นมาซึ่งเราจะเป็นชื่อที่เราจะเอาไปใช้ในการอ้างถึงในการเขียน Vba code ต่อไป
9. เมื่อใส่ Code เสร็จแล้วให้เรากด alt+f11 เพื่อกลับไปยัง excel
แล้วทดสอบการทำงานของโปรแกรมโดยให้ลองคลิกที่เซลล์ A1 ตรงคำว่า font size นั่นแหละ เราจะเห็นว่า Group ของ shapes จะปรากฏตัวขึ้นมา
10. และเมื่อคลิ้กที่เซลล์อื่นๆ Group เหล่านี้ก็จะหายไป ซึ่งเราจะเห็นว่าการทำงานคล้ายกับการแสดงไม่แสดงเมนูย่อยเวลาคลิกเมาส์เลย
เราได้เขียน คำสั่งในการ ซ่อน Group ของ Shapes เหล่านี้ไว้ในส่วนของ worksheet_activate ไว้ด้วย เพื่อให้ซ่อน Group ด้วยเวลาเราคลิกไปที่ Sheet อื่นๆ
ตัวอย่างนี้แม้ว่าจะเป็นตัวอย่างที่ง่ายดายแต่ว่าก็มีประโยชน์ไม่ใช่น้อย สามารถนำไปประยุกต์ในงานต่างๆได้ดีทีเดียว
เราได้เขียน คำสั่งในการ ซ่อน Group ของ Shapes เหล่านี้ไว้ในส่วนของ worksheet_activate ไว้ด้วย เพื่อให้ซ่อน Group ด้วยเวลาเราคลิกไปที่ Sheet อื่นๆ
ตัวอย่างนี้แม้ว่าจะเป็นตัวอย่างที่ง่ายดายแต่ว่าก็มีประโยชน์ไม่ใช่น้อย สามารถนำไปประยุกต์ในงานต่างๆได้ดีทีเดียว