2015-09-25 76 views
1

我很困惑爲什麼我的全局變量在子程序結束時超出範圍。Excel VBA全局範圍變量在子程序完成後超出範圍

我聲明的範圍在模塊的所有subproc的一側的頂部和功能 如下

Option Explicit 

Dim TIMEDATA As Range 
Dim FREQDATA As Range 

Const StartLoc = "B4" 
Const flowLoc = "F4" 
Const dtLoc = "J8" 

以我subproc我定義範圍之一。

Public Sub PortandConvertData() 

<SNIP> 
Set TIMEDATA = calcSheet.Range(Cells(2, 2).Address, Cells(2 + dataSize, 2).Address) 

End Sub 

子在監視窗口我看到變量TIMEDATA從 範圍/範圍去範圍和值從正確去簡單地斷章取義完成後。

我想將數據存儲在模塊中,而不是粘貼在工作表或其他東西中。

任何幫助深表感謝

+0

聲明他們作爲公衆。 公共TIMEDATA作爲範圍 公衆FREQDATA作爲範圍 – MatthewD

+0

@MthethewD我試過全球和公共,都沒有工作。子處理完成後立即脫離上下文。 – TheCodeNovice

+0

@MatthewD也沒有工作。 – TheCodeNovice

回答

2

確保在監視性能上下文包括程序/模塊你實際上看。您可以通過將上下文設置爲所有模塊來確保:

從手錶面板:右鍵單擊表達式 - >編輯手錶 - >從上下文組中將過程/模塊設置爲全部。

如果這不是真正的問題,那麼您遇到的問題與Access VBA相同。

此線程解釋一樣: ThisWorkbook not holding global variable value to cancel ontime()