3

次のエラー メッセージが表示されます: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     

どんな助けでも大歓迎です。

4

3 に答える 3

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

編集

Subは、プロシージャと同様に、Function引数を取り、一連のステートメントを実行し、その引数の値を変更できる別個のプロシージャです。ただし、Subプロシージャは、のように値を返しませんFunction

于 2012-07-03T09:18:48.307 に答える
0

コードがモジュールではなくワークシートにある場合、このエラーが発生します。

于 2015-11-24T20:45:42.103 に答える
0

の代わりにStr、 を使用しますCstr。これにより、コードが機能するようになります...

于 2012-07-03T09:16:19.617 に答える