Module trong VBA

1. Giới thiệu

Trong quá trình làm việc với VBA, chúng ta sẽ thường xuyên gặp và làm việc với module trong VBA như trong hình bên dưới. Trong bài viết này, chúng ta sẽ tìm hiểu xem module là gì trong VBA.

Module in VBA

Trong VBA, module về cơ bản là 1 file text được tích hợp vào ứng dụng cha của nó (MS Word, Excel, Access …). Chúng ta sử dụng VBA IDE để thêm các module mới và viết code VBA trong các module này.

Các module sẽ được lưu cùng với tập tin của ứng dụng cha. Ví dụ, một module được tạo trong Excel sẽ được lưu trong workbook nơi mà chúng ta đã tạo module. Nếu module được tạo trong Access database thì nó sẽ được lưu trong file database tương ứng. Tương tự, một module được tạo trong MS Word sẽ được lưu trong tập tin văn bản mà chúng ta đã tạo module.

Thông thường, chúng ta sẽ có nhiều hơn một module bên trong 1 tập tin của ứng dụng.

2. Các loại module trong VBA

Trong Excel VBA, có 5 loại module chính:

  • Standard code module hay code module.
  • ThisWorkbook module.
  • Sheet module.
  • UserForm module.
  • Class module
5 types of module in VBA

2.1. Standard code module

Standard Code Modules, còn được gọi là code module, nằm trong thư mục Modules bên trong Workbook, là nơi chứa phần lớn các macro (sub procedure) và function của ứng dụng.

Chúng ta có thể tạo nhiều standard module trong một VBA project. Việc này cho phép chúng ta có thể dễ dàng chia các xử lý của mình ra nhiều module khác nhau để dễ tổ chức và bảo trì.

Các procedure trong một standard module có thể được gọi từ các standard module khác, miễn là các procedure không được khai báo với từ khóa private, hay module không được đánh dấu là private.

2.2. ThisWorkbook module

Mỗi workbook chứa 1 đối tượng ThisWorkbook tại cuối của thư mục Microsoft Excel Objects. Đây là 1 module đặc biệt được gắn với 1 workbook cụ thể.

Mục đích chính của ThisWorkbook module là để chứa các event procedure ứng với các sự kiện của workbook (vd: mở workbook, đóng workbook…).

Về cơ bản, ThisWorkbook module giống với Sheet module. Điểm khác biệt chính là event procedure trong ThisWorkbook module có thể chạy khi các hành động được thực hiện trên toàn bộ workbook. Các sự kiện của sheet module chỉ chạy khi các hành động được thực hiện trên 1 sheet cụ thể.

2.3. Sheet module

Sheet module là một module đặc biệt được gắn trực tiếp với một sheet cụ thể bên trong 1 workbook. Mỗi sheet trong workbook có 1 sheet object nằm trong thư mục Microsoft Excel Objects. Sheet object hiển thị code name và tab name của sheet (bên trong dấu ngoặc đơn). Tab name là tên sẽ hiển thị bên trong workbook mà người dùng có thể thay đổi.

Sheet module sẽ chứa các event procedure ứng với các sự kiện của sheet (vd: Activate sheet, select sheet…). Các sự kiện trong Sheet module sẽ được chạy khi người dùng thực hiện 1 hành động cụ thể trên sheet tương ứng.

2.3. User Form module

UserForm là các biểu mẫu hay các cửa sổ tương tác nơi chúng ta có thể thêm các control như list box, check box, button… Mỗi UserForm được lưu trong thư mục Form và có một module tương ứng với chúng, các module này được gọi là UserForm Module.

UserForm module sẽ chứa các sub procedure ứng với các sự kiện của các thành phần điều khiển (list box, check box, button…) có trên form.

2.4. Class module

Class module được lưu trong thư mục Class Modules và cho phép chúng ta viết các macro để tạo các đối tượng, thuộc tính (property), và phương thức (method). Class có thể được sử dụng khi chúng ta muốn tạo các đối tượng tùy chỉnh hay các tập hợp không có trong Object Library.

3. Kết

Module trong VBA là các tập tin chứa code xử lý cho các macro và function của chúng ta bên trong 1 ứng dụng VBA.

Có 5 loại module chính trong VBA, bao gồm:

  • Standard module
  • ThisWorkbook module
  • Sheet module
  • UserForm module
  • Class module

Module là 1 cách tốt để chúng ta quản lý code VBA trong ứng dụng của mình. Chúng ta nên tổ chức các đoạn code liên quan đến các tác vụ khác nhau vào những module khác nhau, để chúng ta có thể dễ dàng quản lý và bảo trì.

Chúng ta kết thúc bài tìm hiểu tại đây.

Chúc các bạn thành công!

SHARE:

Share on facebook
Facebook
Share on linkedin
LinkedIn
Share on email
Email

Recent Post

Follow us