こんにちはmasalifeです。
今回は入力フォームで項目の入力漏れがないかをチェックする機能を作ってみたいと思います。
具体的に作る機能は次のイメージです。
*クリックすると拡大表示します。
登録ボタンをクリックすると、入力漏れがあるかないかでメッセージの内容を変える機能です。
このような入力漏れチェック機能の作り方は色々ありますが、
今回はSelect Caseステートメントを使って作ってみます。
Select Caseステートメントは値に応じて処理を分岐させる場合に使用する、条件分岐処理において使用頻度が高いステートメントです。
実際に機能を作りながら感覚を掴んでください。
*方法(VBAコード)のみを知りたい方は【目次2:登録用のコマンドボタンにVBAを記述する】のみを読んでください。
・Select Caseステートメント
・IsNull関数
・If~Elseステートメント
入力フォームを準備する
入力をするテキストボックスと登録用のコマンドボタンがある次のようなフォームを作成してください。
テキストボックスではなく、コンボボックスでも動作には問題ありません。
登録用のコマンドボタンにVBAを記述する
登録ボタンに入力漏れチェック機能をVBAで設定します。
ボタンのプロパティシートを出して、
【イベント】タブのクリック時の 【…】 アイコンをクリックします。
【コードビルダー】を選択し、【OK】ボタンをクリックします。
VBE画面が起動します。
VBE画面に次のコードを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
Private Sub btn登録_Click() Dim check1 As String '会員名チェック Dim check2 As String 'パスワードチェック Dim check3 As String '再確認パスワードチェック Dim hantei As String '最終判定 '===入力項目が漏れているかを判定しフラグを変数に代入=== If IsNull(Me.txt会員名) Then check1 = "×" Else check1 = "〇" End If If IsNull(Me.txtパスワード) Then check2 = "×" Else check2 = "〇" End If If IsNull(Me.txt再確認パスワード) Then check3 = "×" Else check3 = "〇" End If '===判定フラグを作成し変数に代入=== hantei = check1 & check2 & check3 '===Select Caseステートメントを使用し、変数hanteiの値によって処理を分岐=== Select Case hantei Case "〇〇〇" '入力漏れなし MsgBox "登録しました。" Case "×〇〇" '会員名入力漏れ MsgBox "会員名が入力されていません。" Case "××〇" '会員名・パスワード入力漏れ MsgBox "会員名・パスワードが入力されていません。" Case "×××" '会員名・パスワード・再確認パスワード入力漏れ MsgBox "会員名・パスワード・再確認パスワードが入力されていません。" Case "〇××" 'パスワード・再確認パスワード入力漏れ MsgBox "パスワード・再確認パスワードが入力されていません。" Case "〇〇×" '再確認パスワード入力漏れ MsgBox "再確認パスワードが入力されていません。" Case "〇×〇" 'パスワード入力漏れ MsgBox "パスワードが入力されていません。" Case "×〇×" '会員名・再確認パスワード入力漏れ。 MsgBox "会員名・再確認パスワードが入力されていません。" End Select End Sub |
*txt〇〇の部分は準備したフォームのコントロール名に変更してください。
これで完成です。
入力漏れの項目によってメッセージが切り替わり、
すべて入力されていたら、「登録しました。」のメッセージが出ます。
MsgBox “登録しました。”の部分をGoToRecord(レコードの移動)を使って、次のレコードに移動させるなどすればより実用的になるので、色々と試してみてください。
VBAの内容を考える
入力が漏れているか漏れていないかの判定フラグを代入する変数を設定
1 2 3 4 |
Dim check1 As String '会員名チェック Dim check2 As String 'パスワードチェック Dim check3 As String '再確認パスワードチェック Dim hantei As String '最終判定 |
入力項目ごとに入力項目が漏れているか漏れていないかを判定し、それに対応するフラグを代入する変数を設定しています。
入力が漏れていた場合は✖、入力が漏れていない場合は〇を代入します。
そのため、変数の型は文字列を入れるString型としています。
入力が漏れているか漏れていないかを判定しフラグを変数に代入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
If IsNull(Me.txt会員名) Then check1 = "×" Else check1 = "〇" End If If IsNull(Me.txtパスワード) Then check2 = "×" Else check2 = "〇" End If If IsNull(Me.txt再確認パスワード) Then check3 = "×" Else check3 = "〇" End If hantei = check1 & check2 & check3 |
入力項目ごとに、IfステートメントとIsNull関数を使って入力漏れを判定し、判定フラグ(〇,✖)をそれぞれのcheck変数に代入しています。
最後に次のSelect Caseステートメントの条件式とするためのhantei変数にそれぞれのcheck変数をくっつけた文字列を代入しています。
*すべての項目に入力漏れがない場合は、hanteiには”〇〇〇”が代入されます。
IsNull関数について、なじみのない方はこちらの記事で解説していますので、ぜひ参考にしてみてください。
こんにちはmasalifeです。 Accessの力を最大限に発揮させるためには、関数の知識が必要不可欠です。 僕が多くのシステム構築をしてきた経験から、 この関数は覚えといた方がいい というものを順に紹介していきたいと思います。 今[…]
Select Caseステートメントを使用し、変数hanteiの値によって処理を分岐
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Select Case hantei Case "〇〇〇" '入力漏れなし MsgBox "登録しました。" Case "×〇〇" '会員名入力漏れ MsgBox "会員名が入力されていません。" Case "××〇" '会員名・パスワード入力漏れ MsgBox "会員名・パスワードが入力されていません。" Case "×××" '会員名・パスワード・再確認パスワード入力漏れ MsgBox "会員名・パスワード・再確認パスワードが入力されていません。" Case "〇××" 'パスワード・再確認パスワード入力漏れ MsgBox "パスワード・再確認パスワードが入力されていません。" Case "〇〇×" '再確認パスワード入力漏れ MsgBox "再確認パスワードが入力されていません。" Case "〇×〇" 'パスワード入力漏れ MsgBox "パスワードが入力されていません。" Case "×〇×" '会員名・再確認入力漏れ。 MsgBox "会員名・再確認パスワードが入力されていません。" End Select |
変数hanteiをSelect Caseステートメントの条件式にして処理を分岐させています。
hanteiの値と処理の分岐をまとめると次のとおりです。
hanteiの値 | 入力漏れ項目 | 処理(出すメッセージの内容) |
---|---|---|
“〇〇〇” | なし | 登録しました。 |
“✖〇〇” | 会員名 | 会員名が入力されていません。 |
“✖✖〇” | 会員名 パスワード | 会員名・パスワードが入力されていません。 |
“✖✖✖” | 会員名 パスワード 再確認パスワード | 会員名・パスワード・再確認パスワードが入力されていません。 |
“〇✖✖” | パスワード 再確認パスワード | パスワード・再確認パスワードが入力されていません。 |
“〇〇✖” | 再確認パスワード | 再確認パスワードが入力されていません。 |
“〇✖〇” | パスワード | パスワードが入力されていません。 |
“✖〇✖” | 会員名 再確認パスワード | 会員名・再確認パスワードが入力されていません。 |
Select Caseステートメントについては、こちらの記事で細かく解説していますので、参考にしながらVBAの内容を読み取ってみてください。
こんにちはmasalifeです。 今回は条件分岐の処理に使用するSelect Caseステートメントを紹介します。 条件分岐といえばIfステートメントを思い浮かべる方が多いと思いますが、 IfステートメントよりS[…]
さいごに
思ったより簡単と感じていただけたでしょうか。
もちろん、バリバリのプログラマーの方であればもっと汎用性のあるプログラムを組まれると思います。
ただ、Accessの最大のメリットはプログラムを熟知していなくてもITに詳しくなくても、真似をすれば現場で即戦力となる機能を簡単に構築できる事だと思います。
ぜひ、入力フォームを作った際は入力漏れチェックを機能を実装してみてください。
これからもAccessを簡単に感じてもらえるような記事を書いていきたいと思っております。
最後まで読んでいただきありがとうございました。