我想知道是否有替代以下代码:
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))
答案 0 :(得分: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中“激活”任何东西。有关详细说明,请参阅此处: