検索フォームを作成しました。
入力項目は「氏名」「カナ」で入力チェックをおこなっております。
(未入力)メッセージを表示「未入力です」
(入力有)結果一覧のフォームを表示
未入力チェックは正常に処理されておりメッセージが表示されます。
項目に値を入力した場合フォームが起動しません。
if文から外した場合は正常に実行されます。
この条件の場合if文でどのように記述したらよいのでしょうか。
宜しくお願いします。
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
Exit Sub
End If
End If
End If
Next mct
If flg = True Then
Dim str As String
str = "[氏名] Like ""*" & Me!氏名 & "*"" And [カナ] Like ""*" & Me!カナ & "*"""
DoCmd.OpenForm "結果一覧", , , str
Else
MsgBox ("未入力です")
End If
End Sub
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抜きでした。
回答がごちゃごちゃしてすみません。
先に回答すべきものを取り違えていました。
こちらを先に回答すべきでした。
未入力ならば先に入力を促す、ということで。
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
「氏名」「カナ」の両方の未入力チェックをするならば、
ループを完結しないと未入力項目を見落としてしまいます。
ループを途中で抜けると、たとえば、「氏名」が未入力で
「カナ」が入力されていると「結果一覧」が表示されます。
そこで、以下のようにすればいいのでは、と思いますが。
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
これだと、「氏名」「カナ」のどちらに未入力があっても
チェックできます。
お礼
ベストアンサー決定したと思っており、回答に気づくのが遅れました。なるほどです!!何回も回答を頂き、質問内容から根本的な問題点の指摘改善までありがとうございました!!