見出し画像

セルの式をコピーする

 Excel VBAでセルの式をコピーするには、主に以下の2つの方法があります。

方法1:RangeオブジェクトのCopyメソッドとPasteSpecialメソッドを使う

 コピー元のセル範囲をRangeオブジェクトで取得します。
 Copyメソッドを使って、コピー元のセル範囲をコピーします。
 コピー先のセル範囲をRangeオブジェクトで取得します。
 PasteSpecialメソッドを使って、コピーしたセル範囲を式のみで貼り付けます。
 以下のコードは、A1セルの式をB1セルにコピーする例です。

VBA
Sub CopyFormula()

' コピー元のセル範囲を取得
Dim rngCopyFrom As Range
Set rngCopyFrom = Range("A1")

' コピー
rngCopyFrom.Copy

' コピー先のセル範囲を取得
Dim rngCopyTo As Range
Set rngCopyTo = Range("B1")

' 式のみ貼り付け
rngCopyTo.PasteSpecial xlPasteFormulas

End Sub
コードは注意してご使用ください。

方法2:CellsプロパティのFormulaプロパティを使う

 コピー元のセルのCellsプロパティとFormulaプロパティを使って、式を取得します。
 コピー先のセルのCellsプロパティとFormulaプロパティを使って、式を設定します。
 以下のコードは、A1セルの式をB1セルにコピーする例です。

VBA
Sub CopyFormula()

' コピー元のセルの式を取得
Dim strFormula As String
strFormula = Cells(1, 1).Formula

' コピー先のセルに式を設定
Cells(1, 2).Formula = strFormula

End Sub
コードは注意してご使用ください。

補足

 上記のコードは、単一のセルをコピーする場合の例です。
 範囲をコピーしたい場合は、ループ処理などを組み合わせてください。
 コピー先のセルにすでに値が入力されている場合は、上書きされます。
 相対参照と絶対参照を考慮する必要があります。
 式をコピーする際に、参照セルがずれないようにする必要があります。

参考情報

1-数式を代入してコピー - 校務支援システムの森
https://system-mori.sakura.ne.jp/nc3/home/excel-vba/formula-copy-vba
【エクセルVBA】指定範囲をコピー&ペーストする - パソコンスクールISA
https://www.isa-school.net/blog/vba-excelvba02/
上記以外にも、様々な方法でセルの式をコピーすることができます。状況に合わせて適切な方法を選択してください。

この記事が気に入ったらサポートをしてみませんか?