Excel VBAでセルのデータを別シートに反映する方法

Visual Basic

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

主な問題点は、rowclmの型を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初心者でもこの方法を試してみることで、シート間のデータ操作に慣れることができます。

コメント

タイトルとURLをコピーしました