VBA - เหตุการณ์
VBA การเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์สามารถทริกเกอร์ได้เมื่อคุณเปลี่ยนเซลล์หรือช่วงของค่าเซลล์ด้วยตนเอง กิจกรรมการเปลี่ยนแปลงอาจทำให้ง่ายขึ้น แต่คุณสามารถจบหน้าที่เต็มไปด้วยการจัดรูปแบบได้อย่างรวดเร็ว มีเหตุการณ์สองประเภท
- เหตุการณ์ในแผ่นงาน
- เหตุการณ์ในสมุดงาน
เหตุการณ์ในแผ่นงาน
เหตุการณ์ในแผ่นงานจะถูกทริกเกอร์เมื่อมีการเปลี่ยนแปลงในแผ่นงาน สร้างขึ้นโดยการคลิกขวาที่แท็บแผ่นงานและเลือก 'ดูรหัส' จากนั้นจึงวางรหัสในภายหลัง
ผู้ใช้สามารถเลือกแต่ละเวิร์กชีตเหล่านั้นและเลือก "เวิร์กชีต" จากเมนูแบบเลื่อนลงเพื่อรับรายการเหตุการณ์ในเวิร์กชีตที่รองรับทั้งหมด
ต่อไปนี้เป็นเหตุการณ์ในแผ่นงานที่รองรับซึ่งผู้ใช้สามารถเพิ่มได้
Private Sub Worksheet_Activate()
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_Calculate()
Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub Worksheet_Deactivate()
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ตัวอย่าง
สมมติว่าเราต้องแสดงข้อความก่อนดับเบิลคลิก
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Before Double Click"
End Sub
เอาต์พุต
เมื่อดับเบิลคลิกที่เซลล์ใด ๆ กล่องข้อความจะแสดงต่อผู้ใช้ดังที่แสดงในภาพหน้าจอต่อไปนี้
เหตุการณ์ในสมุดงาน
เหตุการณ์ในสมุดงานจะถูกทริกเกอร์เมื่อมีการเปลี่ยนแปลงในสมุดงานโดยรวม เราสามารถเพิ่มรหัสสำหรับเหตุการณ์ในสมุดงานได้โดยเลือก 'ThisWorkbook' และเลือก 'สมุดงาน' จากเมนูแบบเลื่อนลงดังที่แสดงในภาพหน้าจอต่อไปนี้ ขั้นตอนย่อยของ Workbook_open ทันทีจะแสดงต่อผู้ใช้ดังที่เห็นในภาพหน้าจอต่อไปนี้
ต่อไปนี้เป็นเหตุการณ์ในสมุดงานที่สนับสนุนซึ่งผู้ใช้สามารถเพิ่มได้
Private Sub Workbook_AddinUninstall()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Private Sub Workbook_Deactivate()
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Private Sub Workbook_Open()
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Private Sub Workbook_WindowResize(ByVal Wn As Window)
ตัวอย่าง
สมมติว่าเราต้องแสดงข้อความให้ผู้ใช้ทราบว่าสร้างแผ่นงานใหม่สำเร็จเมื่อใดก็ตามที่สร้างแผ่นงานใหม่
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "New Sheet Created Successfully"
End Sub
เอาต์พุต
เมื่อสร้างแผ่นงาน excel ใหม่ข้อความจะแสดงต่อผู้ใช้ดังที่แสดงในภาพหน้าจอต่อไปนี้