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
我正在研究 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