- ベストアンサー
アクセスVBA IF文の記述方法
- アクセスVBAにおけるIF文の記述方法について教えてください。
- 検索フォームにて氏名とカナを入力チェックし、未入力の場合には「未入力です」とメッセージを表示し、入力された場合には結果一覧のフォームを表示したいと考えています。
- 検索ボタンをクリックした際に、氏名とカナの入力チェックを行い、条件に応じてIF文を記述したいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No2、No3です。 Tagプロパティを使っているので、あっさり For Each mct In Me.Controls If mct.ControlType = acTextBox Then If mct.Tag = "Check" Then If IsNull(mct) Then MsgBox mct.Name & ("が未入力です") Exit Sub End If End If End If Next mct 以下No3のコードへ flg抜きでいいのではと。No3のコードの最後はflg抜きでした。 回答がごちゃごちゃしてすみません。
その他の回答 (3)
- piroin654
- ベストアンサー率75% (692/917)
先に回答すべきものを取り違えていました。 こちらを先に回答すべきでした。 未入力ならば先に入力を促す、ということで。 Private Sub 検索_Click() Dim mct As Control Dim flg As Boolean flg = False For Each mct In Me.Controls If mct.ControlType = acTextBox Then If mct.Tag = "Check" Then If Not IsNull(mct) Then flg = True Else MsgBox mct.Name & ("が未入力です") Exit Sub End If End If End If Next mct '入力チェックが終わったので結果一覧表示 Dim str As String str = "[氏名] Like ""*" & Me!氏名 & "*"" And [カナ] Like ""*" & Me!カナ & "*""" DoCmd.OpenForm "結果一覧", , , str End Sub
- piroin654
- ベストアンサー率75% (692/917)
「氏名」「カナ」の両方の未入力チェックをするならば、 ループを完結しないと未入力項目を見落としてしまいます。 ループを途中で抜けると、たとえば、「氏名」が未入力で 「カナ」が入力されていると「結果一覧」が表示されます。 そこで、以下のようにすればいいのでは、と思いますが。 Private Sub 検索_Click() Dim mct As Control Dim flg As Integer flg = 1 For Each mct In Me.Controls If mct.ControlType = acTextBox Then If mct.Tag = "Check" Then If Not IsNull(mct) Then flg = flg * 1 Else flg = flg * 0 End If End If End If Next mct If flg = 1 Then Dim str As String str = "[氏名] Like ""*" & Me!氏名 & "*"" And [カナ] Like ""*" & Me!カナ & "*""" DoCmd.OpenForm "結果一覧", , , str Else MsgBox ("未入力項目があります") End If これだと、「氏名」「カナ」のどちらに未入力があっても チェックできます。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
× Exit Sub ○ Exit For
お礼
お恥ずかしい。 ありがとうござました。
お礼
ベストアンサー決定したと思っており、回答に気づくのが遅れました。なるほどです!!何回も回答を頂き、質問内容から根本的な問題点の指摘改善までありがとうございました!!