Biến có thể dùng toàn file gọi là biến toàn cục. Biến toàn cục có đời sống suốt file. Lúc mở file (project) thì nó được dựng lên và lúc đóng file (project) thì nó chết theo.
Tất cả các biến khai báo bên ngoài Sub/Function đều là biến toàn cục:
a) Nếu nó khai báo với từ khoá Private thì nó chỉ thấy được trong phạm vi của cái Module mà nó khai báo. Tức là nó chỉ truy cập được trong các Sub/Function cùng Module với nó.
b) Nếu nó khai báo với từ khoá Public thì Module nào cũng thấy và truy cập được nó.
Lưu ý là phạm vi (visibility) và đời sống (life span) là hai việc riêng biệt nhau. Biến toàn cục dẫu khai báo Private vẫn có đời sống cả project, Project còn tồn tại là chúng còn tồn tại.
Để sử dụng cho trường hợp của bạn, nên khai báo nó dạng Public trong một mô đun tên Credentials
[Module Credentials]
Public uName As String
Public pWord As String
[/hết mô đun]
Khi bắt đầu xây chuỗi kết nối, xét nếu Credentials.uName = "" thì lên hộp thoại bảo nhập tài khoản và password.
Ghi chúng vào Credentials.uName và Credentials.pWord
Phương pháp này sẽ biệt lập chúng trong một mô đun riêng và không đụng chạm gì với các công việc khác
Nếu không muốn dùng module riêng thì cũng nên gói gọn chúng để tránh lẫn lộn
Type CredentialSet
Public uName As String
Public pWord As String
End Type
Public Credentials As CredentialSet
Dùng giống như trên
Biến tĩnh (từ chuyên môn là Static) là biến cũng có đời sống suốt file. Tuy nhiên, biến tĩnh là biến nội của Sub/Function mà nó được khai báo. Tuy lúc nào nó cũng ở đó nhưng các Sub/Function khác không thể truy cập.
Dùng biến tĩnh mà có thể truy cập toàn tập hơi khó, bạn phải truy cập qua cái Sub/Function chứa nó.
Ở trên, tôi chỉ nói về code modules. Class Modules có khả năng làm việc hơi khác hơn một chút.