Tôi có một câu hỏi về phạm vi toàn cầu và đã trừu tượng hóa các vấn đề thành một ví dụ đơn giản:Làm thế nào để khai báo biến toàn cầu trong Excel VBA để được hiển thị trên Workbook
Trong một Workbook Excel: Trong Sheet1 Tôi có hai (2) nút.
Đầu tiên được dán nhãn SetMe và được liên kết với một chương trình con trong Sheet1 của mô-đun:
Sheet1 mã:
Option Explicit
Sub setMe()
Global1 = "Hello"
End Sub
Thứ hai được dán nhãn ShowMe và được liên kết với một chương trình con trong ThisWorkbook's module:
ThisWorkbook code:
Option Explicit
Public Global1 As String
Debug.Print("Hello")
Sub showMe()
Debug.Print (Global1)
End Sub
Nhấp vào SetMe tạo trình biên dịch error: variable not defined
.
Khi tôi tạo một mô-đun riêng và di chuyển khai báo Global1 vào mọi thứ hoạt động.
Vì vậy, câu hỏi của tôi là: Mọi thứ tôi đã đọc nói rằng Biến toàn cục, được khai báo ở đầu mô-đun, bên ngoài bất kỳ mã nào sẽ hiển thị cho tất cả các mô-đun trong dự án. Rõ ràng nó không phải như thế. Trừ khi sự hiểu biết của tôi về Mô-đun không chính xác.
Các đối tượng Sheet1
, Sheet2
, ThisWorkbook
, ... đi kèm với sổ làm việc: đây có phải là các mô-đun có khả năng khai báo biến ở phạm vi toàn cầu không?
Hoặc là nơi duy nhất có thể tuyên bố toàn cầu, trong một mô-đun riêng biệt loại Mô-đun.
Tôi tin rằng Mã của UserForms rơi vào loại danh mục Mô-đun mặc dù nó không thực sự được liệt kê như vậy. Đúng không? – peege
@ sancho.s Tôi đã xóa nó để tránh nhầm lẫn :) Tôi đã bỏ lỡ liên kết của Pearson và giải thích sai một dòng trong liên kết MSDN mà tôi đã đăng. Đã học một điều gì đó mới mẻ hôm nay :) – L42
@ user2978241 - Bạn có tìm thấy bất kỳ câu trả lời hữu ích nào ở đây không? Nó luôn luôn là tốt để cung cấp cho thông tin phản hồi, do đó, người dùng SO khác có thể nhìn thấy. –