Access VBAで開発を続けていると、
- 条件分岐が増えて読みづらい
- If文が何重にもネストしてしまう
- 状態ごとに処理を分けたい
- ステータス管理を行いたい
- コードの保守性を向上させたい
といったケースが増えてきます。
複数の条件分岐がある場合はIf文よりSelect Case文を使った方が圧倒的に見やすくなります。
実際に保守が長期間続く業務システムでは、ベテラン開発者ほどSelect Case文を多用しています。Copilotが生成するコードにも頻繁に登場するため、Access VBA開発者は必ず覚えておきたいテクニックです。
- Select Case文とは
- なぜSelect Case文が重要なのか
- 基本構文
- 逆引き① ステータス判定をしたい
- 逆引き② 複数条件をまとめたい
- 逆引き③ 範囲判定をしたい
- 逆引き④ 文字列判定をしたい
- 逆引き⑤ Case Elseを利用したい
- If文との比較
- 実務活用例① 受注管理システム
- 実務活用例② 設備管理システム
- 実務活用例③ CSV取込
- 実務活用例④ エラーコード管理
- 実務活用例⑤ ログレベル判定
- Select Case Trueというテクニック
- ネストしたIf文を改善する
- Copilot活用術① If文を変換する
- Copilot活用術② ステータス判定作成
- Copilot活用術③ コードレビュー
- Select Case利用時の注意点
- 開発現場での利用頻度
- Select Caseを覚えるメリット
- まとめ
Select Case文とは
Select Case文は、
値を判定
↓
条件に応じて処理分岐
を行う構文です。
なぜSelect Case文が重要なのか
初心者が書きがちなコードです。
If 状態 = 1 Then
ElseIf 状態 = 2 Then
ElseIf 状態 = 3 Then
ElseIf 状態 = 4 Then
End If
分岐が増えると読みにくくなります。
そこでSelect Caseを利用します。
Select Case 状態
Case 1
Case 2
Case 3
Case 4
End Select
非常に見やすくなります。
基本構文
Select Case 値
Case 条件1
処理
Case 条件2
処理
Case Else
処理
End Select
逆引き① ステータス判定をしたい
最も利用頻度が高いパターンです。
Select Case 状態
Case 1
MsgBox "受付"
Case 2
MsgBox "処理中"
Case 3
MsgBox "完了"
End Select
結果
1 → 受付
2 → 処理中
3 → 完了
逆引き② 複数条件をまとめたい
複数の条件を同時に記述できます。
Select Case 状態
Case 1, 2
MsgBox "処理中"
Case 3
MsgBox "完了"
End Select
逆引き③ 範囲判定をしたい
点数判定です。
Select Case 点数
Case 90 To 100
MsgBox "A"
Case 80 To 89
MsgBox "B"
Case Else
MsgBox "C"
End Select
逆引き④ 文字列判定をしたい
コード判定です。
Select Case strCode
Case "A"
MsgBox "顧客"
Case "B"
MsgBox "業者"
Case "C"
MsgBox "社員"
End Select
逆引き⑤ Case Elseを利用したい
未定義値の対策です。
Select Case 状態
Case 1
Case 2
Case 3
Case Else
MsgBox "不明"
End Select
効果
予期しないデータに対応できます。
If文との比較
If文
If 状態 = 1 Then
ElseIf 状態 = 2 Then
ElseIf 状態 = 3 Then
End If
Select Case
Select Case 状態
Case 1
Case 2
Case 3
End Select
メリット
- 読みやすい
- 修正しやすい
- 保守しやすい
- 条件追加が簡単
実務活用例① 受注管理システム
受注ステータス管理です。
Select Case 受注状態
Case 1
strStatus = "受付"
Case 2
strStatus = "出荷準備"
Case 3
strStatus = "出荷済"
Case 4
strStatus = "完了"
End Select
実務活用例② 設備管理システム
点検判定です。
Select Case 判定区分
Case "A"
strResult = "正常"
Case "B"
strResult = "注意"
Case "C"
strResult = "異常"
End Select
実務活用例③ CSV取込
ファイル種別判断です。
Select Case strType
Case "CSV"
Call ImportCsv
Case "XLSX"
Call ImportExcel
Case "PDF"
Call SavePdf
End Select
効果
ファイル処理を整理できます。
実務活用例④ エラーコード管理
エラー別メッセージです。
Select Case ErrCode
Case "E001"
strMsg = "ファイルなし"
Case "E002"
strMsg = "データ不足"
Case "E003"
strMsg = "DB接続失敗"
End Select
実務活用例⑤ ログレベル判定
運用システムで便利です。
Select Case LogLevel
Case "INFO"
Case "WARN"
Case "ERROR"
End Select
Select Case Trueというテクニック
ベテランが使う書き方です。
例
Select Case True
Case 金額 >= 100000
MsgBox "承認必要"
Case 金額 >= 10000
MsgBox "課長確認"
Case Else
MsgBox "通常処理"
End Select
メリット
複雑な条件を整理できます。
ネストしたIf文を改善する
改善前
If 状態 = 1 Then
If 金額 > 10000 Then
End If
End If
改善後
Select Case 状態
Case 1
If 金額 > 10000 Then
End If
End Select
可読性が向上します。
Copilot活用術① If文を変換する
Copilotへの依頼例です。
以下のAccess VBAコードを
Select Case文へ
変更してください。
Copilot活用術② ステータス判定作成
Access VBAです。
受注ステータスごとに
処理を分岐する
Select Case文を
作成してください。
Copilot活用術③ コードレビュー
Select Case文を利用した
VBAコードです。
改善案を出してください。
保守性向上に役立ちます。
Select Case利用時の注意点
条件順序
上から判定されます。
Case Elseを忘れない
想定外データ対策になります。
条件が少ない場合
If A Then
程度ならIf文の方が簡単です。
開発現場での利用頻度
実務利用頻度です。
| 順位 | 用途 |
|---|---|
| 1位 | ステータス判定 |
| 2位 | エラーコード管理 |
| 3位 | CSV取込分類 |
| 4位 | ログレベル判定 |
| 5位 | 設備判定 |
保守案件では非常によく利用します。
Select Caseを覚えるメリット
次のような効果があります。
- コードが見やすくなる
- バグを減らせる
- 修正しやすい
- Copilot生成コードを理解しやすい
- チーム開発しやすい
特に長期間運用するシステムでは効果絶大です。
まとめ
Select Case文はAccess VBA開発における定番の条件分岐構文です。
特に
- ステータス管理
- CSV取込
- エラーコード管理
- 設備管理
- ログ管理
などで大きな効果を発揮します。
またCopilotを活用することで、
- If文の整理
- 分岐コード生成
- コードレビュー
も効率的に行えます。
Access VBAを学習している方は、If文と併せてSelect Case文を使いこなせるようになると、コード品質が大きく向上します。


コメント