Trong lập trình có cái gọi là phạm vi giới hạn (scope) của một nhân tố (entity). Mọi nhân tố đều có phạm vi của chúng. Theo lý thuyết Lập Trình Hướng Đối Tượng áp dụng vào VBA thì một Project được coi là vùng cấp 1 (tôi tạm gọi là vùng để dễ diễn tả phạm vi, chính thức ra, tiếng nghề gọi vùng hoạt động là namespace). Các nhân tố (định nghĩa, biến, hàm, thủ tục) mà bạn gọi là Modules nằm trong một vùng thuộc cấp 2. Mỗi vùng lại có thể chia ra nhiều modules nhỏ, mỗi module nhỏ này lại có vùng riêng của chúng. Ví dụ trong Modules, chúng được mặc định là Module1, Module2, ... Nhưng nếu cần thiết, bạn vẫn có thể đặt lại tên khác cho chúng. Luật pham vi: Nếu code (code gọi) của một vùng này muốn chỉ tới code (code được gọi) của một vùng khác thì phải thoả mãn 2 điều kiện: Ví dụ: Code của vùng/module A muốn gọi hàm Ham1 của vùng/module B thì ghi B.Ham1, muốn nhắc tới biến Bien1 của B thì ghi B.Bien1. Và cả 2 Ham1 và Bien1 đều phải public Như vậy, trong Module1 của Modules muốn gọi
Worksheet_SelectionChange của Sheet1 thì dùng như sau: Lưu ý: Các sự kiện của workbook, sheets, forms, ... được Excel mặc định cho gọi thẳng các hàm liên hệ. Sự kiện xảy ra trong vùng nào được coi như thuộc về vùng đó và xử lý trong vùng đó. Ví dụ selection change xảy ra ở Sheet2 thì được xử lý bằng Sheet2.Worksheet_SelectionChange. Nếu muốn nó xử lý
Sheet1.Worksheet_SelectionChange thì đặt lệnh |