在VBA中selectdynamic的,过滤的范围

我试图select一个dynamic范围的过滤数据,跨越col。 A:col。 J不select标题(在第1行)。 从那里我需要复制和粘贴到一个新的工作表,我将进一步操纵它,但我不能想出一个有效的或function的方式来做到这一点。 基于我在另一个论坛上find的一些代码,我可以在一个列中select所有“可视化单元格”,但是我正在尝试select整个范围。 我还是很新vba所以原谅我的语法,但我的代码下面发布是试图通过Rows.Count和我是一个整数1-10的迭代。 如果您对如何更好,更有效地做到这一点有任何build议,我将不胜感激。

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 

您可以使用ActiveSheet Range属性来select一个范围。 你已经有了最后一行,你知道头在第一行,所以你的范围从A2开始,到J列的最后一行

 ActiveSheet.Range("A2:J"&lRow).SpecialCells(xlCellTypeVisible) 

如果你想复制这个范围,使用Copyfunction

 yourRangeAsAbove.Copy 

此function只将select移动到内存,粘贴它,build立你的目的地范围,并调用PasteSpecialfunction。