2016-03-25 14 views
2

A1の式の代わりにR1C1の式を使用して、ブックの範囲内の値を別のブックにコピーしたいと思います私のコードで整数変数で行の値を後で)。Excel vba:R1C1の式を使用して別のブックに範囲の値をコピーする

ので、このコードは、私の作品:

Sub test() 
    Dim x, y As Workbook 

    Set x = ThisWorkbook 
    Set y = Workbooks.Open("myfilepath") 

    x.Sheets(1).Range("A1:B1").Copy 
    y.Sheets(1).Range("A32:B32").PasteSpecial 

End Sub 

私は(私が同等だと思う)そのような何かをしようとした場合しかし、それは動作しません(私は'1004' error at x.Sheets(1).Range(Cells(1, 1), Cells(1, 2)).Copyを取得する):

Sub test() 
    Dim x, y As Workbook 

    Set x = ThisWorkbook 
    Set y = Workbooks.Open("myfilepath") 

    x.Sheets(1).Range(Cells(1, 1), Cells(1, 2)).Copy 
    y.Sheets(1).Range(Cells(32, 1), Cells(32, 2)).PasteSpecial 

End Sub 

誰かがそれがうまくいかない理由と、どのように整数変数を使用して文字の代わりに行を定義することができるのか説明できますか?

+0

fyiの場合、 'x'は' variant'として宣言されます。 – findwindow

+0

@findwindow:ありがとう。私はなぜ「x」と入力するのか不思議だった。 「y」と入力している間は、可能性のドロップダウンメニューが表示されませんでした。ありました。 – sims

+0

受け入れられた回答の副メモとして。 R1C1表記を使用して、あなたが望むものを達成することができます。 VBAは次の構文を受け入れます: 'Range(" A "&someVariable)' – Vegard

答えて

2

あなたがWithブロック使用することができ、よりコンパクトなコードについて

x.Sheets(1).Range(x.Sheets(1).Cells(1, 1), x.Sheets(1).Cells(1, 2)).Copy 
y.Sheets(1).Range(y.Sheets(1).Cells(32, 1), y.Sheets(1).Cells(32, 2)).PasteSpecial 

のように、Cellsの親オブジェクトを指定する必要があります。これは役立つかもしれ

With x.Sheets(1) 
.Range(.Cells(1, 1), .Cells(1, 2)).Copy 
End With 
With y.Sheets(1) 
.Range(.Cells(32, 1), .Cells(32, 2)).PasteSpecial 
End With 

希望を。

+0

ありがとう、アレックス!!わたしにはできる。私は答えを見つけようと多くの時間を費やし、あなたは5分でそれを得ました。ありがとう!! – sims

+0

あなたは大歓迎です!私はそれがあなたのためにうれしいです。あなたが解決策に満足すれば、受け入れられた回答に印をつけてください。あなたのプロジェクトに幸運。宜しくお願いします、 –

関連する問題