首页 > 解决方案 > 从具有多个地址的变量中选择一个范围

问题描述

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

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

现在我想选择这个范围并将它的值复制到另一个表中,如下所示:

Range(filterRange).Select

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

提前致谢。

标签: excelvba

解决方案


仅当没有任何内容写入时,它才起作用A3

因此,这部分在这里.Resize(.Rows.Count - 1)返回一个错误,因为它实际上被评估为.Resize(1 - 1)Range.Resize0属性的无效参数。


解决这个问题的一些方法是:

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. (但如果你没有偏见,而且你所在的时区是星期五——那就去吧!)


推荐阅读