【发布时间】:2021-05-07 18:33:40
【问题描述】:
我正在研究 catia 中的 VB 代码。有多个工作表,每个工作表都有几个表,其行和列以及表的数量不固定。我想创建一个 3 维数组,它可以将每个表数据捕获到它下面的每个 2 维数组中。我尝试了 Redim 和 Redim preserve 但它不起作用。
这里是代码示例。
表 1
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,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)
【问题讨论】:
-
ReDim只能调整第一个维度;考虑使用另一种类型的数据结构。 -
另外
varient可能是未定义的 ;-) -
查看
Collection以用作可以添加/删除项目的数组。 -
@MathieuGuindon - 最后一个维度不是第一个?
-
@TimWilliams indeed! ...它是
Preserve修饰符而不是ReDim本身:“当您更改仅最后一个维度的大小时,用于保留现有数组中的数据的修饰符>。”