【Excelマクロ】よく使う定数をまとめて定義する方法(Const)

VBAで処理を組んでいると、同じ値を何度もコードの中で使う場面が出てきます。

たとえば「税率は10%」「書き込み先はシート名『データ』」「完了メッセージは『処理が終わりました』」など、決まった値を何度も使うときには、定数(Const)として定義するのが便利です。

定数を使えば、あとから値を変えたいときにも一か所を直すだけで済みますし、コードの意味もわかりやすくなります。
今回は、そんな「Const」を使った定数の管理方法について紹介します。

Const の基本的な書き方と使い方

定数は Const を使って次のように書きます。

Const 消費税率 As Double = 0.1
Const SheetName As String = "データ"
Const MsgComplete As String = "処理が完了しました。"

定数は基本的に プロシージャの外側(モジュールの先頭など) に記述することで、モジュール全体で使えるようになります。

この定数を使ったマクロの例はこちらです。

Sub CalcTax()

    Dim ws As Worksheet
    Set ws = Worksheets(SheetName)

    Dim i As Long
    For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
        ws.Cells(i, 3).Value = ws.Cells(i, 2).Value * (1 + 消費税率)
    Next i

    MsgBox MsgComplete

End Sub

このように定数を使うことで、「何の値なのか」がコードからすぐにわかるだけでなく、値の変更にも強くなります。

定数をまとめておくと便利なケース

定数は次のような場面で特に効果を発揮します。

  • 税率、手数料など、将来的に変更の可能性がある数値
  • 「完了しました」などのよく使うメッセージ文言
  • 「Sheet1」「印刷用」などのシート名
  • 「A列が商品名」「B列が単価」などの列番号や列位置
  • 参照するフォルダパスやテンプレートファイル名など

たとえば、こんな定義もできます。

Const ColProduct As Long = 1
Const ColPrice As Long = 2
Const ColTotal As Long = 3

こうすれば、次のように書いたコードの意味も、見ただけでわかりやすくなります。

ws.Cells(i, ColTotal).Value = ws.Cells(i, ColProduct).Value & ":" & ws.Cells(i, ColPrice).Value

こうすることでそれぞれの列を固定させることができます。

ポイント

  • 定数は読み取り専用で、途中で値を書き換えることはできません
  • モジュール内でまとめて管理することで、保守性が上がります
  • 名称の付け方は「意味が伝わること」を重視すると効果的です

実装するメリット

定数を使うことで、VBAコードはより明確で、柔軟で、ミスの少ないものになります。

具体的には、次のようなメリットがあります。

  • 同じ値を何度も書かなくて済むため、修正時に見落としがなくなる
  • 変更が一か所で済むので、メンテナンスが簡単
  • コードの意味が明確になるため、読みやすくミスが起きにくい
  • 決められた値(ルール)を使っていることが明示的になる

特に、「仕様変更に対応できるコードを書く」という観点では、定数の活用はとても重要なテクニックになります。

定数と変数の違い

「Constにする意味ある?変数じゃダメ?」と思われるかもしれません。
ここでは定数と変数の違いを簡単に整理しておきます。

項目Const(定数)Dim(変数)
値の変更できない(固定)できる(後から代入可)
宣言方法Const x = 100Dim x As Long
使う場面常に変わらない値処理中に変わる値

定数を使う最大の目的は、「意図せず値を変えてしまうのを防ぐこと」です。

そのため、税率やシート名のように途中で変えてはいけない値はConstで管理した方が安全です。

もし Dim で宣言した変数を使っていた場合、処理の途中でうっかり値を書き換えてしまうこともあります。

Dim 税率 As Double
税率 = 0.1

' 後でうっかり変更
税率 = 0.2 ' 意図しないエラーの元に

このような事故を防ぐためにも、定数と変数は使い分けるようにしましょう。

まとめ

VBAでは、数値や文字列などの「決まった値」を直接コードに書くのではなく、Const(定数)として定義しておくことで、管理がしやすくなります。

  • 税率やシート名などの変わりうる情報は定数でまとめる
  • 定数名には意味のある名前をつけ、コードの読みやすさを高める
  • モジュールの冒頭でまとめて定義しておくと、保守がしやすい
  • 変数との違いを意識し、値を変えないものはConstで固定する

コードが短いうちは気にならなくても、処理が増えるほど「定数にしておいてよかった」と思う場面が必ず出てきます。

ぜひ、自分のよく使う値を「Const」で管理して、整理された書きやすいVBAコードを目指してみてください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール