2016-11-22 2 views
1

Ich bin nicht ganz sicher, warum ich die Fehlermeldung vonKann ich eine Variable zum ReDim eines Arrays verwenden?

Erwartung eines dynamischen Arrays var bekommen

mit diesem Code:

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 

Grundsätzlich ich versucht bin spezifisch zu bewegen Zeichenfolgen von einem Array zu einem neuen Array, wenn bestimmte Kriterien erfüllt sind. Es ist schwierig festzustellen, wie viele Zeichenfolgen in dem neuen Array enthalten sein werden, bis diese For...Next-Anweisung ausgeführt wird.

Wenn Sie den Code nicht erkennen können, ist das ursprüngliche Array ScreenArray und das neue Array ist BankList.

+0

Tun Sie das nicht. Sie sollten 'List (Of T)' – SLaks

+0

@ YowE3K Wow Ich kann nicht glauben, dass es so einfach war. Vielen Dank! –

+1

Ich hätte meinen Kommentar nicht so schnell löschen sollen !! (Ich begann zu zweifeln, ob ich recht hatte, also habe ich es los, während ich nachschaute. Es scheint, dass ich recht hatte.) – YowE3K

Antwort

5

Um ein dynamisches Array zu erstellen, geben Sie nicht die Größe in der ursprünglichen Deklaration an.

Verwenden Sie also BankList() As Variant anstelle von BankList(0) As Variant.

Verwandte Themen