2016-11-22 62 views
1

我不完全知道为什么我收到的我可以使用变量重新排列数组吗?

错误消息期待一个动态数组变种

与此代码:

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

相关问题