PR

【Access VBA】多すぎるIf文をスッキリ解消!Select Caseによる条件分岐の書き方とIf文との使い分け

VBA

Access VBAで開発を続けていると、

  • 条件分岐が増えて読みづらい
  • If文が何重にもネストしてしまう
  • 状態ごとに処理を分けたい
  • ステータス管理を行いたい
  • コードの保守性を向上させたい

といったケースが増えてきます。

複数の条件分岐がある場合はIf文よりSelect Case文を使った方が圧倒的に見やすくなります。

実際に保守が長期間続く業務システムでは、ベテラン開発者ほどSelect Case文を多用しています。Copilotが生成するコードにも頻繁に登場するため、Access VBA開発者は必ず覚えておきたいテクニックです。


スポンサーリンク

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文を使いこなせるようになると、コード品質が大きく向上します。

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

コメント

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