【Accsess】VBAのIFを使って複数条件の分岐をする方法

 

アクセス担当のまみです。

 

エクセルでもIFってよく使っているからか、アクセスでもよくIFを使います。

条件分岐の基本といったところでしょうか。

エクセルで慣れているのでIFって使いやすいんじゃないかな。

 

今回は、IFの使い方についてお伝えしますね。

 

Contents

IF~End IF

 

(はてな君)
IFって一番よく見るかも~

 

(あいちゃん)
そうだね、一番慣れているから使いやすいのかな。

 

 

構文1
IF 条件式 Then
     真の場合
End If

一番基本の構文です。

条件式を満たした場合に処理が実行されて、条件式を満たさない場合はスルーされます。

 

(あいちゃん)
じゃあ実際にフォームを使ってやってみようか。

 

(はてな君)
やるやる~!

 

では、データを入力して、入力チェックをするようなフォームを作ってみましょう。

 

使用するフォーム

ラベルとテキストボックス、ボタンを1つずつ配置しましょう。

 

ラベル 「Aを入力してください」

テキストボックスの名前 「tx入力」

ボタンの名前 「btnチェック」

ボタンの標題 「チェック」

 

 

フォームの作り方の詳細は下記の記事をどうぞ!

 

アクセスVBAでフォームにボタンを配置しよう

2018年9月18日

 

 

①「btnチェック」を選択した状態で、プロパティシートの②「イベント」タブを選択して「クリック時」に「イベントプロシージャ」を選びコードの画面を表示します。

 

「Private Sub btnチェック_Click()」と「End Sub」の間に下記のコードを記載しましょう。

 

    If Me.tx入力.Value = "A" Then
        MsgBox "Aが入力されました"
    End If

 

 

テキストボックスに「A」が入力されたらメッセージボックスが表示されます。

テキストボックスに「A」以外の入力があった場合は何も起こりません。

 

(はてな君)
Aって「”」で囲むんだね。

 

(あいちゃん)
そうなんだ。数値だと囲まなくていいんだけど文字列だからね。

 

「A」を入力した場合

 

「C」を入力した場合

 

(はてな君)
そっか。条件を満たしたときの処理しかないからCを入力しても何も起こらないんだね。

 

コードをコピーされたい場合は下記の記事を参考にしてください。

 

関連記事
 
 

IF~Else~End IF

 

構文2
IF 条件式 Then
      真の場合
Else
  偽の場合
End If
(はてな君)
条件を満たした場合と満たさない場合とで処理がわかれたよ!さっきのコードに追加していい?

 

(あいちゃん)
なんて追加するの?

 

(はてな君)
え~っと。「A以外が入力されました。」ってメッセージが出るように!

 

先ほどのコードに下記のコードを追加しましょう。

    Else
        MsgBox "A以外が入力されました"

 

 

条件を満たさなかった場合の処理を追加しました。

さっそく動作確認してみましょう。

 

 

 

(はてな君)
わ~い!メッセージが表示された~!

 

[quads id=2]

 

IF~ElseIF~Else~End IF

 

構文3
IF 条件式1 Then
      条件式1を満たした場合の処理
ElseIF 条件式2 Then
  条件式2を満たした場合の処理
Else
  どちらも満たさない場合の処理
End If

 

(はてな君)
わぁ!条件判断が2つになって処理結果は3とおりになったよ!

 

(あいちゃん)
Else IFを使用すると、いくつでも条件判断が可能になるよ。

 

(はてな君)
いくつでも?!

 

(あいちゃん)
そう!いくつでも。だけどあまりたくさんになるとデバッグが大変だし遅くなるので、他の構文を使った方がいいかな。
実際にやってみようか。条件はいくつにする?

 

(はてな君)
え~っと3つ!

 

(あいちゃん)
そうだね。それぐらいがいいかな。今はメッセージボックス表示させるだけでコードも短いからいいけど、コードが長くなるとわかりにくくなっちゃうからね。

 

ではラベルを「A~Cを入力してください」に変更しましょう。

私は上書きしちゃいますが、フォームを取っておきたかったら、名前を付けて保存しておいてくださいね。

保存したフォームをコピーして使うと良いですよ!

 

 

「Private Sub btnチェック_Click()」と「End Sub」の間に記載するコードは下記になります。

※少し先ほどのコードと違うので上書きしちゃいましょう。

 

    If Me.tx入力.Value = "A" Then
        MsgBox "Aが入力されました"
    ElseIf Me.tx入力.Value = "B" Then
        MsgBox "Bが入力されました"
    ElseIf Me.tx入力.Value = "C" Then
        MsgBox "Cが入力されました"
    Else
        MsgBox "A~C以外が入力されました"
    End If

 

 

動作確認をしてみましょう。

 

(あいちゃん)
Cだけじゃなくて他の動作も確認しておいてね!

 

(はてな君)
は~い!

 

IFを入れ子(ネスト)にする

 

(はてな君)
入れ子って?

 

(あいちゃん)
IFの中にIFがあるんだ。

 

(はてな君)
IFの中にIF?

 

(あいちゃん)
やってみた方が早いね。

 

では先ほどのフォームにラベルとテキストボックスを追加して、少し名前を変更しましょう。

 

追加するラベルには「(1)Aを入力してください」と入力

追加するテキストボックスの名前 「tx入力1」

テキストボックス「tx入力」を「tx入力2」と名前を変更

ラベル「A~Cを入力してください」に(2)を追加

 

 

「Private Sub btnチェック_Click()」と「End Sub」の間に記載するコードは下記になります。

 

    If Me.tx入力1.Value = "A" Then
    
        If Me.tx入力2.Value = "A" Then
            MsgBox "(2)にAが入力されました"
        ElseIf Me.tx入力2.Value = "B" Then
            MsgBox "(2)にBが入力されました"
        ElseIf Me.tx入力2.Value = "C" Then
            MsgBox "(2)にCが入力されました"
        Else
            MsgBox "(2)にA~C以外が入力されました"
        End If
        
    Else
        MsgBox "(1)にA以外が入力されました"
    End If

 

 

(はてな君)
へぇ。こうやって使うんだ。色んな条件で分岐させられそうだね。

 

(あいちゃん)
空欄のままボタンを押したらメッセージがおかしいね。空欄の処理を追加した方がいいかも。

 

(はてな君)
ねぇねぇ。「A(A~C)以外が入力されました」ってメッセージを「A(A~C)を入力してください」に変えたらどう?

 

(あいちゃん)
はてな君すごい!それだと空欄の処理も追加しなくていいし、メッセージ変えるだけでOKだね。

 

(はてな君)
でしょでしょ!メッセージ変えてみた!

 

まとめ

 

IFって本当によく使います。

最初のうちはIFを知っているだけでもプログラムが組めちゃいますので、ぜひ使えるようになっちゃいましょう!

 

処理が複雑になってくると、コードが読みにくくなるし、処理速度の問題もあるので、Select Caseなどの他の構文を覚えるのがいいですね。

 

 

スポンサーリンク