我从另一个线程获得了解决方案,以创建一系列过滤的行:
Dim filterRange
With ActiveWorkbook.Worksheets("SCOPE").Range("A2").CurrentRegion
filterRange = .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlVisible).Address
End With
现在,我要选择此范围并将其值复制到另一个表中,如下所示:
Range(filterRange).Select
但是我不明白为什么这不起作用。有人可以解释吗?
谢谢。
答案 0 :(得分:0)
仅当A3
中没有任何内容时,它才有效。
这里.Resize(.Rows.Count - 1)
的这部分将返回错误,因为它实际上被评估为.Resize(1 - 1)
并且0
是Range.Resize属性的无效参数。
解决此问题的一些方法是:
Sub TestMe()
Dim filterRange As String
With ActiveWorkbook.Worksheets("SCOPE").Range("A2").CurrentRegion
If .Cells.Count <> 1 Then
filterRange = .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlVisible).Address
Else
filterRange = .Address
End If
End With
Range(filterRange).Select
End Sub
但是,这使代码看起来有些丑陋,因为它使用.Select
并将Range()
中的变量作为来自.Address
的字符串传递。 (但是,如果您没有偏见,并且在您所在的时区是星期五,那就去吧!)