【VBA】エクセルにVBAで数式を入力する

エクセルVBAでよく使うコードの備忘録。VBAでエクセルに数式を入力する際の注意点について。

スポンサーリンク

事前準備

特になし。

数式を入力する

エクセルのセルに数式を入力するのはそれほど難しいことではありません。実際にキーボードから入力するのと同じように、セルのFormulaプロパティに数式(例えば、”=A1+A2″みたいなもの)を設定します。この時必ず「=」を設定する値に含めるようにします。

ちなみに、正確に設定するにはセルのFormulaプロパティを使うのが正しいですが、Valueプロパティやセル自体に数式を設定してもエクセルでは正しく処理してくれます。

数式をVBAから設定する際の注意点は、入力先のセルの書式が「文字列」になっていると設定した値が数式ではなく文字列として出力されてしまう点です。この点を回避するため、VBAからセルに数式を入力する際は必ず入力先のセルの書式もセットで変更するようにしましょう。セルの書式としては、デフォルトの「G/標準」で大丈夫です。

サンプルコード

セルに数式を設定するサンプルコードです。いくつかの方法で数式を設定しています。コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

Public Sub SetFormula()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- Formulaプロパティに数式を設定 ---'
    ws.Cells([行番号], [列番号]).NumberFormatLocal = "G/標準"
    ws.Cells([行番号], [列番号]).Formula = "[数式(=A1+B1など)]"
    
    '--- Valueプロパティに数式を設定 ---'
    ws.Cells([行番号], [列番号]).NumberFormatLocal = "G/標準"
    ws.Cells([行番号], [列番号]).Value = "[数式(=A1+B1など)]"
    
    '--- Cellに数式を設定 ---'
    ws.Cells([行番号], [列番号]).NumberFormatLocal = "G/標準"
    ws.Cells([行番号], [列番号]) = "[数式(=A1+B1など)]"
    
    '--- Rangeに数式を設定 ---'
    ws.Range("[セルのアドレス]").NumberFormatLocal = "G/標準"
    ws.Range("[セルのアドレス]").Formula = "[数式(=A1+B1など)]"
    
End Sub