VBAテクニック集 VBA一覧 変数・知識 文法・構文

【VBA】Public Constを使用してシート名・セルの値を定数に設定する方法とは

Excel VBAでマクロを作っていると、
シート名やセル番地を文字列で直接書いているコードをよく見かけます。

一見すると問題なく動いているように見えますが、
実務ではこの書き方が原因で、
「修正が大変」「どこを直せばいいか分からない」「気づかないうちに壊れる」
といったトラブルが頻発します。

こうした問題を根本から防ぐために有効なのが、
Public Const を使って値を“定数化”する設計です。

この記事では、
Public Const の基本から、
シート名・セル値を定数として管理する実務的な使い方、
そして「なぜこの書き方が保守性を高めるのか」まで、
設計目線で丁寧に解説します。

✅ なぜシート名やセル番地を直書きすると危険なのか

VBA初心者〜中級者のコードで特に多いのが、
以下のような書き方です。

Worksheets("売上データ").Range("B2").Value = 100

このコード自体は正しく動きます。
しかし、実務ではこの書き方が積み重なるほど危険になります。

なぜなら、
・シート名が変更された
・列構成が変わった
・複数マクロで同じ値を使っている

といった変更が入った瞬間、
修正箇所をすべて探し回る必要が出てくるからです。

ここを理解せずにマクロを増やしていくと、
「動くけど怖くて触れないマクロ」になってしまいます。


✅ Public Constとは何か(基本の考え方)

Public Const は、
VBA全体で共有できる「変更されない値」を定義するための仕組みです。

重要なのは、
「単に定数を作れる」ことではなく、
設計意図をコードで表現できる点にあります。

・Public Constの基本構文

Public Const SHEET_SALES As String = "売上データ"

この1行だけで、

  • この値は変更されない
  • VBAプロジェクト全体で使われる
  • 意味のある名前が付いている

という情報を、コード自体が語ってくれます。


✅ シート名をPublic Constで管理するメリット

シート名は、
Excel運用の中で変更されやすい要素の代表例です。

・シート名を定数化する基本例

Public Const SHEET_SALES As String = "売上データ"
Public Const SHEET_MASTER As String = "商品マスタ"

これを使う側では、次のように書きます。

Worksheets(SHEET_SALES).Range("A1").Value = "更新完了"

・なぜこの書き方が強いのか

もしシート名が
「売上データ」→「売上一覧」に変わった場合でも、
修正箇所は定数定義の1か所だけです。

これは単なる時短ではなく、
保守性と安全性の向上につながります。


✅ セル番地・固定値をPublic Constで管理する考え方

Public Const は、
シート名だけでなく、セル番地や固定値の管理にも向いています。

・セル番地を定数化する例

Public Const CELL_TOTAL As String = "B10"
Public Const CELL_START_ROW As Long = 2

これを使うことで、
コードは次のように「意味を持った形」になります。

Range(CELL_TOTAL).Value = 100

単なる "B10" よりも、
「合計セルに値を入れている」ことが一目で分かります。


✅ ConstとDimの違いを意識した設計

ここで重要なのが、
「なぜ Dim ではなく Const なのか」という視点です。

・Constが向いている値

  • 絶対に変更されない
  • 業務ルールとして固定
  • プログラムの前提条件

・Dimが向いている値

  • 処理中に変化する
  • 計算結果
  • 一時的な作業用データ

この線引きを意識すると、
コードの役割分担が明確になります。


✅ Public Constはどこに書くべきか

Public Const は、
標準モジュール(Module) にまとめて記述するのが基本です。

・定数専用モジュールを作る設計

' Module: ConstDefinition

Public Const SHEET_SALES As String = "売上データ"
Public Const SHEET_MASTER As String = "商品マスタ"
Public Const CELL_TOTAL As String = "B10"

こうしておくことで、

  • 定数の一覧性が高い
  • 仕様変更に強い
  • 他人が読んでも理解しやすい

というメリットが得られます。


✅ 実務でよくある失敗と回避策

Public Const を使う際、
次のような失敗もよく見られます。

・意味のない名前を付けてしまう

Public Const STR1 As String = "売上データ"

これでは、
何を表している定数なのか分かりません。

「どこで」「何として」使われるかが分かる名前を付けることが重要です。

・変更される値をConstにしてしまう

設定値やユーザー入力値は、
Const に向いていません。

「将来変わる可能性があるか?」
を基準に判断しましょう。


✅ 応用:Public Constは“設計メモ”として使える

Public Const の最大の価値は、
コードそのものが設計書になる点です。

  • このシートは重要
  • このセルは業務上の基準点
  • この値は変えてはいけない

そうした判断を、
コメントではなく「コード構造」で表現できます。

これは、
長く使われる業務マクロほど効いてくる設計です。

Public Const を「設計メモ」として使えるようになると、
マクロを書く前に「どこが固定で、どこが変わるのか」を考える癖がつきます。
逆に、この設計を考えないまま
「とりあえず動くVBA」を積み上げてしまうと、
後から修正や拡張が難しい業務になりがちです。
そうした失敗が起きやすい業務パターンと、
設計で分かれる判断ポイントについては、こちらで詳しく整理しています。
「とりあえずVBA」が危険になる業務パターンと設計の分かれ道


 

✅ まとめ:Public Constは保守性を劇的に高める

  • シート名・セル番地の直書きは将来の負債になる
  • Public Const を使うと修正箇所を一元化できる
  • コードの意味が読みやすくなる
  • 設計意図をコードで表現できる
  • 実務マクロほど効果が大きい

Public Const は、
派手なテクニックではありません。

しかし、
「長く使われるマクロ」「他人が触るマクロ」ほど、
この差が確実に効いてきます。

今書いているマクロが
半年後・1年後も使われる可能性があるなら、
ぜひ一度、定数化の設計を見直してみてください。

    -VBAテクニック集, VBA一覧, 変数・知識, 文法・構文