2016-11-22 4 views
1

Я не совсем уверен, почему я получаю сообщение об ошибкеМогу ли я использовать переменную для ReDim массива?

Ожидая динамического вар массива

с этим кодом:

Option Explicit 

Sub ArrayTest() 
    Dim i As Integer, BankList(0) As Variant, x As Integer 
    For i = 0 To UBound(ScreenArray) 
     If ScreenArray(i) Like "TR=SUB*" Then 
      Debug.Print ScreenArray(i) 
      ReDim Preserve BankList(x) '<<< ERROR LINE 
      BankList(x) = ScreenArray(i) 
      x = x + 1 'Raise the value for the next occurrence, if needed. 
     End If 
    Next 
End Sub 

В основном я пытающимся двигаться конкретными строки из одного массива в новый массив, если выполняются определенные критерии. Трудно определить, сколько строк будет в новом массиве, пока не будет запущен этот оператор For...Next.

Если вы не можете определить код, исходный массив - ScreenArray, а новый массив - BankList.

+0

Не делайте этого. Вы должны использовать 'List (Of T)' – SLaks

+0

@ YowE3K Ничего себе, я не могу поверить, что все было так просто. Благодаря! –

+1

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

ответ

5

Чтобы создать динамический массив, не указывайте размер в первоначальной декларации.

Поэтому используйте BankList() As Variant вместо BankList(0) As Variant.

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