2013-06-22 2 views
1

Я пытаюсь запустить приложение VBA, используя цикл и используя переменные, имена которых зависят от того, где я в цикле. В частности, что-то вродеПеременные в циклах VBA

Dim i As Integer 
i = 1 
Dim varname() As String 
while i < 50 
varname(i) = asdasd 
i = i + 1 
Wend 

Как-то он не может прочитать varname (i) или что-то еще. Он сообщает об индексе вне диапазона.
Я понятия не имею, в чем проблема, может кто-нибудь может мне помочь?

ответ

2

Необходимо сначала указать свой массив.

Sub max() 

Dim i As Integer 
i = 1 

Dim varname() As String 
ReDim varname(49) '<---- There 

While i < 50 
varname(i) = asdasd 
i = i + 1 
Wend 


End Sub 

Это хороший ресурс для VBA массивов: http://msdn.microsoft.com/en-us/library/office/aa164778(v=office.10).aspx

+0

Ах хорошо. Могу ли я обновить ReDim позже, не уничтожая существующие переменные? Поскольку размер в моем фактическом коде будет зависеть от некоторых результатов. Поэтому в начале я не знаю конечного числа переменных, которые мне понадобятся. – ThomasMS

+0

yes, команда там вместо этого будет 'ReDim Preserve' – mango

+0

Я думаю, вы можете просто использовать' Dim varname (49) как String', не нуждаясь в 'ReDim'. –

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