【VBA】分離と依存関係の整理|モジュール分割と再利用性を高める設計

モジュールの分割と再利用 ― 共通処理を別モジュールへ

VBAプロジェクトの規模が大きくなってくると、「どのモジュールがどの処理に依存しているのか」が分からなくなり、修正や再利用が難しくなるケースが増えてきます。

これを防ぐために重要なのが、
「分離(モジュール分割)」と「依存関係の整理」
です。

この記事では、コードの構造をシンプルに保ち、保守性を高めるための実務的な分離・依存管理の考え方を解説します。


スポンサーリンク

1. 分離(Separation)の基本 ― 役割ごとに分ける

モジュール分割の基本方針は “役割ごとに別モジュールにする” という考え方です。

● 分離のメリット

  • どの処理がどこにあるか一目でわかる
  • 修正すべき箇所を迷わない
  • 他モジュールへの影響が少なくなる
  • 再利用しやすくなる
  • テストがしやすくなる

● 推奨される分類例

実務では、次のような分類が使いやすいです。

種別内容
共通ユーティリティ汎用的な処理modCommon, modUtil
データ加工系データ変換・整形modData
画面制御(UI)MsgBox や入力制御modUI
Excel操作範囲・シート操作modExcel
定数・設定値定数定義modConst
業務ロジック業務特化処理modSales, modImport

目的別に分離しておくことで、保守のしやすさが劇的に向上します。


スポンサーリンク

2. 依存関係(Dependency)とは?

依存関係とは、
「あるモジュールが他のモジュールの関数や変数に依存している状態」
のことです。

● 依存の例

modSales → modExcel の CopyRange 関数を使う
modSales → modCommon の SafeTrim を使う

このような関係は自然なものですが、依存が複雑になると次のような問題が起きます。


スポンサーリンク

3. 依存関係が複雑だと起こる問題

● 修正時の影響範囲が読めない

A を直したら B が壊れ、さらに C が壊れ…
という“連鎖バグ”が発生しやすくなります。

● モジュール間の関係が把握しづらくなる

特に昔のコードや引き継ぎ案件で発生しやすい問題です。

● 再利用が困難になる

別ブックに移植しようとしても、依存モジュールが多すぎて面倒になります。


スポンサーリンク

4. 理想は「下層 → 上層」の一方向依存

依存を整理する際の基本ルールは:


✔ 下層(共通処理) → 上層(業務処理)という一方向構造にする


● 例

  • 下層:modCommon(汎用処理)
  • 下層:modExcel(Excel操作)
  • 上層:modSales(業務ロジック)

modSales は modExcel / modCommon を使うが、
modExcel が modSales を使うことはない。

この形を維持すると、構造が極めて健全になります。


スポンサーリンク

5. 上層モジュールが下層に依存しないための工夫

● ① 下層モジュールに業務コードを混ぜない

共通処理に「顧客番号チェック」「売上計算」など業務ロジックを入れない。

● ② 変数・定数を Public で乱用しない

Public だらけだと依存が増え、どこから変更されるかわからなくなる。

● ③ “Excel操作”と“業務処理”を分ける

データ編集と画面処理が混ざると依存関係が複雑になる。


スポンサーリンク

6. 依存関係を減らすためのサンプル設計

● modCommon(下層:共通処理)

Function SafeTrim(ByVal target As Variant) As String
    If IsError(target) Then
        SafeTrim = ""
    Else
        SafeTrim = Trim(CStr(target))
    End If
End Function

● modExcel(下層:Excel操作)

Sub CopyRange(src As Range, dest As Range)
    dest.Value = src.Value
End Sub

● modSales(上層:業務処理)

Sub ImportCustomerData()
    Dim name As String
    name = SafeTrim(Range("A1").Value)
    
    CopyRange Range("A1"), Range("B1")
End Sub

上層が下層を呼び出すだけなので構造はスッキリします。


スポンサーリンク

7. “依存の逆流”を防ぐ最大のポイント


✔ 業務ロジックを下層の共通モジュールに書かないこと


これを守るだけで依存関係の整ったプロジェクトになります。


スポンサーリンク

8. まとめ

「分離」と「依存関係の整理」は、実務で VBA を長く運用していく上で最重要テーマの一つです。

● 本記事のポイント

  • モジュールは目的ごとに分離する
  • 依存は「下層 → 上層」に一方向が理想
  • 共通モジュールに業務処理を書かない
  • Public の乱用は依存悪化の原因
  • 依存を意識すると再利用性が大幅アップ

コメント

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