从具有多个地址的变量中选择范围

时间:2018-10-05 15:25:05

标签: excel vba

我从另一个线程获得了解决方案,以创建一系列过滤的行:

Dim filterRange
With ActiveWorkbook.Worksheets("SCOPE").Range("A2").CurrentRegion
   filterRange = .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlVisible).Address
End With

现在,我要选择此范围并将其值复制到另一个表中,如下所示:

Range(filterRange).Select

但是我不明白为什么这不起作用。有人可以解释吗?

谢谢。

1 个答案:

答案 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的字符串传递。 (但是,如果您没有偏见,并且在您所在的时区是星期五,那就去吧!)