【发布时间】:2018-08-14 17:56:59
【问题描述】:
VBA 新手。我正在尝试创建一个行数组。
基本上,我有一整张工作表,并且想要在第 8 列中获取以某个值(“MA”)开头的所有行。
我最终想要操作该数组(就好像它是一个范围一样),并将其粘贴到工作表的其他位置。任何人都可以帮忙吗?到目前为止,这是我的代码:
Dim top0M As Variant
ReDim top0M(1 To 1) As Variant
For i = 4 To Rows.Count
If Cells(i, 8).Value Like "MA*" Then
top0M(UBound(top0M)) = Rows(i)
ReDim Preserve top0M(1 To UBound(top0M) + 1) As Variant
End If
Next i
此代码运行,但我不确定如何调试它以了解我是否有正确的行。我可以像粘贴范围一样粘贴这些行吗?
【问题讨论】:
-
您正在创建一个数组数组,因此要保存到另一个工作表,您需要循环并将每个数组分配给目标工作表中的下一个开放行。
-
要构建一个范围数组,您需要将
Dim top0M As Variant和ReDim top0M(1 To 1) As Variant更改为Dim top0M As Range和ReDim top0M(1 To 1) As Range,尽管您实际上只需要一个Dim top0M(1 To 1) As Range -
有没有可以用来限制列范围的行?您正在循环整个工作表 1048576 行并获取所有列最多的部分,这些列将是空白的,我们应该忽略。
-
@Kyle 它不适用于 Range,一直在其他地方给我“预期数组”
-
@ScottCraner 谢谢,我将其替换为 UsedRange.Rows.Count。难怪这么慢!