アクセス担当のまみです。
VBA初心者だとIFをよく使うし、ほとんどIFで終わらせることも多いかな。
IFって複数の条件に対応可能で、入れ子にもできて便利だけど、条件が多くなってくると、だんだんコードが見づらくなります。
IFを使った処理を、Select Caseに書き換えてみると、コードが見やすくなるのでおススメです。
Contents
Select Case
Case 条件式1
処理1
Case 条件式2
処理2
・
・
Case Else
条件にあてはまらなかった時の処理
End Select
Select Caseで4つに条件分岐
フォームにデータを入力してチェックするプログラムだよ!
使用するフォーム
ラベルとテキストボックス、ボタンを1つずつ配置しましょう。
ラベル 「A~Cを入力してください」
テキストボックスの名前 「tx入力1」
ボタンの名前 「btnチェック」
ボタンの標題 「チェック」
フォームの作り方の詳細は下記の記事をどうぞ!
①「btnチェック」を選択した状態で、プロパティシートの②「イベント」タブを選択して「クリック時」に「イベントプロシージャ」を選びコードの画面を表示します。
「Private Sub btnチェック_Click()」と「End Sub」の間に下記のコードを記載しましょう。
Dim check1 As String check1 = Nz(Me.tx入力1.Value) Select Case check1 Case "A" MsgBox "Aが入力されました" Case "B" MsgBox "Bが入力されました" Case "C" MsgBox "Cが入力されました" Case Else MsgBox "A~Cを入力してください" End Select
コードをコピーされたい場合は下記の記事を参考にしてください。
テキストボックスに「A~C」が入力されたらそれぞれのメッセージボックスが表示されます。
テキストボックスに「A~C」以外の入力があった場合は「A~C」の入力を求めるメッセージボックスが表示されます。
数値の場合だと””で囲まなくてもいいんだけどね。
フォームビューに切り替えて動作確認をしてみましょう。
Select Caseを入れ子(ネスト)にする
ラベルとテキストボックスを1つずつ加えてやってみよう!
ラベルは「(1)Aを入力してください」と変更
追加するテキストボックスの名前 「tx入力2」
追加するラベル「(2)A~Cを入力してください」
「Private Sub btnチェック_Click()」と「End Sub」の間に記載するコードは下記になります。
check1 = Nz(Me.tx入力1.Value) check2 = Nz(Me.tx入力2.Value) Select Case check1 Case "A" Select Case check2 Case "A" MsgBox "(2)にAが入力されました" Case "B" MsgBox "(2)にBが入力されました" Case "C" MsgBox "(2)にCが入力されました" Case Else MsgBox "(2)にA~Cを入力してください" End Select Case Else MsgBox "(1)にAを入力してください" End Select
Select Caseを複数条件で使用する
Dim check1 As String Dim check2 As String check1 = Nz(Me.tx入力1.Value) check2 = Nz(Me.tx入力2.Value) Select Case check1 Case "A" Select Case check2 Case "A", "B", "C" MsgBox "(2)にA~Cが入力されました" Case Else MsgBox "(2)にA~Cを入力してください" End Select Case Else MsgBox "(1)にAを入力してください" End Select
下記の記事でIFを使って同じようなプログラムを作成しています。
ぜひ見比べてみてください!
フォームは「F_Select」と名前をつけておきましょう。
まとめ
Select Caseを使うとコードがとっても見やすくなるので、ぜひ覚えてくださいね!
コードを短く見やすくすると、バグも少なくてあとで機能の追加をしたい時にわかりやすいですよ!