VBA方法'范围对象'_Worksheet范围声明中使用的失败variables

我收到以下错误消息: Method range of object _worksheet failed尝试在使用variables作为范围长度在Excel中select范围Method range of object _worksheet failed

以下是我的代码片段:

 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 

任何帮助将不胜感激。

您正在收到错误,因为您没有完全限定您的范围。 也没有必要激活工作簿做复制粘贴:)也不需要一个Function 。 使用一个Sub

这是你正在尝试(未testing)?

 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 

编辑

Sub就像一个Function过程一样,是一个独立的过程,它可以接受参数,执行一系列的语句,并改变参数的值。 但是一个Sub过程不会返回一个像Function那样的值。

使用Cstr代替Str 。 这将使你的代码工作我猜…

当你的代码在工作表中而不是模块时,你会得到这个错误。