Excel VBAを使って、異なるシートのセル範囲をコピーする方法を解説します。質問者の方が直面している問題に対して、正しいコード例と解説を提供します。
Excel VBAでシート間のセルデータをコピーする方法
Excel VBAでは、特定のシートから別のシートへセルデータをコピーするのは一般的な操作の一つです。質問者が試したコードに少し問題があり、それを修正することでうまくいきます。以下のコードを使って、シート間で指定したセル範囲をコピーする方法を紹介します。
問題のコードと修正方法
質問者のコードには、いくつか修正すべきポイントがあります。
dim row as Integer
dim clm as Integer
row = 1
clm = 1
Do Until Worksheets("B").Cells(row, 1).Value = ""
Worksheets("A").Cells(row, clm).Value = Worksheets("B").Cells(row, clm).Value
row = row + 1
Loop
主な問題点は、rowやclmの型をstringにしてしまっていることです。これらは数値なのでInteger型にする必要があります。また、コード内で正しいセル参照が行われるように、シート名やセルの範囲を明確にしておくことが重要です。
正しいコード例
以下が修正した正しいコード例です。このコードでは、シートBのセルA1からC3までをシートAの同じ位置に反映します。
dim row as Integer
row = 1
Do Until Worksheets("B").Cells(row, 1).Value = ""
Worksheets("A").Cells(row, 1).Value = Worksheets("B").Cells(row, 1).Value
Worksheets("A").Cells(row, 2).Value = Worksheets("B").Cells(row, 2).Value
Worksheets("A").Cells(row, 3).Value = Worksheets("B").Cells(row, 3).Value
row = row + 1
Loop
このコードでは、シートBのセル範囲をシートAに反映させるために、セルを1列ずつコピーしています。これで、質問者の希望通りにシート間でデータが反映されます。
まとめ
Excel VBAを使用してシート間のセルデータをコピーする方法について解説しました。シート名やセル範囲を正確に指定し、Integer型を使用することで、エラーを回避し、意図した通りにデータを転送できます。VBA初心者でもこの方法を試してみることで、シート間のデータ操作に慣れることができます。


コメント