2016-09-15 5 views
0

Хорошо, поэтому я все еще пытаюсь работать с массивами. Я быстро изучаю, но у меня есть одна конкретная область, в которой я не могу обойти, что разочаровывает.VBA Многомерные массивы, используемые в нескольких подписях

Я пытаюсь ссылаться на массив на нескольких подписях, и при нажатии кнопки я заполняю массив строками и целыми числами (что отлично работает).

Массив объявляется публично.

Как заставить многоадресную рассылку работать через разные подсистемы? Я попытался использовать paramArray myArray как вариант, но я делаю что-то неправильно и почтительно запрашиваю помощь здесь.

Пожалуйста, не зацикливайтесь на деталях моего кода ниже (его, вероятно, неправильно), как им можно добавить данные здесь, а какие данные не являются вопросом, о том, как im использует массив.

Благодаря

Public myArray() 

Sub Main() 
redim preserve myArray(10,5) 
for z = 0 to 10 
    for y = 0 to 5 
    myArray(z,y) = 10 * Z + y 
    Next y 
Next z 
End Sub 

Sub Butn_Click() 
    MsgBox myArray(0,1) 
End sub 

Sub testcode() 
    MsgBox myArray(2,1) 
end sub 
+2

'туАггау (х, у) = туАггау (х, у)' то, что это сделать ? он будет пустым пустым или уже заполнен мой массив? –

+0

Я использую простой способ (который не согласен с мотивом), у меня есть выделенный модуль с именем «Global_Var», и внутри я объявляю свои глобальные переменные, такие как «Глобальный myArray как вариант» (или что-то еще), тогда он распознается везде книги. –

+0

'Sub Butn_Click()' говорит мне, что это лист кода рабочего листа, а не код модуля. Листы кода рабочего листа являются частными по своей природе, и вы не можете объявить общедоступную переменную, как вы это делали, и ожидать, что массив будет доступен в других листах листе листа или кодовых листах модулей. – Jeeped

ответ

0

Я просто попытался внести изменения в код, поэтому он протекал, чтобы увидеть, могу ли я воспроизвести проблему, с которой я столкнулся ... но это действительно работает, типично!

Спасибо за ваши ответы!

Public myArray() 

Sub Main() 
    UserForm1.Show 
End Sub 

Sub testcode() 
    MsgBox myArray(2, 1) 
End Sub 

Sub testcode2() 
    MsgBox myArray(0, 1) 
    unload userform1 
End Sub 

Ниже код находится в UserForm кода, чтобы обеспечить кнопку нажмите работы ...

Sub Butn_Click() 

    ReDim Preserve myArray(10, 5) 
    For Z = 0 To 10 
     For y = 0 To 5 
     myArray(Z, y) = 10 * Z + y 
     Next y 
    Next Z 

    Call testcode 
    Call testcode2 
End Sub 
1

С:

Public myArray() 

Sub Main() 
    ReDim Preserve myArray(10, 5) 
    For Z = 0 To 10 
     For y = 0 To 5 
     myArray(Z, y) = 10 * Z + y 
     Next y 
    Next Z 
End Sub 

Sub Butn_Click() 
    MsgBox myArray(0, 1) 
End Sub 

Sub testcode() 
    MsgBox myArray(2, 1) 
End Sub 

Первый вызов Main() затем вызвать Butn_Click() затем вызвать testcode()

Все, как на работу.

+0

lol типичный - просто проверяйте его сейчас, чтобы увидеть, могу ли я воспроизвести проблему, с которой я столкнулся. – R3PooC

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