2015-12-03 57 views
0

32位Excel 2015 | 64位Win7的Excel中的公共數組UDFs

我有一個名爲LDMod

,看起來像這樣

Public MyArray() 

Function DoinStuff() 
if **IDKWhatTOPutHere** MyArray then Call FillMyArray 
DoinStuff = "Done" 
End Function 

Sub FillMyArray 
ReDim MyArray(1 to 10, 1 to 10) 
For ..... 
    ....Blah 
Next 
End Sub 

我的目標是一旦創建和填充公共陣列然後由函數一遍又一遍用它代替模塊每次調用函數時爲每個單元重新創建數組。

的問題是雙重的:

  1. 我不知道如何檢查MYARRAY已經建立但還是不IDKWhatToPutHere
  2. 我的公共陣列減速是不允許我打電話給那個變量陣列
+2

沒有優雅的方式來查看是否有數組已經尺寸。在'FillMyArray'中使用一個全局'mIsFilled'變量,並將其設置爲'true',並使用'if not mIsFilled then Call FillMyArray' –

+1

取決於你對優雅的定義我猜測:http://www.cpearson.com/Excel/ IsArrayAllocated.aspx – Rory

+0

好吧,這將工作 - 第二部分的任何想法 - 出於某種原因,我的函數創建一個不使用公共變量的MyArray的新實例我得到'無法編譯模塊'價值 – Schalton

回答

0

@Alex,我決定只使用一個虛擬變量保存布爾

要固定T他更大的問題 - 無法以我的數組爲目標我創建了一個子模糊我的數組,然後它只是在稍後被另一個子模塊獲得ReDimed - 它不是很漂亮,但是在這一點上函數超過了形式。

Public LDMCArray() 
Public LDMCFillCheck As Boolean 

Sub InitializePublicDims() 
LDMCFillCheck = False 
ReDim LDMCArray(1 To 2, 1 To 2) 
End Sub 

如果有人認爲一個更好的解決方案我會很樂意把一些更多的形式進入該功能...