【VBA】Rangeで複数のセルを選択して値を取得する

単一Cellの値をコピーする

まずは単一Cellの場合です。
単一Cellの値を取得して他のCellにコピーするには以下のように指定します。
Valueを取得して代入するだけなので特に難しいことはありませんね。

With Workbooks("Book1.xlsm").Worksheets("Sheet1")
    .Range("B1").Value = .Range("A1").Value
End With

複数Cellの値をコピーする

複数Cellの値を取得して他のCellにコピーするには少し工夫が必要になります。

.Range("A1:A5").Value
とすることで範囲内の値を取得することができます。

ただし、これをそのまま

.Range("B2").Value = .Range("A1:A5").Value
としても最初の1セルの値しかコピーされません。

これは.Rangeで取得した値が配列になっているからです。

配列として取得した値をループで1つずつ展開していくことで、範囲内の全てのデータをコピーすることができます。

以下のようにして取得した配列をループすることで値を全て取得することができます。

With Workbooks("Book1.xlsm").Worksheets("Sheet1")
    .Range("B2").Value = ""
    
    For Each v In .Range("A1:A5").Value
        .Range("B2").Value = .Range("B2").Value + v
    Next
    
End With

ごくごく基本的な内容ですが、初心者の方は躓くポイントになるかもしれませんので残しておきます。

おしまい。