vba - ReDim Preserve 3维数组VBA
问题描述
我正在研究 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)
解决方案
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
推荐阅读
- laravel - 未定义变量:电子邮件模板中的 $message
- python - 初学者 Python 问题:将列表对象转换为整数时遇到问题
- angular - 在 Angular 9 对话框中,材料在左端呈现为空白
- r - 将一列值四舍五入到另一列中最接近的值(R 代码)
- google-sheets - 在 Google 表格中每隔 n 行计算一个单元格中出现的次数
- objective-c - 从objective c 转换为swift,objective c 中的self.activeKeyboardSize 是什么?
- r - 如何使用 R 找到至少三个 HbA1c 值超过 6.5 的患者
- php - 如何在 php 中使用 curl 的 header
- python - 如何避免我的 sns 热图边缘被切断?
- python - DJANGO CHECK CONSTRAINTS:SystemCheckError:(models.E032)约束名称'age_gte_18'在模型中不是唯一的