MACRO
EXCEL OBJECT
VBA BASIC
VBA FORM
BÀI TẬP
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Sự kiện trong VBA: Cách xử lý và xem danh sách sự kiện

Trong bài này chúng ta sẽ tìm hiểu cách xử lý sự kiện trong VBA. Qua bài này bạn sẽ hiểu được khái niệm sự kiện (event) là gì? Cách hoạt động ra sao? Cách xem danh sách event của một đối tượng, cũng như cách tạo các event đó.

Lập trình hướng sự kiện là một khái niệm quan trọng trong lập trình ứng dụng, nhờ nó mà ta biết được hành động của người dùng tác động lên một đối tượng. Ví dụ khi người dùng click một lần thì ta bắt được sự kiện click, khi họ nhấp chuột hai lần thì ta bắt được sự kiện double click.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Nếu bạn chưa từng học lập trình thì nghe có vẻ mới lạ. Tuy nhiên, đừng lo lắng quá vì trong bài này mình sẽ giải thích thật chi tiết về xử lý sự kiện event trong VBA.

1. Event (sự kiện) là gì?

Trong VBA, sự kiện là một hành động được tác động lên một đối tượng cụ thể, để từ đó ứng dụng VBA có thể biết được hành động của người dùng mà xử lý theo đúng yêu cầu của họ. Sự kiện đóng vai trò rất quan trọng, nó giúp máy tính và con người có thể trao đổi thông tin với nhau thông qua những hành động.

Ví dụ khi bạn tắt một workbook thì sự kiện Before Close được kích hoạt. Khi bạn click vào một command button thì sự kiện click được kích hoạt. Khi bạn chọn một giá trị trong thẻ select thì sự kiện change được kích hoạt.

Trong VBA ta dễ dàng xem được danh sách các sự kiện trong Visual Basic Editor, và cách xem như thế nào thì chúng ta sẽ tìm hiểu ở phần 2 nhé.

2. Xem danh sách sự kiện của một đối tượng VBA

Mỗi đối tượng sẽ có một số sự kiện khác nhau. Ví dụ với đối tượng command button không có sự kiện change, nhưng đối tượng combobox thì có. Mình sẽ có một bài khác nói chi tiết hơn về sự kiện của từng đối tượng.

Bước 1: Xác định tên của đối tượng

Trước tiên bạn hãy tạo cho mình một số đối tượng ActiveX Control như sau.

  • Một Command Button
  • Một ComboBox
  • Một ListBox

them doi tuong activex control JPG

Để xem thông tin chi tiết của từng đối tượng thì bạn hãy click chuột phải và chọn Properties. Như trong hình dưới đây là mình đang xem cho đối tượng Command Button.

xem chi tiet doi tuong JPG

Một hộp thoại xuất hiện, bạn hãy chú ý đến tên của đối tượng nằm trong vùng mình khoanh tròn nhé.

ten cua doi tuong JPG

Tên này bạn có thể thay đổi tùy ý. Tuy nhiên, lời khuyên là bạn nên thay đổi ngay lúc tạo ra nó, chứ để sau này khi bạn đã viết quá nhiều sự kiện trên đó rồi thì rất khó chỉnh sửa.

Chốt hạ, dưới đây là tên của ba đối tượng:

  • CommandButton1
  • ComboBox1
  • ListBox1

Bước 2: Xem danh sách sự kiện ở Visual Basic Editor

Bây giờ bạn hãy mở Visual Basic Editor lên nhé.

1. Vì 3 đối tượng trên mình tạo trong Sheet1 nên bạn hãy mở module Sheet1 lên bằng cách nhấn double 2 lần nhé.

sheet 1 JPG

2. Một hộp thoại nhập code cho Sheet1 hiện ra, tại đây bạn cần chú ý đến hai vị trí.

2 vi tri can chu y JPG

  • Vị trí số 1 là nơi bạn chọn đối tượng đang có trong Sheet1.
  • Vị trí số 2 là bạn chọn sự kiện cần định nghĩa cho đối tượng mà bạn đã chọn ở số 1.

danh sach doi tuong JPG
Danh sách đối tượng

danh sach su kien JPG
Danh sách sự kiện

3. Hình ảnh dưới đây mình chọn đối tượng ComboBox1 và sự kiện Change, lúc này VBA đã tạo cho bạn một Private Sub tên là ComboBox1_Change, đây chính là hàm sẽ chạy khi sự kiện change xảy ra trên ComboBox1.

su kien change JPG

3. Quy tắc đặt tên Sub cho sự kiện trong VBA

Nếu bạn để ý kỹ thì sẽ thấy có một quy tắc đặt tên Sub cho các sự kiện, đó là:

Tên sẽ được ráp theo côgn thức như sau:

{Object_name}_{Event}

Trong đó:

  • Object_name là tên đối tượng
  • Event là tên của sự kiện

Như kết quả ở phần 2 ta có:

  • Tên của đối tượng là ComboBox1
  • Tên của sự kiện là Change

=> Vậy tên của Sub sẽ là: ComboBox1_Change.

Đây chính là câu trả lời cho vấn đề không nên đổi tên của đối tượng khi bạn đã viết quá nhiều sự kiện trên đó. Nếu bạn đổi tên đối tượng thì đồng nghĩa phải đổi lại tên tất cả các Sub Event đã tạo.

4. Ví dụ về xử lý sự kiện trong VBA

Mình sẽ lấy một ví dụ rất đơn giản như sau.

Hãy viết một đoạn code VBA bắt sự kiện khi tạo một sheet mới thì hiển thị câu chào "Bạn đã tạo Sheet thành công!".

1. Theo phân cấp đối tượng mà bạn đã học trong bài Workbook và Worksheet thì tất cả các sheet đều là con của workbook, vì vậy để bắt sự kiện tạo sheet thì ta phải tìm nó ở đối tượng Workbook.

Điều này có nghĩa là bạn sẽ phải viết nó ở Module ThisWorkBook. Hãy nhấn double chuột để mở nó lên nhé.

this workbook JPG

2. Tiếp theo bạn hãy chọn đối tượng Workbook va sự kiện New Sheet. Lúc này một Sub tự động tạo ra.

event new sheet JPG

Hãy nhập thông báo lời chào sau vào trong Sub đó.

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    MsgBox "Ban da tao sheet " & Sh.Name & " thanh cong"
End Sub

Lưu lại, sau đó ra ngoài giao diện Excel và thử tạo một sheet mới thì bạn nhận được thông báo như sau.

tao sheet thanh cong JPG

Như vậy là mình đã hướng dẫn xong cách xử lý sự kiện trong VBA. Qua bài này bạn đã biết cách xem danh sách sự kiện của một đối tượng, hiểu được quy tắt đặt tên sự kiện, cũng như cách tạo một chương trình bắt sự kiện đơn giản. Chúc bạn thành công!

Cùng chuyên mục:

Cách chèn link ảnh vào Excel trên máy tính

Cách chèn link ảnh vào Excel trên máy tính

Ngoài ra, bài viết còn hướng dẫn cách chèn link ảnh trực tuyến hàng loạt…

Cách tách và gộp ô trong Excel

Cách tách và gộp ô trong Excel

Trong bảng tính Microsoft Excel, có thể sẽ có lúc các bạn cần tách ô…

Hàm MONTH() trong Excel

Hàm MONTH() trong Excel

Cách dùng hàm MONTH() trong Excel

Hàm YEAR () trong Excel

Hàm YEAR () trong Excel

Cách dùng hàm YEAR () trong Excel

Hàm HLOOKUP() trong Excel

Hàm HLOOKUP() trong Excel

Cách dùng hàm HLOOKUP() trong Excel

Hàm VLOOKUP() trong Excel

Hàm VLOOKUP() trong Excel

Cách dùng hàm VLOOKUP() trong Excel

Hàm LOOKUP() trong Excel

Hàm LOOKUP() trong Excel

Cách dùng hàm LOOKUP() trong Excel

Hàm ABS() trong Excel

Hàm ABS() trong Excel

Cách dùng hàm ABS() trong Excel

Hàm SUM() trong Excel

Hàm SUM() trong Excel

Cách dùng hàm SUM() trong Excel

Hàm SQRT() trong Excel

Hàm SQRT() trong Excel

Cách dùng hàm SQRT() trong Excel

Hàm MOD() trong Excel

Hàm MOD() trong Excel

Cách dùng hàm MOD() trong Excel

Hàm SUMIF() trong Excel

Hàm SUMIF() trong Excel

Cách dùng hàm SUMIF() trong Excel

Hàm SUBTOTAL() trong Excel

Hàm SUBTOTAL() trong Excel

Cách dùng hàm SUBTOTAL() trong Excel

Hàm ROUND() trong Excel

Hàm ROUND() trong Excel

Cách dùng hàm ROUND() trong Excel

Hàm SUMPRODUCT() trong Excel

Hàm SUMPRODUCT() trong Excel

Cách dùng hàm SUMPRODUCT() trong Excel

Hàm COUNT() trong Excel

Hàm COUNT() trong Excel

Cách dùng hàm COUNT() trong Excel

Hàm COUNTA() trong Excel

Hàm COUNTA() trong Excel

Cách dùng hàm COUNTA() trong Excel

Hàm COUNTBLANK() trong Excel

Hàm COUNTBLANK() trong Excel

Cách dùng hàm COUNTBLANK() trong Excel

Hàm MAX() trong Excel

Hàm MAX() trong Excel

Cách dùng hàm MAX() trong Excel

Hàm MIN() trong Excel

Hàm MIN() trong Excel

Cách dùng hàm MIN() trong Excel

Top