如何在代码中引用另一个工作表中的范围?

时间:2015-01-27 12:03:03

标签: excel-vba range vba excel

这有效:

Sub exemp2()
Dim frange As Range
Dim x As Integer
x = 1
Set frange = Worksheets("Sheet6").Range("A1")
Worksheets("Sheet5").Activate
Range(Cells(x, 1), Cells(5, 2)).Copy Destination:=frange
Cells(8, 1).Value = ActiveSheet.Name
End Sub

这给出了1004错误:

Sub exemp1()
Dim frange As Range
Dim x As Integer
x = 1
Set frange = Worksheets("Sheet6").Range(Worksheets("Sheet6").Cells(1, 1))
Worksheets("Sheet5").Activate
Range(Cells(x, 1), Cells(5, 2)).Copy Destination:=frange
Cells(8, 1).Value = ActiveSheet.Name
End Sub

我无法弄清楚为什么我不能像第二个例子那样引用范围。

1 个答案:

答案 0 :(得分:0)

请在Cell1属性的第一个参数Workseet.Range(标记为必需)上找到以下MSDN说明

  

范围的名称。这必须是A1风格的参考   宏的语言。它可以包括范围运算符(冒号),   交集运算符(空格)或联合运算符(逗号)。   它还可以包括美元符号,但它们被忽略了。你可以使用   范围的任何部分中的本地定义的名称。如果你使用一个名字,那么   假定名称是宏的语言。

您可以在此处找到 complete MSDN article on this subject

替代方法

但是还有另一种选择 - 您可以使用以下调用:

Set frange = Worksheets("Sheet6").Range(Worksheets("Sheet6").Cells(1, 1), _
                                        Worksheets("Sheet6").Cells(1, 1))

而不是

Set frange = Worksheets("Sheet6").Range(Worksheets("Sheet6").Cells(1, 1)

这不会给出任何错误。看起来当想要在范围单元寻址中使用对象引用时,应该给出第二个参数。