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 ใหม่ข้อความจะแสดงต่อผู้ใช้ดังที่แสดงในภาพหน้าจอต่อไปนี้