วันเสาร์ที่ 23 สิงหาคม พ.ศ. 2557

Excel tips การสร้าง Popup Menu ในบริเวณเซลล์ที่กำหนด

การสร้าง Popup Menu ในบริเวณเซลล์ที่กำหนด ตัวอย่างนี้เราจะใช้ vba เขียนโปรแกรมสร้าง Popup Menu ขึ้นมา เมื่อผู้ใช้มีการคลิกขวา (Right c... thumbnail 1 summary
การสร้าง Popup Menu ในบริเวณเซลล์ที่กำหนด


ตัวอย่างนี้เราจะใช้ vba เขียนโปรแกรมสร้าง Popup Menu ขึ้นมา เมื่อผู้ใช้มีการคลิกขวา (Right click) ในบริเวณเซลล์ที่กำหนด หากมีการคลิกขวาที่บริเวณเซลล์อื่นจะไม่ขึ้นเมนูย่อย (Popup Menu) ขึ้นมา และเมนูที่เราสร้างขึ้นนี้ก็จะตอบสนองต่อการคลิกของเราด้วย


ขั้นตอนการทำโปรแกรมนี้


1. เปิด Excel ขึ้นมา
(Open Excel)


2. กำหนดพื้นที่เซลล์ที่เราต้องการให้มีเมนูแบบป๊อบอัพเกิดขึ้นเมื่อเราคลิกขวา
(Set areas that you want to popup menu appear)


3. ในตัวอย่างนี้เรากำหนดให้เซลล์ B1:B10 เป็นเซลล์ที่เมื่อผู้ใช้คลิกขวา จะมี popup menu ปรากฏขึ้นมา โดยให้เราระบายสีฟ้าเซลล์ B1:B10 เพื่อให้เห็นภาพชัดๆว่าเราจะคลิกบริเวณเซลล์นี้

(fill background color on cells b1:b10)




4. กด alt+f11 แล้วใส่โค้ดต่อไปนี้ลงไป

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _

Cancel As Boolean)

For Each icbc In Application.CommandBars("cell").Controls

If icbc.Tag = "brccm" Then icbc.Delete

Next icbc

If Not Application.Intersect(Target, Range("b1:b10")) _

Is Nothing Then

With Application.CommandBars("cell").Controls _

.Add(Type:=msoControlButton, before:=6, _

temporary:=True)

.Caption = "Show Warnning Message"

.OnAction = "MyMacro"

.Tag = "brccm"



End With

End If

End Sub

จากโค้ดเป็นการสร้างเมนูที่ชื่อว่า “Show Warnning Message” ขึ้นมา

และเมื่อเราคลิกที่เมนูตัวนี้ มันจะไปเรียกมาโคร MyMacro ให้ทำงาน

5. เพิ่ม module ขึ้นมา 1 อัน แล้วใส่โค้ดต่อไปนี้เข้าไป

Sub MyMacro()

MsgBox "Show Warnning Message"

End Sub

จากโค้ด มาโครที่ชื่อ MyMacro ต้องประกาศใน module เท่านั้น โดยรายละเอียดของ MyMacro มีเพียงแค่บรรทัดเดียวนั่นคือให้แสดงข้อความแจ้งเตือน “Show Warnning Message” ขึ้น เมื่อผู้ใช้คลิก โดยให้เราดูตัวอย่างภาพผลลัพธ์ด้านล่างนี้ก็จะเข้าใจครับ


จากภาพเราจะสังเกตว่า เราต้องคลิกขวาบริเวณเซลล์ B1:B10 เท่านั้น จึงจะมีเมนูย่อยที่ชื่อว่า Show Warnning Message ปรากฏขึ้นมา หากเราคลิกขวาบริเวณเซลล์อื่นๆเมนูนี้จะไม่ปรากฏครับ