2015-12-03 5 views
0

32Bit Excel 2015 | 64 бит Win7Публичные массивы в Excel UDF

У меня есть модуль с именем 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. My Public Массив торможением не позволяет мне называть переменную массив
+2

Нет элегантный способ увидеть, если массив был рассчитан. Используйте глобальную переменную 'mIsFilled', которую вы задали' true' в 'FillMyArray' и используете' if not mIsFilled then Call FillMyArray' –

+1

Зависит от вашего определения элегантности. Я думаю: http://www.cpearson.com/Excel/ IsArrayAllocated.aspx – Rory

+0

Хорошо, это сработает - любые идеи во второй части - по какой-то причине моя функция создает новый экземпляр «MyArray», не используя Public Variable. Я получаю «Не могу скомпилировать модуль» ' стоимость – Schalton

ответ

0

@Alex, я решил просто использовать фиктивную переменную для хранения булева

чтобы исправить т он больше проблем - не имея возможности настроить таргетинг на мой массив. Я создал sub, затем меняет свой массив, а затем он просто получает ReDimed позже другим суб - это не очень, но в этот момент функция над формой.

Public LDMCArray() 
Public LDMCFillCheck As Boolean 

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

Если кто-то думает о лучшем решении, я бы с удовольствием положил еще некоторую форму в эту функцию ...

Смежные вопросы