Access VBAでシステム開発を続けていると、
- ステータス管理が複雑になってきた
- If文だらけで読みにくい
- 数字の意味が分からなくなった
- 保守担当者が理解できない
- 同じ条件分岐が複数箇所に存在する
といった課題が発生します。
業務システムの状態管理には「Enum+Select Case」の組み合わせが最もおすすめです。
実際に長期間運用されるシステムでは、
- 受注管理
- 設備管理
- CSV取込
- 承認ワークフロー
- 点検管理
などで頻繁に利用されています。
Copilotが生成するコードも、この構成で作ることで格段に分かりやすくなります。
- なぜIf文だけでは限界が来るのか
- Enumを利用する
- Select Caseと組み合わせる
- 逆引き① 受注ステータスを管理したい
- 逆引き② CSV取込結果を管理したい
- 逆引き③ 設備状態を管理したい
- 逆引き④ ログレベルを管理したい
- 逆引き⑤ 権限管理をしたい
- 実務活用例① 顧客管理システム
- 実務活用例② 設備管理システム
- 実務活用例③ 測定管理システム
- 実務活用例④ バッチ処理
- 実務活用例⑤ ワークフロー管理
- マジックナンバーをなくせる
- ベテラン開発者の定番構成
- Case Elseを忘れない
- Copilot活用術① Enum生成
- Copilot活用術② Select Case生成
- Copilot活用術③ マジックナンバー改善
- Enum+Select Caseが向いている処理
- 開発現場での利用頻度
- まとめ
- あなたの会社は大丈夫ですか?
- こんなご相談が増えています
なぜIf文だけでは限界が来るのか
初心者がよく書くコードです。
If lngStatus = 1 Then
MsgBox "受付"
ElseIf lngStatus = 2 Then
MsgBox "処理中"
ElseIf lngStatus = 3 Then
MsgBox "完了"
End If
問題点
1は何?
2は何?
3は何?
が分からないことです。
Enumを利用する
まずは状態を定義します。
Public Enum OrderStatus
enmReception = 1
enmProcessing = 2
enmComplete = 3
End Enum
すると
lngStatus = enmProcessing
のように書けます。
メリット
意味が分かる
レビューしやすい
保守しやすい
になります。
Select Caseと組み合わせる
条件分岐です。
Select Case lngStatus
Case enmReception
MsgBox "受付"
Case enmProcessing
MsgBox "処理中"
Case enmComplete
MsgBox "完了"
End Select
効果
非常に読みやすくなります。
逆引き① 受注ステータスを管理したい
受注システムの定番です。
Enum
Public Enum OrderStatus
enmOrder = 1
enmShipping = 2
enmCompleted = 3
End Enum
分岐
Select Case lngStatus
Case enmOrder
MsgBox "受注"
Case enmShipping
MsgBox "出荷"
Case enmCompleted
MsgBox "完了"
End Select
逆引き② CSV取込結果を管理したい
実務でよく利用します。
Enum
Public Enum ImportStatus
enmSuccess = 1
enmWarning = 2
enmError = 3
End Enum
利用
Select Case lngResult
Case enmSuccess
Case enmWarning
Case enmError
End Select
逆引き③ 設備状態を管理したい
設備管理システムです。
Enum
Public Enum MachineStatus
enmNormal = 1
enmAttention = 2
enmAbnormal = 3
End Enum
判定
Select Case lngStatus
Case enmNormal
Case enmAttention
Case enmAbnormal
End Select
逆引き④ ログレベルを管理したい
ログシステムです。
Public Enum LogLevel
enmInfo = 1
enmWarn = 2
enmError = 3
End Enum
分岐
Select Case lngLevel
Case enmInfo
Case enmWarn
Case enmError
End Select
逆引き⑤ 権限管理をしたい
利用者権限です。
Public Enum UserRole
enmGuest = 1
enmUser = 2
enmAdmin = 3
End Enum
Select Case lngRole
Case enmGuest
Case enmUser
Case enmAdmin
End Select
実務活用例① 顧客管理システム
顧客区分です。
Public Enum CustomerType
enmNormal = 1
enmVip = 2
enmBlack = 3
End Enum
メリット
区分管理が明確になります。
実務活用例② 設備管理システム
点検判定です。
Public Enum CheckResult
enmOK = 1
enmNG = 2
enmHold = 3
End Enum
効果
判定ミス防止
実務活用例③ 測定管理システム
測定結果管理です。
Public Enum Result
enmSafe = 1
enmWarning = 2
enmOver = 3
End Enum
判定
Select Case lngResult
Case enmSafe
Case enmWarning
Case enmOver
End Select
効果
判定ロジックの明確化
実務活用例④ バッチ処理
実行ステータスです。
Public Enum BatchStatus
enmWaiting = 1
enmRunning = 2
enmFinished = 3
enmError = 9
End Enum
活用
運用監視がしやすくなります。
実務活用例⑤ ワークフロー管理
承認フローです。
Public Enum ApprovalStatus
enmDraft = 1
enmRequest = 2
enmApproved = 3
enmReject = 9
End Enum
効果
ワークフローの保守性向上
マジックナンバーをなくせる
悪い例です。
If lngStatus = 3 Then
良い例です。
If lngStatus = enmComplete Then
効果
コードの意味が理解しやすくなります。
ベテラン開発者の定番構成
標準モジュールです。
Option Explicit
Public Enum ProcessStatus
enmStart = 1
enmRunning = 2
enmComplete = 3
enmError = 9
End Enum
利用側です。
Select Case lngStatus
Case enmStart
Case enmRunning
Case enmComplete
Case enmError
End Select
非常に保守しやすい構成になります。
Case Elseを忘れない
重要なポイントです。
Select Case lngStatus
Case enmStart
Case enmRunning
Case enmComplete
Case Else
MsgBox "定義外状態"
End Select
効果
障害調査が容易になります。
Copilot活用術① Enum生成
Copilotへの依頼例です。
Access VBAです。
設備管理システム向けの
Enum定義を作成してください。
Copilot活用術② Select Case生成
以下のEnumに対応した
Select Case文を
作成してください。
Copilot活用術③ マジックナンバー改善
このコードの
マジックナンバーを
Enumへ変更してください。
Enum+Select Caseが向いている処理
特に活躍するのは次の用途です。
- 受注管理
- 顧客区分管理
- 設備管理
- 測定管理
- CSV取込結果管理
- ワークフロー管理
- バッチ処理管理
開発現場での利用頻度
| 順位 | 用途 |
|---|---|
| 1位 | ステータス管理 |
| 2位 | ワークフロー管理 |
| 3位 | 設備状態管理 |
| 4位 | CSV取込結果管理 |
| 5位 | ログレベル管理 |
中規模以上のAccessシステムでは非常によく利用されます。
まとめ
EnumとSelect Caseの組み合わせは、Access VBAの保守性を大きく向上させる実践的なテクニックです。
特に、
- ステータス管理
- 設備管理
- 測定管理
- ワークフロー管理
- CSV取込結果管理
などで大きな効果を発揮します。
まずは次の形を覚えましょう。
Public Enum StatusType
enmStart = 1
enmComplete = 2
End Enum
そして、
Select Case lngStatus
と組み合わせることで、読みやすく保守しやすいコードが実現できます。
Copilotを活用すれば、
- Enum設計
- 分岐処理生成
- マジックナンバー削減
も効率よく進められます。
Access VBAで長く使われる業務システムを開発するなら、ぜひ習得しておきたい設計テクニックです。
あなたの会社は大丈夫ですか?
以下に1つでも当てはまる場合は注意が必要です。
- Accessの担当者が1人しかいない
- VBAの内容を説明できる人がいない
- 設計書が存在しない
- 10年以上改修していない
- エラー発生時に相談先がない
- 担当者が50代以上である
- 後任が決まっていない
2つ以上該当する場合、
システムそのものではなく
保守体制
がリスクになっている可能性があります。
こんなご相談が増えています
- 担当者が退職してしまった
- エラーが発生したが原因が分からない
- VBAを解析してほしい
- Accessを継続利用できるか判断してほしい
- Power Appsへ移行すべきか相談したい
お困りの際はお気軽にご相談ください。

コメント