【问题标题】:vba - rediming 2d array and trying to find the length of the 2nd of the arrayvba - 重定二维数组并尝试查找数组第二个的长度
【发布时间】:2023-03-16 12:54:01
【问题描述】:

这里的想法是我有一个表,其中 a 列希望它是数组的第一部分,而 B 列是一个整数,希望它是数组第二部分的长度。

这里的问题是,数组的第二部分的上限是否可以有不同的长度?

This is how the table looks like

这是我的代码,但它似乎不起作用

Dim rowssheet2 As Variant
rowssheet2 = ThisWorkbook.Worksheets("Sheet2").Range("b2").End(xlDown).Row - 1
Dim arr2()
 ReDim arr2(rowssheet2)

 For i = 0 To rowssheet2
  ReDim arr2(i, ThisWorkbook.Worksheets("Sheet2").Range("B" & 2 + i).Value)
Arr2(i, 0) = ThisWorkbook.Worksheets("Sheet2").Range("A" & 2 + i).Value

Next i

如果你能回答这个问题并且如果这是可能的,那么我将尝试遍历数组,但 Ubound(arr2,2) 不会对所有数组都相同

【问题讨论】:

  • 不,不是你的做法。数组将始终是矩形的,而不是“参差不齐的边缘”。

标签: vba excel delimiter


【解决方案1】:

严格来说,VBA 数组无法根据第一个维度的索引在第二个维度中具有不同的边界。从the implementation of arrays in VBA 可以看出这一点。 (其实源码讲的是VB6,但VBA没有区别。)

您在循环中所做的是重新调整整个数组的两个维度。 (请参阅VBA specification 的第 5.4.3.3 节。)

但是,您尝试实现的概念,锯齿状数组,即数组的数组,可以在 VBA 中构建。请参阅this SO answer 了解如何操作。

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多