【脱・初心者】「Module1」だらけの汚部屋を卒業!3秒で変わるVBA整理術

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

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

突然ですが、VBE(VBAの編集画面)を開いて、「Module1」「Module2」……と、意味不明な名前の標準モジュールが並んで絶望したこと、ありませんか?

「あれ? 請求書作成のマクロ、どこに書いたっけ?」と探す時間、もったいないですよね。

実は、モジュールの整理整頓は、プログラミングの上達においてコードを書くこと以上に重要です。

今日は、あなたのVBEを「汚部屋」から「モデルルーム」に変える方法をお伝えします。

なぜ「名前」にこだわるのか?

理由は単純。「3秒の手間で、未来の30分を節約するため」です。

標準の「Module1」という名前は、いわば「書類」と書かれただけの段ボール箱です。中身を開けないと分かりません。これでは、トラブルが起きた時に原因を探すだけで日が暮れてしまいます。

Microsoftの公式ドキュメントでも、モジュール名などの要素名には「255文字以内で、わかりやすい名前をつけること」が推奨されています 1

今日から使えるベストプラクティス

これだけ守ればOK!という鉄則を紹介します。

  1. 接頭辞(プレフィックス)をつける
    モジュール名の頭に「何の種類のファイルか」を示す記号をつけます。
    • 標準モジュール:mdl_ (または m_)
    • クラスモジュール:cls_ (または c_)
    • 例:mdl_InvoiceCalc(請求書計算用モジュール)
  2. 1モジュール 1テーマ
    「なんでもボックス」を作らず、機能ごとにモジュールを分けましょう。
  3. 使わないモジュールは即削除
    「いつか使うかも」というコードは、テキストファイルに退避して、VBAプロジェクトからは削除しましょう。容量も軽くなり、動作も安定します。

【コピペOK】一瞬でモジュール整理する魔法のコード

とはいえ、手作業での追加・削除は面倒ですよね。

そこで、「指定した名前で標準モジュールを新規作成する」&「指定したモジュールを削除する」便利なコードを紹介します。

' ==============================================
' 機能:指定した名前で標準モジュールを作成するツール
' ==============================================

Sub CreateNamedModule()
    ' 新しいモジュール名をここで指定
    Dim newModuleName As String
    newModuleName = "mdl_SalesData"
   
    ' すでに同名がないかチェック(簡易版)
    On Error Resume Next
    Dim temp As Object
    Set temp = ThisWorkbook.VBProject.VBComponents(newModuleName)
    If Not temp Is Nothing Then
        MsgBox "その名前のモジュールは既に存在します!", vbExclamation
        Exit Sub
    End If
    On Error GoTo 0
   
    ' モジュールを追加して名前を変更
    ' vbext_ct_StdModule の値は 1 です
    Dim vbc As Object
    Set vbc = ThisWorkbook.VBProject.VBComponents.Add(1)
    vbc.Name = newModuleName
   
    MsgBox "モジュール [" & newModuleName & "] を作成しました!", vbInformation
End Sub

' ==============================================
' 機能:指定した名前で標準モジュールを削除するツール
' ==============================================
Sub DeleteTargetModule()
    ' 削除したいモジュール名をここで指定
    Dim targetName As String
    targetName = "Module1" ' ←消したい名前に書き換えてください
   
    On Error Resume Next
    Dim vbc As Object
    Set vbc = ThisWorkbook.VBProject.VBComponents(targetName)
   
    If vbc Is Nothing Then
        MsgBox "そのモジュールは見つかりませんでした。", vbExclamation
        Exit Sub
    End If
   
    ' 削除実行
    ThisWorkbook.VBProject.VBComponents.Remove vbc
    MsgBox "モジュール [" & targetName & "] を削除しました。", vbInformation
    On Error GoTo 0
End Sub

最後に

最初は「面倒だな」と思うかもしれません。でも、きれいな部屋で仕事をすると効率が上がるように、きれいなコード環境はあなたのミスを劇的に減らしてくれます!


出典:

  1. Microsoft Learn Visual Basic の名前付け規則 ↩︎


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

この記事を書いた人
ぐー

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

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

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

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

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

コメント

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