循环数组时键入不匹配错误

时间:2019-07-20 09:10:06

标签: excel vba

我正在尝试通过循环数据集来构建数组。

里面的值是对象/范围类型。 (例如34FF544)

我收到“类型不匹配”错误。

Dim arr2 As Variant
Dim y As Long
Dim eil As Long

eil = 1
y = 1

Do Until Sheets(2).Range("A" & eil) = ""   'looping until the blank cell
arr2(y) = Range("A" & eil)                 'storing the value in an array

y = y + 1                                  'next array element
eil = eil + 1                              'next row to take value from
Loop

1 个答案:

答案 0 :(得分:1)

当前填充数组的方式是动态的,为此您需要调整以下两项:

  •   

    “通过声明动态数组,您可以在代码的同时调整数组的大小   在跑。使用Static,Dim,Private或Public语句进行声明   一个数组,括号为空。“ Office Dev Center

    因此请确保您以Dim arr2() As Variant

  • 开头
  • 第二件事是,因为您使用动态数组,所以可以选择在循环之前调整数组的大小,但是您也可以随时随地调整数组的大小,这就是您的路线:

    Do Until Sheets(2).Range("A" & eil) = ""
        ReDim Preserve arr2(y) 'This is your key!
        arr2(y) = Range("A" & eil)                 
        y = y + 1
        eil = eil + 1
    Loop
    

现在您知道了罪魁祸首,看看您的代码实际上有多充足也很不错。想到的几件事:

  • 您同时拥有yeil的数量,为什么不只使用其中之一?

  • 您可以一次加载一个范围内的数组

  • 此外,您应该研究命名工作表并通过With... End With
  • 运行代码