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

use*_*383 2 excel vba range excel-vba

我收到以下错误消息:Method range of object _worksheet failed尝试使用变量作为范围长度选择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     
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Sid*_*out 7

您收到错误是因为您未完全符合范围.此外,没有必要激活工作簿来执行复制粘贴:)此外,您不需要Function为此.用一个Sub

难道这就是你想(未测试)?

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
Run Code Online (Sandbox Code Playgroud)

编辑

SubFunction过程一样,是一个单独的过程,可以接受参数,执行一系列语句,并更改其参数的值.但是,Sub过程不会像返回值那样返回值Function.