VBA方法';对象范围'_工作表在范围声明中使用的变量失败
我收到以下错误消息:VBA方法';对象范围'_工作表在范围声明中使用的变量失败,vba,excel,range,Vba,Excel,Range,我收到以下错误消息:对象的方法范围\u工作表在尝试使用变量作为范围长度在excel中选择范围时失败 下面是我的代码片段: Private Function copyAmount(startRange As Integer, endRange As Integer) Dim startRng As String Dim endRng As String startRng = "A" & Str(startRange) endRng = "A" &
对象的方法范围\u工作表在尝试使用变量作为范围长度在excel中选择范围时失败
下面是我的代码片段:
Private Function copyAmount(startRange As Integer, endRange As Integer)
Dim startRng As String
Dim endRng As String
startRng = "A" & Str(startRange)
endRng = "A" & Str(endRange)
activateBook ("book2.xlsm")
Set rng = Range(startRng, endRng)
Workbooks("book2.xlsm").Sheets(1).Range(rng).Select
Selection.Copy
activateBook ("Book1.xlsm")
Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Function
任何帮助都将不胜感激。使用
Cstr
代替Str
。这将使你的代码工作,我想 您得到错误是因为您没有完全限定您的范围。此外,无需激活工作簿即可执行复制粘贴:)此外,您也不需要为此使用功能。使用Sub
这就是你正在尝试的(未经测试的)吗
编辑
Sub
与函数
过程一样,是一个单独的过程,可以获取参数、执行一系列语句并更改其参数的值。但是Sub
过程不会像函数那样返回值。当代码位于工作表而不是模块中时,您会出现此错误。如果您将范围(rng)替换为范围,则不会发生特定错误。选择为rng。选择(即,它已经是范围
)假设rng
已在MS Excel 2010中定义为范围
变量。
Private Sub copyAmount(startRange As Integer, endRange As Integer)
Dim wbT As Workbook, wbO As Workbook
Dim rng As Range
Set wbT = ThisWorkbook
Set wbO = Workbooks("book2.xlsm")
Set rng = wbO.Sheets(1).Range("A" & startRange & ":" & "A" & endRange)
rng.Copy
'~~> Change Sheets(1) below to the relevant sheet
wbT.Sheets(1).Range("D3").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub