Các Sự Kiện Khi Thao Tác Với Worksheet Trong VBA
Có thể bạn quan tâm
VBA hỗ trợ nhiều sự kiện cho Worksheet như có thể bắt được thao tác khi sửa/ xóa dữ liệu, khi Click chuột, chuyển Sheet, xóa Sheet… Và dựa vào các sự kiện này khi thực thi, bạn có thể lồng vào các đoạn lệnh VBA để tùy biến thêm các tác vụ cho riêng mình.
Vậy VBA hỗ trợ những sự kiện Worksheet nào và cách sử dụng ra sao, thì bạn hãy cùng mình tìm hiểu nhé.
Các sự kiện khi thao tác với WorkSheets trong VBA
💡 Trong VBA, bạn có thể xem và tạo nhanh các sự kiện bằng cách chọn Worksheet và chọn mở trong danh sách các sự kiện.
Một số lưu ý:
- Nếu muốn bắt sự kiện trên Sheet1 thì trong VBA bạn phải tạo sự kiện đó trong Sheet1.
- Các sự kiện giữa các Sheet sẽ không ảnh hưởng đến nhau.
1) Worksheet_SelectionChange
Cách sử dụng:
- Sự kiện thực thi khi thay đổi chọn Cells hoặc Range. Ví dụ khi đang ở Cells A1, bạn chuyển qua Cells A2 thì sự kiện sẽ được thực thi.
- Sự kiện hoạt động cả khi di chuyển bằng chuột hoặc bằng phím điều hướng.
Khai báo
Private Sub Worksheet_SelectionChange(ByVal Target As Range) End SubChú thích:
- Target: biến khai báo theo kiểu Range.
- Khi kéo chọn 1 Range, Target sẽ lấy vị trí Cell đầu tiên.
Ví dụ: Xác định vị trí của Cells thuộc hàng A khi Click chuột
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then MsgBox "Hang " & Target.Column & " Cot " & Target.Row End If End Sub2) Worksheet_Activate
Cách sử dụng:
- Sự kiện này sẽ thực thi khi bạn di chuyển giữa các Sheets của một Workbook. Ví dụ: khi đang ở Sheet1 bạn di chuyển qua Sheet2 thì sự kiện được khai báo ở Sheet2 sẽ thực thi.
Khai báo:
Private Sub Worksheet_Activate() End Sub3) Worksheet_Deactivate
Cách sử dụng:
- Khác với sự kiện ở Worksheet_Activate thì sự kiện được khai báo ở Sheet1 sẽ thực thi.
Khai báo:
Private Sub Worksheet_Deactivate() End Sub4) Worksheet_BeforeDoubleClick
Cách sử dụng:
- Nếu để ý, thì khi Click chuột vào 1 Cells thì sẽ phải Double Click vào Cells đó mới có thể chỉnh sửa. Vậy sự kiện này sẽ thực thi trước khi con trỏ chuột trong Cells.
- Sự kiện sẽ không thực thi khi 1 Click vào Cells và dùng bàn phím để nhập liệu.
Khai báo:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) End SubGhi chú:
- Target: biến khai báo theo kiểu Range.
- Cancel: biến kiểu Boolean sẽ có giá trị là TRUE/ FALSE. Giá trị là FALSE khi sự kiện thực thi.
Ví dụ: Ghi thời gian hiện tại khi Double Click vào Cells thuộc hàng A
Private Sub Worksheet_BeforedoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("A:A")) Is Nothing Then If Target.Value = "" Then Target.Value = Now() End If End If End Sub5) Worksheet_BeforeRightClick
Cách sử dụng:
- Sự kiện thực thi khi bạn Click chuột phải vào bảng tính.
- Sẽ thực thi trước khi Menu Context của Excel được hiển thị.
Khai báo
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) End SubGhi chú:
- Target: biến khai báo theo kiểu Range.
- Cancel: biến Boolean sẽ có giá trị là TRUE/ FALSE. Giá trị là FALSE khi sự kiện thực thi.
6) Worksheet_Calculate
Cách sử dụng:
- Sự kiện thực thi khi các phép toán trên Sheet được thực hiện hoặc làm mới. Ví dụ: khi bạn thực hiện 1 phép tính cộng thì sự kiện này sẽ thực thi.
- Chỉ thực thi khi có phép toán được thực hiện trên bảng tính.
Khai báo:
Private Sub Worksheet_Calculate() End Sub7) Worksheet_Change
Cách sử dụng:
- Khi kết thúc chỉnh sửa trong bảng tính thì sự kiện này sẽ được thực thi.
- Bao gồm cả thay đổi khi nhập văn bản và thay đổi từ kết quả của các hàm.
Khai báo:
Private Sub Worksheet_Change(ByVal Target As Range) End Sub8) Worksheet_BeforeDelete
Cách sử dụng:
- Khi xóa một Sheet bạn sẽ nhận được 1 thông báo yêu cầu xác nhận. Nếu tiếp tục xóa thì sự kiện này sẽ thực thi và sau đó Sheet sẽ bị xóa hoàn toàn.
Khai báo:
Private Sub Worksheet_BeforeDelete() End Sub9) Worksheet_FollowHyperlink
Cách sử dụng:
- Khi Click văn bản có gắn HyperLink thì sự hiện này sẽ thực thi.
Khai báo:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) End SubGhi chú:
- Target: biến là một Range và được gán Hyperlink
✔ Cách khóa và mở khóa các sự kiện trên Sheet
Khi nhập dữ liệu vào bảng tính bằng cách nhập hay sử dụng VBA thì nếu được khai báo, các sự kiện như Worksheet_Change, Worksheet_SelectionChange… cũng sẽ thực thi. Vì vậy nếu bạn muốn tạm thời loại bỏ các sự kiện này thì hãy sử dụng thêm cặp lệnh sau:
Khóa các sự kiện:
Application.EnableEvents = FalseMở khóa các sự kiện:
Application.EnableEvents = TrueVí dụ: Khóa và sau đó mở khóa sự kiện của Worksheet.
Sub khoa_sukien() Application.EnableEvents = False Sheet1.Range("A1:A1").Value = 2 Application.EnableEvents = True End SubOK! Trên đây là tổng hợp các sự kiện mà VBA hỗ trợ cho Worksheet. Bạn hãy sử dụng các sự kiện này để bổ sung thêm nhiều tính năng tùy chỉnh cho bảng tính Excel của mình nhé.
Hy vọng bài tổng hợp này hữu ích với các bạn.
Chúc các bạn thành công!
Từ khóa » Sự Kiện Worksheet_change
-
Worksheet.Change Event (Excel) | Microsoft Docs
-
Khai Thác Sự Kiện Worksheet_Change VBA Excel để Cập Nhật Dữ ...
-
Xin Giúp đỡ Về Sự Kiện Worksheet_Change | Page 2
-
Event Trong VBA - Viblo
-
Tự động Cập Nhật Báo Cáo Khi Thay đổi Thời Gian Bằng VBA
-
Worksheet Change Event - Excel Dashboards VBA
-
VBA Worksheet Change Event - Run A Macro When A Cell Changes
-
Sự Kiện Excel Worksheet_Change Không Hoạt động - HelpEx
-
Nhiều Sự Kiện Worksheet_Change Trong Mã Vba - HelpEx
-
Worksheet Change Event: Run Excel Macros When A Cell Changes ...
-
Events (sự Kiện) Trong VBA Excel - Tài Liệu Text - 123doc
-
Có Thể Giải Thick Cho E Thêm Về Bẫy Lỗi Với Sự Kiện Worksheet_change
-
Worksheet Change Event, Excel VBA - ExcelAnytime