การสร้าง 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)
จากภาพเราจะสังเกตว่า เราต้องคลิกขวาบริเวณเซลล์ B1:B10 เท่านั้น จึงจะมีเมนูย่อยที่ชื่อว่า Show Warnning Message ปรากฏขึ้นมา หากเราคลิกขวาบริเวณเซลล์อื่นๆเมนูนี้จะไม่ปรากฏครับ
ตัวอย่างนี้เราจะใช้ 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” ขึ้น เมื่อผู้ใช้คลิก โดยให้เราดูตัวอย่างภาพผลลัพธ์ด้านล่างนี้ก็จะเข้าใจครับ
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 ปรากฏขึ้นมา หากเราคลิกขวาบริเวณเซลล์อื่นๆเมนูนี้จะไม่ปรากฏครับ