セルの式をコピーする
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/
上記以外にも、様々な方法でセルの式をコピーすることができます。状況に合わせて適切な方法を選択してください。
この記事が気に入ったらサポートをしてみませんか?