【脱・修正地獄】VBAで「列挿入で動かない…」と困らないための対処法

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

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

突然ですが、こんな想像をしたことはありませんか?

  • 「一生懸命書いたマクロが、誰かが行を追加したせいで動かなくなった…」
  • 「エラーの原因を探したら、セルの場所がずれていただけだった…」

終わってみれば大したことないんですが、それまでが大変なんですよね。

今日は、そんな「セルの位置ずれによるエラー」を0(ゼロ)にするテクニックの1つ「セルの名前定義」を紹介します。

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

「場所」ではなく「名前」で呼ぶ

通常、VBAでセルを指定するときは、以下のように書くことが多いですよね。

Range("B2").Value = 100

これ、「B列の2行目」という「住所」を指定しています。

でも、もし誰かがA列に行を挿入したら?B2にあったデータはC2に移動してしまいます。

すると、VBAは空っぽになった新しいB2を見に行き、「あれ?データがない!」とエラーや計算ミスを起こすのです。

これを防ぐ方法の1つが今回紹介する「名前定義」です。

セルに特定のあだ名(名前)をつけておけば、そのセルがどこに移動しても、VBAは必ずそのあだ名を追いかけてくれます。

たった3秒!設定は超かんたん

VBAを書く前に、Excelシート上で準備をします。

  1. 名前をつけたいセルを選択する(例:消費税率が入っているセル)。
  2. 数式バーの左にある「名前ボックス」をクリックする。
  3. 好きな名前(例:TaxRate)を入力してEnterキーを押す。

これで、そのセルはもう「B2」ではなく「TaxRate」という固有の存在になりました。

VBAでの書き方(コピペOK)

では、実際にVBAでどう書くか見てみましょう。

とても直感的になります。

×セルを指定する書き方

Sub OldStyle()
    Dim tax As Double
    tax = Range("B2").Value
    MsgBox "現在の税率は " & tax & " です"
End Sub

B2が消費税率だなんて、このコードからは読み取れませんよね

◎ 名前定義を使った書き方

Sub NewStyle()
    Dim tax As Double
    tax = Range("TaxRate").Value
    MsgBox "現在の税率は " & tax & " です"
End Sub


いかがでしょうか?

Range(“名前”) と書くだけ。ダブルクォーテーションで囲む必要があります。

これだけでTaxRateという名前なら、セルがどこに移動しても大丈夫です。

この方法のメリット

この「名前定義」を使うと、以下のメリットがあります。

  • メンテナンス時間:ほぼ0秒
    レイアウト変更があってもコードを書き直す必要がありません。
  • コードの可読性:120%アップ
    Range(“C5”) よりも Range(“GokeiKingaku”) の方が、何をしているか一目瞭然ですよね。

最後に

「いかに自分が楽をするか」「いかにミスを防ぐか」を考えて、こういう地味な機能を使うことが多いです。

最初は「B2」と書く方が早く感じるかもしれません。

でも、未来の自分や他人がメンテナンスする際に冷や汗をかかないために、よければ「名前定義」を使ってみてください。

「言われた通りに作るだけ」から「運用まで考えられる」への第一歩になるはずです。

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


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

この記事を書いた人
ぐー

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

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

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

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

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

コメント

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