access関連 投稿

【初心者向け】Microsoft AccessでのIf文の書き方と活用法|IIf関数とVBAで条件分岐を使いこなす

Microsoft Accessは、データベース管理や業務システムの構築に便利なツールですが、実際に使い始めると「条件分岐ってどうやって書くの?」「ExcelみたいにIF関数を使えないの?」と疑問に思うことが多いかもしれません。

そこで今回は、AccessでのIf文の基本的な使い方から、実際の業務で役立つ活用例、初心者がつまずきやすい注意点までを、できるだけ分かりやすく解説します。

この記事を読めば、クエリやフォーム、VBAでのIf文の使い方がすぐに理解でき、Accessをもっと便利に活用できるようになります。

If文とは?Accessでの使いどころ

If文とは、「もし〇〇なら△△を実行する」という条件分岐を行う命令文です。

Accessでは、大きく分けて次の2つの場面で使います。

  • クエリやフォーム、レポートの式で条件分岐IIf関数 を使用
  • VBA(Visual Basic for Applications)で条件分岐If ~ Then ~ Else 構文を使用

Excel経験者だと「IF関数=条件分岐」というイメージがありますが、AccessのクエリやコントロールソースではIIf関数を使う点が特徴です。

一方で、VBAを使うとより複雑で柔軟な条件分岐が可能になります。

クエリや式で使うIf文(IIf関数)

Accessのクエリやフォームのテキストボックスなどでは、通常のIf文は使えません。その代わりに IIf関数 を使って条件を判定します。

基本構文

IIf(条件式, 条件が真(True)のときの値, 条件が偽(False)のときの値)

基本例

売上金額によって「優良」または「普通」と表示したい場合

IIf([売上] >= 10000, "優良", "普通")

この式をクエリの計算列フォームのコントロールソースに設定すると、自動で条件判定を行ってくれます。

応用例1:数値の評価

売上が0の場合は「未取引」、それ以外は「取引あり」と表示

IIf([売上]=0, "未取引", "取引あり")

応用例2:日付の判定

納期が今日より前なら「遅延」、今日以降なら「進行中」

IIf([納期] < Date(), "遅延", "進行中")

VBAで使うIf文

VBAを使うと、より複雑な条件分岐や多段階の判定が可能になります。

基本構文(単一条件)

If 条件 Then
' 条件が真のときの処理
End If

複数条件(ElseIfやElseを使う)

If 条件1 Then
' 条件1が真のとき
ElseIf 条件2 Then
' 条件2が真のとき
Else
' どれにも当てはまらないとき
End If

VBA実用例1:メッセージの出し分け

If Me.売上 >= 10000 Then
  MsgBox "優良顧客です。"
ElseIf Me.売上 >= 5000 Then
  MsgBox "一般顧客です。"
Else
  MsgBox "売上を増やしましょう。"
End If

VBA実用例2:複数条件のAND/OR判定

If Me.在庫 <= 0 And Me.受注数 > 0 Then
  MsgBox "在庫切れです。入荷を手配してください。"
End If

Accessならではの注意点

IIf関数はすべての引数を評価する
ExcelのIF関数と違い、AccessのIIf関数は条件に関わらず、真・偽の両方の引数を評価します

そのため、0除算存在しないフィールド参照などがあるとエラーになる可能性があります。

回避例

IIf([数量]=0, Null, [金額]/[数量])

この場合でも数量が0なら0除算エラーになる可能性があるため、Nz関数やSwitch関数を組み合わせるのが安全です。

複雑な条件はSwitch関数やVBAを使う

IIf関数を入れ子にすると、式が非常に読みにくくなります
条件が3つ以上ある場合は、次のようにSwitch関数を使うとシンプルに書けます。

Switch(
  [売上] >= 10000, "優良",
  [売上] >= 5000, "普通",
  True, "要改善"
)

実務での活用例

例1:顧客ランクの自動判定

  • クエリで顧客ランク列を作成
  • 売上金額に応じて「VIP」「一般」「新規」などを自動表示
  • 営業担当者が顧客を優先度順に並べ替え可能

例2:在庫管理

  • 在庫数が0なら赤文字で「在庫切れ」と表示
  • VBAで在庫が一定以下になったら発注アラートを表示

例3:日報自動作成

  • 日付判定で「本日分」「過去分」を振り分け
  • VBAで条件一致したレコードだけ印刷

まとめ

まとめ

  • クエリやコントロールソース → IIf関数
  • 複雑な処理や複数条件 → VBAのIf文
  • エラー回避や可読性向上のためにSwitch関数Nz関数も活用

AccessでIf文を使いこなせば、単なるデータベースが「業務を自動化する便利ツール」に進化します。
まずはIIf関数で簡単な条件分岐から始め、慣れてきたらVBAでの高度な処理にも挑戦してみましょう。

過去にループ構文(For文やDo Until)の書き方についても解説しています。
条件分岐とループを組み合わせれば、より効率的な処理が可能です。

この記事が参考になったと思ったら、ぜひSNSでシェアをお願いします!
気になることやご質問があれば、コメント欄やX(旧Twitter)、InstagramのDMからお気軽にご連絡ください!
リクエストには、記事での解説や直接の返信でお応えします!

記事下広告

-access関連, 投稿