【问题标题】:Range activation in a different worksheet在不同的工作表中激活范围
【发布时间】:2014-09-27 09:34:51
【问题描述】:

我想知道以下代码是否有替代方案:

Dim Arr() as Variant
Arr = Range("A1:I511")

指的是指定的工作表。我尝试了以下

Dim Arr() as Variant
Arr = Range(Sheets("list").Cells(1, 1), Sheets("list").Cells(511, 9))

还有其他写法吗?我想要这样的东西:

Dim Arr() as Variant
Arr = worksheets("list").range(Cells(1, 1),Cells(511, 9))

【问题讨论】:

    标签: excel vba syntax range worksheet


    【解决方案1】:

    还有很多其他的写法,也许最简单:

    arr = Sheets("list").Range("A1:I511").Value
    

    但这是您尝试的问题:

    Cells(_row_, _column_) 返回一个范围对象,其计算结果为其默认属性(.Value 属性。所以当你这样做时:

    Range(Sheets("list").Cells(1, 1), Sheets("list").Cells(511,9))

    您实际上正在执行此操作,这将引发错误除非这些单元格包含可以解释为范围地址(如“$A$1”或“$ J$5:$Q$459",等等。

    Range(Sheets("list").Cells(1, 1).Value, _ Sheets("list").Cells(511,9).Value)

    试试这个:

    Range(Sheets("list").Cells(1, 1).Address, _ Sheets("list").Cells(511,9).Address).Value

    或者:

    With Sheets("list")
       arr = Range(.Cells(1, 1).Address .Cells(511,9).Address).Value
    End With
    

    NB如果没有先激活该工作表,您将无法激活另一个工作表上的范围。我建议你不要同时做这两个。 99% 的时间没有理由在 VBA 中“激活”任何东西。请参阅此以获取更多说明:

    How to avoid using Select in Excel VBA macros

    【讨论】:

      猜你喜欢
      • 2018-09-10
      • 2015-07-06
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      相关资源
      最近更新 更多