我正在尝试选择跨越col的动态范围的过滤数据。 A:col。 J没有选择标题(在第1行)。从那里我需要将它复制并粘贴到一个新的工作表中,我将进一步操作它,但我无法想出一个有效或功能的方法来做到这一点。基于我在另一个论坛上找到的一些代码,我能够选择所有可见的单元格"在一个列中,但我遇到了试图选择整个范围的问题。我仍然是vba的新手,所以请原谅我的语法,但我在下面发布的代码试图通过Rows.Count和i进行迭代,这是一个整数1-10。如果您对如何更好,更有效地做到这一点有任何建议,我将非常感激。
Sub SelectVisibleInColD()
Dim lRow As Long, i As Integer
Set i = 1
Do While i <= 10
With ActiveSheet
lRow = .Cells(.Rows.Count, i).End(xlUp).Row
If lRow < 3 Then Exit Sub
.Cells(1, 1).Offset(1, 0).Resize(lRow - 1).SpecialCells(xlCellTypeVisible).Select
End With
i = i + 1
Loop
End Sub
答案 0 :(得分:2)
您可以使用Range
ActiveSheet
属性选择范围。您已经有了最后一行,并且您知道标题位于第一行,因此您的范围从位置A2
开始,然后转到列J
的最后一行
ActiveSheet.Range("A2:J"&lRow).SpecialCells(xlCellTypeVisible)
如果要复制此范围,请使用{/ 1}}功能,如
Copy
此功能仅将选择移动到内存,粘贴它,构建目标范围并调用yourRangeAsAbove.Copy
功能。
答案 1 :(得分:0)
我遇到了以下答案,搜索了我的问题:在vba中删除过滤的选择。 但是,尝试回答&lRow 会给我一个运行时错误1004,应用程序定义的错误或对象定义的错误
我绕过这个 ActiveSheet.Range(“ A2:G”& Range(“ A”&Rows.Count).End(xlUp).Row) .SpecialCells(xlCellTypeVisible).Delete
对于那些可能也会遇到相同问题的人。