VBA - Sự kiện
VBA, một chương trình hướng sự kiện có thể được kích hoạt khi bạn thay đổi một ô hoặc phạm vi giá trị ô theo cách thủ công. Sự kiện thay đổi có thể giúp mọi thứ dễ dàng hơn, nhưng bạn có thể rất nhanh chóng kết thúc một trang đầy định dạng. Có hai loại sự kiện.
- Sự kiện bảng tính
- Sự kiện sổ làm việc
Sự kiện bảng tính
Sự kiện trang tính được kích hoạt khi có sự thay đổi trong trang tính. Nó được tạo bằng cách nhấp chuột phải vào tab trang tính và chọn 'mã xem', sau đó dán mã.
Người dùng có thể chọn từng trang tính đó và chọn "Trang tính" từ menu thả xuống để nhận danh sách tất cả các sự kiện Trang tính được hỗ trợ.
Sau đây là các sự kiện trang tính được hỗ trợ mà người dùng có thể thêm vào.
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)
Thí dụ
Giả sử, chúng tôi chỉ cần hiển thị một thông báo trước khi nhấp đúp.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Before Double Click"
End Sub
Đầu ra
Khi nhấp đúp vào bất kỳ ô nào, hộp thông báo sẽ được hiển thị cho người dùng như thể hiện trong ảnh chụp màn hình sau.
Sự kiện sổ làm việc
Sự kiện sổ làm việc được kích hoạt khi có thay đổi trong toàn bộ sổ làm việc. Chúng tôi có thể thêm mã cho các sự kiện sổ làm việc bằng cách chọn 'ThisWorkbook' và chọn 'workbook' từ menu thả xuống như được hiển thị trong ảnh chụp màn hình sau. Ngay lập tức thủ tục phụ Workbook_open được hiển thị cho người dùng như trong ảnh chụp màn hình sau.
Sau đây là các sự kiện Workbook được hỗ trợ mà người dùng có thể thêm vào.
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)
Thí dụ
Giả sử, chúng ta chỉ cần hiển thị thông báo cho người dùng rằng một trang tính mới được tạo thành công, bất cứ khi nào một trang tính mới được tạo.
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "New Sheet Created Successfully"
End Sub
Đầu ra
Khi tạo một trang tính excel mới, một thông báo sẽ được hiển thị cho người dùng như trong ảnh chụp màn hình sau.