2013-10-02 235 views
2

我在這裏掙扎了一下。VBA - 全局變量範圍?

我在窗體(MainForm)上創建了一些公共變量。我現在意識到我需要將這些變量的範圍擴展到其他形式。

因此,我將公共聲明移到了一個名爲「Globals」的新模塊中。

當我嘗試運行新窗體時,我收到關於模糊變量的投訴,因爲我試圖將其值重置爲「」。沒有使用相同變量的「MainForm」投訴。

模塊 「全局」

Public myIP As String 
Public myStatus As String 

新形式:

myStatus = "" << throws an err 

我是正確的公共變量聲明移動到一個模塊?

任何關於來自該新窗體的「模糊變量」錯誤的想法?

謝謝!

+1

公共變量應該在模塊中聲明。在窗體上聲明時,它將成爲窗體的屬性,並且可以通過formname.property進行訪問。 [變量範圍](http://www.ozgrid.com/VBA/variable-scope-lifetime.htm) – Santosh

+0

同意。因此,移動模塊「Globals」應該擴大範圍。 但是,當我嘗試重置該變量的值時,我仍然爲模棱兩可的變量名err而掙扎。我不會以新形式重新聲明該變量。 –

+0

通過形式引用調用變量的工作,但似乎很麻煩:形式MainForm.myStatus –

回答

2

您可能試圖在同一範圍內聲明相同的變量。有關更多詳細信息,請參見here,也是與此here相關的SO線程。

作爲一個便箋,我注意到Excel VBA,如果過程級變量聲明爲同名,則必須使用appropriately qualify模塊級變量。