ReDim 保留 3 维数组 VBA

ReDim Preserve 3 Dimensinal array VBA

我正在研究 VB catia.There 中的代码是多个 sheet,每个 sheet 的行和列很少 table table 的数量不固定。我想创建一个 3 维数组,它可以将每个 table 数据捕获到它下面的每个 2 维数组中。我尝试了 Redim 和 Redim preserve 但它不起作用。

这是代码示例。

table 1

1 2 3 4 5

2 3 2 3 2

1 2 1 1 4

table 2

9 8 8

7 8 6

这些是每个 sheet 中 table 的样本。假设我能够计算 table 的尺寸和 sheet 中的 table 的数量=].

这是我试过的代码示例。

Dim array() as variant

Dim ntables as integer 'Number of tables

Dim rcount as integer  

Dim ccount as integer

for each table in tables

rcount=table.rows.count

ccount=table.columns.count

redim preserve array(ntables,rcount,ccount) as varient

next

''' '''

我想要一个多维数组作为

数组(0)

  array(0,0)

        array(0,0,1)

        array(0,0,2)

        array(0,0,3)

        array(0,0,4)

        array(0,0,5)

  array(0,1)

        array(0,1,1)

        array(0,1,2)

        array(0,1,3)

        array(0,1,4)

        array(0,1,5)

 array(0,2)

        array(0,2,1)

        array(0,2,2)

        array(0,2,3)

        array(0,2,4)

        array(0,2,5)

数组(1)

  array(1,0)

        array(1,0,1)

        array(1,0,2)

        array(1,0,3)

  array(1,1)

        array(1,1,1)

        array(1,1,2)

        array(1,1,3)

考虑使用 Collection 二维数组,而不是使用 3D 数组,如果只是表的数量不同的话。

考虑以下工作示例(使用 2 个表)

Public Sub TestFillData()

    Dim tables() As Variant
    tables = Array( _
        Range("A2").Resize(16, 4), _
        Range("I2").Resize(100, 7) _
        )
        
    Dim col As New Collection
    Dim item As Variant
    For Each item In tables
        col.Add item.Value2    ' Range().Value2 returns a 2D array
                               ' when more than one cell is referenced.
    Next
    
    ' col.Count() = 2
    ' col(1) = 16x4 array
    ' col(2) = 100x7 array


End Sub