2017-07-29 24 views
0

変数 'r'を使用してシート1からシート2に行をコピーしようとしています。この変数は別のプログラムの出力です。以下のコードを使用すると、「アプリケーション定義」エラーが発生します。誰かがこれで私を助けることができますか?それを複雑な上、可変範囲の行をコピーする

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(1, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r, 2)).Value 
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(2, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r + 1, 2)).Value 
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(3, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r + 2, 2)).Value 
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(4, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r + 3, 2)).Value 

答えて

2

あなたは、単に使用:

Sheets("Sheet2").Cells(1, 2).value = Sheets("Sheet1").Cells(r, 2).value 
    Sheets("Sheet2").Cells(2, 2).value = Sheets("Sheet1").Cells(r + 1, 2).value 
    Sheets("Sheet2").Cells(3, 2).value = Sheets("Sheet1").Cells(r + 2, 2).value 
    Sheets("Sheet2").Cells(4, 2).value = Sheets("Sheet1").Cells(r + 3, 2).value 

エラーはあなたがパラメータとして一つだけのセルでRangeメソッドを使用していたということでした、それは二つのセルを必要とし、範囲を返しながら、そのそれらに加わる。あなたはさらに、1つの文にあなたのコードを単純化するためにそれを使用することができます。

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(1, 2), Sheets("Sheet2").Cells(4, 2)).value = _ 
    Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r, 2), Sheets("Sheet1").Cells(r + 3, 2)).value 

、さらに:

Sheets("Sheet2").Range("B1:B4").value = Sheets("Sheet1").Range("B" & r).Resize(4).value 
+0

はそれを手に入れました!このような迅速な対応に感謝します!また、私はVBAの初心者です。基本的なトピックをカバーするのに役立つ本をお勧めしますか? – Muni0408

+0

@ Muni0408私は特定の推薦された本を持っていませんが、そこにはたくさんのものがあります。 –

+0

ありがとうございますA.S.H ... :) – Muni0408

0

ます。また、複数の領域に一度に複数の値をコピーすることができます

[Sheet1!C1:C4,Sheet1!C6:C9] = [Sheet2!B2:B5].Value 
+0

このサイトの最新情報... – Muni0408

+0

@ Muni0408また、ドキュメントのトピックのいくつかを確認することもできます。https://stackoverflow.com/documentation/excel-vba/topics – Slai

関連する問題