Đã bao giờ bạn tự hỏi làm thế nào để khi nháy đúp (double click) chuột thì sẽ hiện lên 1 bảng nhập dữ liệu (userform)? Hay làm thế nào mà chỉ thay đổi điều kiện lập báo cáo là toàn bộ kết quả của báo cáo sẽ thay đổi dù báo cáo đó không chứa công thức? Đó chính xác là những gì mà chúng ta đang nói tới: Các sự kiện của Worksheet trong VBA Excel. Vậy các sự kiện này có ý nghĩa gì, dùng như thế nào, có bao nhiêu loại sự kiện trong VBA? Hãy cùng Học Excel Online tìm hiểu nhé:
Xem nhanh
Trong VBA có 2 loại sự kiện chính:
Ngoài ra còn 1 loại sự kiện nữa là sự kiện trong UserForm, nội dung này sẽ được trình bày trong bài viết khác.
Bởi có rất nhiều sự kiện nên chúng ta sẽ tìm hiểu thông qua một vài sự kiện hay sử dụng và từ đó các bạn sẽ áp dụng cho các sự kiện khác:
Các sự kiện độc lập:
Các sự kiện gắn với Before
Là trước khi hoàn thành 1 việc gì đó, trước khi thực hiện một sự kiện gì đó thì sẽ thực hiện câu lệnh macro trước, rồi sau đó mới đến lượt sự kiện đó được thực thi. Macro sẽ phải hoàn thành trước rồi mới thực hiện sự kiện đó.
Các sự kiện gắn với After
Là sau khi hoàn thành 1 sự kiện thì lập tức thực hiện tiếp một số câu lệnh. Macro sẽ thực hiện sau khi sự kiện đó hoàn thành. Mặc dù kết quả đều gần giống với sự kiện Before nhưng thứ tự thực hiện là khác nhau, nên có thể dẫn tới việc kết quả đưa ra có chính xác hay không.
Các sự kiện liên quan tới Sheet trong Workbook
Là khi một trong số các Sheet trong Workbook được tác động: Bị xóa, bị đổi tên, bị di chuyển, click chuột trái, click chuột phải… thì sẽ có thể chạy ra 1 câu lệnh macro
Các sự kiện liên quan tới Window – cửa sổ làm việc của Excel
Khi cửa sổ làm việc của excel diễn ra một sự kiện nào đó, như thay đổi kích thước (resize), được kích hoạt (active), không được kích hoạt (deactive)… thì chúng ta có thể gắn vào đó một số câu lệnh. Ví dụ như khi cửa sổ làm việc của Excel bị thay đổi kích thước thì chúng ta cũng đồng thời thay đổi kích thước của 1 Userform chẳng hạn.
Tương tự với các sự kiện của Workbook, trong Worksheet cũng có các sự kiện độc lập, sự kiện gắn với Before. Ngoài ra còn có các sự kiện đặc trưng cho đối tượng Pivot table, Table.
Mỗi khi chúng ta tác động tới một đối tượng cụ thể, một vùng cụ thể trong Sheet bằng một sự kiện: thay đổi dữ liệu, thay đổi vị trí chọn, click chuột phải, nháy đúp chuột… thì đều có thể gắn với 1 lệnh macro để thực hiện một điều gì đó.
Nếu tại Worksheet thì chúng ta cần phải chọn cụ thể là worksheet nào. Khi đó tại đúng Sheet đã được thiết lập sự kiện mới có thể khiến macro trong sự kiện đó hoạt động.
Rất đơn giản, chúng ta chỉ cần chọn nơi mà chúng ta muốn bắt sự kiện: tại workbook hay tại worksheet. Nếu tại Worksheet thì cần cụ thể là Worksheet nào.
Khi chọn nơi bắt sự kiện, phần bảng viết code sẽ có 2 mục: Đối tượng nào và sự kiện nào.
Khi chọn 1 sự kiện thì sẽ ra một câu lệnh đặ trong Private Sub:
Private Sub là 1 thủ tục chạy ngầm, không gọi trực tiếp như Sub thông thường.
Khi chọn sự kiện trong Worksheet thì ban đầu sẽ tự động mặc định là sự kiện SelectionChange (thay đổi đối tượng được chọn). Muốn thay đổi sang sự kiện khác thì chúng ta sẽ chọn lại sự kiện trong mục Sự kiện nào
Các câu lệnh macro cần thực hiện khi sự kiện diễn ra (khi bắt được sự kiện) phải được đặt trong cấu trúc của sự kiện đó (nằm trong Private Sub – End Sub)
Các bạn có thể tham khảo một số sự kiện sau:
Tự động xác định kết quả tìm mức giá bán tối ưu bằng cách sử dụng VBA
Hướng dẫn cách mở userform bằng thao tác double click VBA Excel
Để tìm hiểu thêm nhiều kiến thức về VBA, mời bạn tham dự khóa học VBA101 – Tự động hóa Excel với lập trình VBA. Đây là khóa học rất hữu ích dành cho bạn, giúp bạn hiểu một cách bài bản về VBA và cách sử dụng VBA, ứng dụng VBA vào công việc để tăng hiệu quả. Hãy cùng khám phá nào: