Đây là một câu hỏi về phạm vi .
Nếu bạn chỉ muốn các biến kéo dài trọn đời của hàm, hãy sử dụng Dim
(viết tắt của Dimension ) bên trong hàm hoặc phụ để khai báo các biến:
Function AddSomeNumbers() As Integer
Dim intA As Integer
Dim intB As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are no longer available since the function ended
Một biến toàn cục (như SLaks đã chỉ ra) được khai báo bên ngoài hàm bằng Public
từ khóa. Biến này sẽ có sẵn trong suốt vòng đời của ứng dụng đang chạy của bạn. Trong trường hợp của Excel, điều này có nghĩa là các biến sẽ có sẵn miễn là sổ làm việc Excel cụ thể đó được mở.
Public intA As Integer
Private intB As Integer
Function AddSomeNumbers() As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are still both available. However, because intA is public, '
'it can also be referenced from code in other modules. Because intB is private,'
'it will be hidden from other modules.
Bạn cũng có thể có các biến chỉ có thể truy cập trong một mô-đun (hoặc lớp) cụ thể bằng cách khai báo chúng bằng Private
từ khóa.
Nếu bạn đang xây dựng một ứng dụng lớn và cảm thấy cần sử dụng các biến toàn cục, tôi khuyên bạn nên tạo một mô-đun riêng cho các biến toàn cục của mình. Điều này sẽ giúp bạn theo dõi chúng ở một nơi.
+1 Vẫn hữu ích 7 năm sau. Nhưng có một số sắc thái bổ sung liên quan đến các biến đối tượng so với các biến dữ liệu? Tôi gặp phải một vấn đề liên quan đến các biến đối tượng phạm vi dẫn đến một câu hỏi mới. Nhiều đánh giá cao nếu bạn sẽ có thời gian để có một cái nhìn. stackoverflow.com/q/46058096/5457466
– Trịnh Thái Thảo 19:22:55 05/09/2017Giải thích ngắn gọn về khai báo biến trong VBA.
– Trịnh Phú Thịnh 22:58:45 30/05/2018