PR

Access VBA逆引き集|Enum(列挙型)を活用して保守性を向上させる実践テクニックとCopilot活用術

VBA

Access VBAで業務システムを開発していると、

  • ステータス管理が分かりにくい
  • 数値の意味が分からなくなる
  • マジックナンバーが増える
  • 保守担当者が困る
  • Copilotが生成したコードの意味が読み取りにくい

といった問題が発生します。

Enum(列挙型)を活用することでコードの可読性と保守性を大幅に向上できます。

特に受注管理、設備管理、ワークフロー管理など、状態管理を行うシステムでは絶大な効果があります。実際に長期運用される業務システムほどEnumが活用されています。


スポンサーリンク

Enum(列挙型)とは

Enumは数値に名前を付ける機能です。

例えば、

1 = 受付

2 = 処理中

3 = 完了

と定義できます。


なぜEnumが重要なのか

初心者が書きがちなコードです。

If lngStatus = 3 Then

  MsgBox "完了"

End If

問題点

3の意味が分からない

ことです。


Enumを利用した場合

If lngStatus = enmComplete Then

  MsgBox "完了"

End If

意味がすぐ分かります。


基本構文

Public Enum StatusType

enmReception = 1

enmProcessing = 2

enmComplete = 3

End Enum

標準モジュールへ記述します。


逆引き① ステータス管理したい

最も利用頻度が高い例です。

Public Enum OrderStatus

enmOrder = 1

enmShipping = 2

enmComplete = 3

End Enum

利用

lngStatus = enmShipping

逆引き② Select Caseと組み合わせたい

実務で定番です。

Select Case lngStatus

Case enmOrder

  MsgBox "受付"

Case enmShipping

  MsgBox "出荷"

Case enmComplete

  MsgBox "完了"

End Select

効果

とても読みやすくなります。


逆引き③ エラー区分を管理したい

エラーハンドリングです。

Public Enum ErrorType

enmFileNotFound = 1

enmDataError = 2

enmDbError = 3

End Enum

利用

If lngError = enmDbError Then

End If

逆引き④ ログレベルを定義したい

ログ管理です。

Public Enum LogLevel

enmInfo = 1

enmWarning = 2

enmError = 3

End Enum

逆引き⑤ 設備状態を管理したい

設備管理システムです。

Public Enum EquipmentStatus

enmNormal = 1

enmAttention = 2

enmAbnormal = 3

End Enum

利用

If lngStatus = enmAbnormal Then

End If

マジックナンバーをなくす

保守改善の代表例です。


悪い例

If lngLevel = 2 Then

良い例

If lngLevel = enmWarning Then

効果

意味が分かる

修正しやすい

レビューしやすい

となります。


実務活用例① 受注管理システム

状態管理です。

Public Enum OrderStatus

enmAccept = 1

enmPicking = 2

enmShipping = 3

enmComplete = 4

End Enum

利点

処理フローが明確になります。


実務活用例② CSV取込システム

取込結果管理です。

Public Enum ImportResult

enmSuccess = 1

enmWarning = 2

enmError = 3

End Enum

判定

If lngResult = enmError Then

End If

実務活用例③ 設備管理システム

点検結果管理です。

Public Enum CheckResult

enmOK = 1

enmNG = 2

enmHold = 3

End Enum

効果

誤判定を減らせます。


実務活用例④ ログ出力

ログ分類です。

Public Enum LogType

enmInfo = 1

enmWarning = 2

enmError = 3

End Enum

出力

Call WriteLog(enmError)

実務活用例⑤ 権限管理

利用者管理です。

Public Enum UserRole

enmGuest = 1

enmUser = 2

enmAdmin = 3

End Enum

判定

If lngRole = enmAdmin Then

End If

EnumとConstの違い

初心者が迷うポイントです。


Const

Public Const STATUS_COMPLETE = 3

Enum

Public Enum StatusType

enmComplete = 3

End Enum

おすすめ

状態管理はEnumの方が管理しやすいです。


Select Caseとの相性が抜群

例えば、

Select Case lngStatus

Case enmReception

Case enmProcessing

Case enmComplete

End Select

非常に読みやすくなります。


ベテラン開発者の定番パターン

よく見かける構成です。

Option Explicit

Public Enum ProcessStatus

enmStart = 1

enmRunning = 2

enmComplete = 3

enmError = 9

End Enum

標準モジュールへまとめます。


Copilot活用術① Enum生成

Copilotへの依頼例です。

Access VBAです。

受注管理システム用の

Enumを作成してください。


Copilot活用術② マジックナンバー変換

以下のVBAコードにある

マジックナンバーを

Enumへ変換してください。


Copilot活用術③ コードレビュー

Enumの定義です。

改善案を教えてください。

保守性向上に役立ちます。


Enum利用時の注意点

名前の重複

同じEnum名は使用できません。


命名ルールを統一する

おすすめです。

enm

プレフィックスを付けます。


状態追加を考慮する

途中追加を想定して設計しましょう。


開発現場での利用頻度

順位用途
1位ステータス管理
2位権限管理
3位ログ管理
4位設備状態管理
5位CSV取込結果管理

中規模以上のシステムでは頻繁に利用します。


Enumを覚えるメリット

次の効果があります。

  • コードが読みやすい
  • 保守しやすい
  • バグを減らせる
  • Copilotのレビュー精度向上
  • チーム開発しやすい

特に長期運用システムで威力を発揮します。


まとめ

Enum(列挙型)はAccess VBA開発において保守性を向上させる非常に有効なテクニックです。

特に

  • ステータス管理
  • CSV取込結果管理
  • 設備管理
  • 権限管理
  • ログ管理

などで大きな効果があります。

またCopilotを活用することで、

  • Enum生成
  • マジックナンバー削減
  • コードレビュー

も効率良く行えます。

派手な機能ではありませんが、ベテラン開発者ほど活用している実践的なテクニックです。Access VBA開発者ならぜひ習得しておきましょう。

Access 実践マスターガイド~仕事の現場で即使える | 今村 ゆうこ |本 | 通販 | Amazon
Amazonで今村 ゆうこのAccess 実践マスターガイド~仕事の現場で即使える。アマゾンならポイント還元本が多数。今村 ゆうこ作品ほか、お急ぎ便対象商品は当日お届けも可能。またAccess 実践マスターガイド~仕事の現場で即使えるもアマ…

コメント

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