微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ReDim 保留 3 维数组 VBA

如何解决ReDim 保留 3 维数组 VBA

我正在 catia 中处理 VB 代码。有多个工作表,每张工作表都有几个表格,其中的行和列以及表格的数量是不固定的。我想创建一个 3 维数组,它可以将每个表数据捕获到它下面的每个 2 维数组中。我试过 Redim 和 Redim 保留,但它不起作用。

这是代码示例。

表一

1 2 3 4 5

2 3 2 3 2

1 2 1 1 4

表 2

9 8 8

7 8 6

这些是每张表格中的表格样本。假设我能够计算表格的尺寸和表格中表格的数量

这是我试过的代码示例。

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,1)

        array(0,2)

        array(0,3)

        array(0,4)

        array(0,5)

  array(0,1,5)

 array(0,2,5)

数组(1)

  array(1,0)

        array(1,1)

        array(1,2)

        array(1,3)

  array(1,3)

解决方法

如果只是表的数量不同,请考虑使用 Collection 的 2D 数组而不是使用 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。