1. 程式人生 > >vba中變量作用域

vba中變量作用域

標準 運行 ring ref cin box http stat 打開

參考:http://club.excelhome.net/thread-1237085-1-1.html


全局變量例子
public 變量1 AS Integer
Sub LLL()
變量1 = 1111
End Sub


模塊級變量例子
DIM 變量1 AS Integer
Sub LLL()
變量1 = 1111
End Sub

參考:http://www.excelpx.com/thread-334103-1-1.html

我有a、b、c三個宏模塊,每個裏面都有一個變量 dim sj as date, 這三個模塊使用時都會調用另外一個模塊d模塊,怎麽才能a、b、c每個模塊調用d模塊時,都能把變量sj傳遞到d模塊呢?

我現在a模塊sub 上面最上一行 寫上Public sj As Date 後,a模塊運行sj變量可以傳遞到d模塊
當我把a、b、c每個模塊sub上面最上一行都加上Public sj As Date 後,每個模塊運行到d模塊後,就會出錯,提示:發現二義性名稱

請問各位老師,該怎麽弄才能讓a、b、c三個模塊sj變量都能傳遞到d模塊呢?


最後總算解決了:abc三個模塊,不管哪個模塊,運不運行,只需在任意一個(也只能一個)上面加個全局變量 Pablic就可以了

我是2個以上模塊都加了相同的全局變量出問題的。


模塊級變量應該放在本模塊的最上端,不是在過程中,下面兩句會出錯
Dim x As String
x = "user"

如果該模塊為標準模塊,可以這樣試試:

Dim x As String

Sub auto_open() ‘打開工作簿自動運行
x = "user"
End Sub

Sub abc()
MsgBox x
End Sub

vba中變量作用域