这有效:
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
我无法弄清楚为什么我不能像第二个例子那样引用范围。
答案 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)
这不会给出任何错误。看起来当想要在范围单元寻址中使用对象引用时,应该给出第二个参数。