セル範囲の内容だけを違う範囲に貼り付ける~Excel VBA 3行マクロ

セル範囲の中身だけを違う範囲に貼り付ける

セルの中身だけ取り出す

3行マクロ 45回

3行マクロ講座 45回 セル範囲の内容だけを違う範囲に貼り付ける

書式はコピーしないで、内容だけをコピーして貼り付けるという作業を簡単にします。
それには、形式を選択して貼り付けの、値の貼り付けを行うのではなく、FormulaR1C1プロパティでセル範囲の内容を表し、それを他の範囲に代入してしまうのです。
~(サンプルファイルは、こちらから 3行マクロ45回サンプルデータ
Excelバージョン:Excel2016201320102007

FormulaR1C1プロパティでセルの内容を取り出す

Formulaプロパティ、FormulaR1C1プロパティは、セルに数式を入力したり、または入力されている数式を取得するプロパティです。
今回は数式もコピーするため、R1C1形式でセル参照する、FormulaR1C1プロパティを使います。
もとのセル範囲Range("B2:E25")の内容をFormulaR1C1で取得し、貼り付け先のRange("H2:K25")に代入します。

代入すると言っても、実はコードをイコールでつなげるだけ。
セル範囲の内容だけを違う範囲に貼り付けるマクロのコードは、
Sub 数式や値を別の範囲に貼り付け()
    Range("H2:K25").FormulaR1C1 = Range("B2:E25").FormulaR1C1
End Sub
実行すると、セルの内容が相対参照で代入されます。
貼り付けられた数式が、貼り付け先に応じて変化しているので、元表部分を削除したとしても数式にエラーがでることはありません。

イミディエイトウィンドウで実行する

イミディエイトウィンドウで実行する時は、コードを簡略化した記述で実行できます。
Sub マクロ名()~ End Sub を書かないだけでも楽ですね。
    [H2:K25] = [B2:E25].formular1c1

[H2:K25] = [B2:E25].formular1c1

今日の講義は以上です。お疲れ様でした。

こちらもおすすめ