【VBA入門】マジックナンバーを卒業して「定数(Const)」で修正時間を削減しよう!

【業務効率化】VBA
スポンサーリンク

「あぁ……またレイアウト変更か……」

現場で働いていると、こんなボヤキが聞こえてきます。

「列が一つ増えたから、マクロの『5』って書いてあるところを全部『6』に書き直して!」なんて頼まれた日には、もう大変。100箇所くらいある「5」を一つずつ探し、冷や汗をかきながら修正する……。

私も初心者の頃、これをやって大失敗しました。

一括置換で「5」を「6」に変えたら、列番号じゃない「5(消費税率など)」まで書き換わってしまい、計算がめちゃくちゃに。苦い思い出です(笑)。

そんな悲劇を防ぎ、修正時間短縮してくれるのが、今回紹介する「Const(定数)」です。

【業務効率化】VBAの記事を見る

「定数」は、絶対に変わらない「名前付きラベル」

プログラミングの世界には「変数」と「定数」があります。

  • 変数: 中身がコロコロ変わる箱(例:今日の売上、ループの回数)
  • 定数(Const): 一度決めたら絶対に変えないラベル(例:消費税率、データの開始行、列番号)

例えるなら、変数は「筆箱(中身が入れ替わる)」で、定数は「教室の座席表(誰がどこに座るか決まっている)」のイメージです。

なぜ「そのまま数字」を書いてはいけないのか?

コードの中に直接「5」や「1.1」といった数字を書くことを、専門用語でマジックナンバーと呼びます。

書いた本人にしか意味がわからず、後から見ると「呪文(マジック)」のように意味不明になるからです。

そこで「Const」という名前のラベルに置き換えます。これだけで、コードの読みやすさが劇的に変わります。

【実践】コピペでOK!定数を使ったビフォーアフター

例えば、「5列目(E列)にある金額に、消費税10%を掛けて計算する」コードで比較してみましょう。

❌ 良くない例(後々修正が大変になってしまうコード)

Sub SampleBad()
    ' 5列目が金額、1.1が税込み。意味を知らない人が見ると「?」となります
    Cells(2, 6).Value = Cells(2, 5).Value * 1.1
End Sub

⭕ 良い例(定数を使ったコード)

Sub SampleGood()
    ' --- 定数の宣言 ---
    Const TAX_RATE As Double = 1.1      ' 消費税率
    Const COL_PRICE As Integer = 5     ' 金額が入っている列(E列)
    Const COL_TOTAL As Integer = 6     ' 計算結果を出す列(F列)
   
    ' --- 実際の処理 ---
    Cells(2, COL_TOTAL).Value = Cells(2, COL_PRICE).Value * TAX_RATE
End Sub

名前がついているので、一目で何をしているかが分かりますね。

定数を使う3つの大きなメリット

  1. 修正が「1箇所」で済む
    もし列が5列目から10列目に変わっても、一番上の COL_PRICE = 5 を 10 に変えるだけ。それ以降の処理を触る必要はありません。
  2. ミスが減る
    サンプルはわずか数行ですが、数百~数千行のコードになっても、その中から該当する「5」を検索して置換する手間がなくなり、関係ない数字を書き換えるリスクがゼロになります。
  3. メンテナンス性の向上
    読みやすいコードになるので、6ヶ月後、12か月後の自分や他人がコードを見たときでも、「この1.1って何だっけ?」と悩む時間をゼロにできます。

慣れないうちは、変数を使うことだけでいっぱいいっぱいかと思いますが、VBAに限らずたいていのプログラミング言語では定数を使えますので、ぜひ試してみてください。

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました