UserForm上にTextBoxとコマンドボタンがあり、TextBoxに数字を入れコマンドボタンをクリックすると'A.xlsをセットしてAシートの使用行を格納し検索して他のTextBoxにも反映させていくやり方でマクロを記述しています。そこでTextBoxに入力した数字がない場合はMsgBox”この数字はありません”という形にしたいのですが・・・どのようにすれば良いのか教えて下さい。
If Me.Controls("TextBox1" & Cnt).Value = "" Then
MsgBox "呼出したい数字を入力して下さい"
Exit Sub
End If
Set wbMyBook = Workbooks(ThisWorkbook.Name)
If MsgBox("以前の記録を呼び戻しますか?", vbOKCancel) = vbOK Then
Application.ScreenUpdating = False
strMyBookPath = ThisWorkbook.Path
If Dir(strMyBookPath & "\" & k1Name) <> "" Then
'あった場合そのブックが空いているか確認する。
flag = False
For Each wb In Workbooks
'開いていればTrue,開いていなければFalseを設定
If wb.Name = k1Name Then
flag = True
Exit For
End If
Next wb
'ブックが開いていなかった場合、ブックを開ける。
If flag = False Then
Workbooks.Open strMyBookPath & "\" & k1Name
End If
Set k1 = Workbooks(k1Name)
Set SH1 = k1.Worksheets("Sheet1")
Else
MsgBox WDName & "が存在していません。設置してください。", vbExclamation, "確認してください"
Exit Sub
End If
lngYcnt_K = SH1.UsedRange.Rows.Count
flag = False
For lng = 1 To lngYcnt_K
If CStr(TextBox1.Text) = CStr(SH1.Cells(lng, 1)) Then
flag = True
lngNumber = lng
Exit For
End If
Next lng
If flag = True Then
TextBox3.Value = SH1.Cells(lngNumber, 2) '氏名
End If
If SH1.Cells(lngNumber, 3) = "男" Then
OptionButton1.Value = True
ElseIf SH1.Cells(lngNumber, 3) = "女" Then
OptionButton2.Value = True
Else
OptionButton1.Value = True
OptionButton2.Value = False
End If
MsgBox " 記録を呼び戻しました"
Else
MsgBox"確認必要"⇒ここにもし数字が違っていたら表示させたいのですが・・・
End If
MsgBox " 以前に記録しましたか?"
Application.DisplayAlerts = False
k1.Close saveChanges:=True
Application.DisplayAlerts = True
'--------------------------------------------------------------------------
'画面更新ON
Application.ScreenUpdating = False
End Sub
全体を確認したわけではないですが
If Me.Controls("TextBox1" & Cnt).Value = "" Then
の変数 Cntは何が入っているのでしょうか?
もしTextBox1のみが対象であれば
If Me.Controls("TextBox1").Value = "" Then
でTextBox1が空白かどうか確認できます。
もしフォーム上の複数のTextBoxがあって、全てのTextBoxについて調べたいのであれば
For Cnt = 1 To 2'の2はTextBoxの数をいれます。
If Me.Controls("TextBox" & Cnt).Value = "" Then
MsgBox Me.Controls("TextBox" & Cnt).Name & "に呼出したい数字を入力して下さい"
Exit Sub
End If
Next
と記述します。
Dim Cnt As Control
For Each Cnt In Me.Controls
If TypeName(Cnt) = "TextBox" Then
If Cnt = "" Then
MsgBox Cnt.Name & "に呼出したい数字を入力して下さい"
End If
End If
Next
とかすれば
フォーム上のTextBoxやボタンの数が増えたりしても大丈夫な書き方もあります。
補足
早速の回答ありがとうございます! すいませんでした!TextBox1のみが対象でした! 早速してみましたが If SH1.Cells(lngNumber, 3) = "男" Thenがエラー表示されます! 実行時エラー1004になります。アプリケーション・オブジェクト定義のエラーになってしまいます。Ifのエラーの修正の仕方が分かりません! どこがわるいのでしょうか?