【问题标题】:Type Mismatch Error while looping the array循环数组时出现类型不匹配错误
【发布时间】:2019-07-20 09:10:06
【问题描述】:

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

里面的值是对象/范围类型。 (例如 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

【问题讨论】:

    标签: excel vba


    【解决方案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 运行代码

    【讨论】:

    • 嘿,感谢您提供所有这些信息。我每次都使用 y 加载数组,而 eil 是一个不同的变量,它经过数百行。这只是我所拥有的整个代码的一小部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2017-01-27
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多