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)
任何帮助将不胜感激.
您收到错误是因为您未完全符合范围.此外,没有必要激活工作簿来执行复制粘贴:)此外,您不需要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)
编辑
Sub和Function过程一样,是一个单独的过程,可以接受参数,执行一系列语句,并更改其参数的值.但是,Sub过程不会像返回值那样返回值Function.
| 归档时间: |
|
| 查看次数: |
35370 次 |
| 最近记录: |