vba 如何给二维数组重新分配空间大小,实现动态追加数据
vba吧
全部回复
仅看楼主
level 1
运行这句时出错,网上查了一下,不能给二维数组使用redim preserve增加行数,大神有解决办法吗
2024年03月07日 08点03分 1
level 1
preserve只能改最后一维,1to2那里改不了
2024年03月07日 09点03分 2
如果使用 Preserve 关键字,则只能调整最后一个数组维度的大小,并且无法更改维度数目。 例如,如果您的数组只有一个维度,则可以调整该维度的大小,因为它既是最后一个维度,也是唯一的一个维度。 但是,如果数组有两个或更多维度,则只能更改最后一个维度的大小并保留数组的内容。
2024年03月07日 09点03分
level 12
只能将最后一维的空间增大。如题你的情况想改第一位空间,有个办法,把数组转置,这样如今的第一维就变成了第二维,你可以不停扩大第二维,最后,再将数组转置回来,赋值给单元格
2024年03月07日 09点03分 3
能举个例子吗?不懂怎么转置
2024年03月07日 09点03分
2024年03月07日 10点03分
2024年03月07日 11点03分
百度贴吧怎么回事,把我发的代码和图片例子秒删了?
2024年03月07日 11点03分
level 12
Option Explicit
Sub 如何变化第一维() '我要把所有姓李的人的信息提取出来
Dim i%, j%, arr(), brr(), u1%, u2%, x%
arr = Range("A1").CurrentRegion.Value2
u1 = UBound(arr)
u2 = UBound(arr, 2)
ReDim brr(1 To u2, 1 To 1) 'arr的维度是第表格先行后列对应的。但是这个brr,我在设置的时候,就让它第一维为列,因为列固定的,而姓李的人有多少行,不确定,我就放在第二维。
For j = 1 To u2 '添加标题
brr(j, 1) = arr(1, j) '这样看,brr和arr就是行列顺序相反的
Next
x = 1
For i = 2 To u1
If arr(i, 2) Like "李*" Then '如果姓李
x = x + 1 'brr的列+1
ReDim Preserve brr(1 To u2, 1 To x)
For j = 1 To u2
brr(j, x) = arr(i, j) '行列相反
Next
End If
Next
Range("G1").Resize(x, u2).Value2 = Application.WorksheetFunction.Transpose(brr)
End Sub
2024年03月07日 11点03分 4
level 7
如果是输出区域,我会直接将空白单元格区域赋值给变量,获得一个天然的空白二维数组
2024年03月20日 03点03分 7
level 11
Preserve是用于修改数组最末一维的大小
2024年03月20日 23点03分 9
level 4
转成另一个数组
2024年03月21日 20点03分 10
1