ユーザーフォームのテキストボックス1に範囲指定外の数値をいれた場合、登録ボタンを押せないようにしたいと思っています。
ユーザーフォームのテキストボックス1に範囲指定外の数値をいれた場合、登録ボタンを押せないようにしたいと思っています。 範囲は20以下はエラー、240以上はエラーとなります。 テキストボックス1に20以下の数字を入れた場合はエラーメッセージが出て、登録ボタンは押せない状況になっていますが、範囲以外の数字を入れた場合はエラーメッセージはでますが、登録ボタンも押せてしまいます。指定数値以上で入力した場合、登録ボタンを押せないようにしたいと思っています。 コマンドボタン1で確認、コマンドボタン2で登録、コマンドボタン3は閉じるの設定です。 ご教示願います。 VBAは下記になります。(一部抜粋) Private Sub check_Click() If TextBox1.Text = "" Then MsgBox "最高BPが空欄になっています。入力してください!", vbExclamation, "確認" ElseIf TextBox1.Text >= 20 And TextBox1.Text <= 220 Then Else MsgBox "最高BPの値が範囲外になっています。20以上220以下の数値です。修正してください!", vbExclamation, "確認" End If End Sub Private Sub closed_Click() Unload keikakiroku End Sub Private Sub register_Click() ActiveSheet.Unprotect Password:="0000" Dim r As Integer r = Range("A" & Rows.Count).End(xlUp).Offset(1).Row Range("A" & r).Value = keikakiroku.Label1.Caption Range("B" & r).Value = keikakiroku.Label2.Caption Range("C" & r).Value = keikakiroku.Label3.Caption Range("E" & r).Value = keikakiroku.ListBox1.Value Range("F" & r).Value = keikakiroku.ListBox2.Value Range("G" & r).Value = keikakiroku.TextBox1.Value Range("H" & r).Value = keikakiroku.TextBox2.Value Range("I" & r).Value = keikakiroku.TextBox3.Value Range("J" & r).Value = keikakiroku.TextBox4.Value Range("K" & r).Value = keikakiroku.TextBox5.Value ListBox1.Value = "" ListBox2.Value = "" TextBox1.Value = "" TextBox2.Value = "" TextBox3.Value = "" TextBox4.Value = "" TextBox5.Value = "" ActiveSheet.Protect Password:="0000" End Sub Private Sub TextBox1_Change() With TextBox1 If TextBox1.Text = "" Then register.Enabled = False ElseIf TextBox1.Text >= 20 And TextBox1.Text <= 220 Then register.Enabled = True Else End If End With End Sub
Visual Basic・34閲覧・100
ベストアンサー
>20以下はエラー、240以上はエラー これは20,240もエラーという意味になりますがコードから察するに有効値は20-220ですね。 と言うことは、20-220の時だけボタンを有効にして、それ以外を無効にすれば良いわけです。 Private Sub TextBox1_Change() register.enabled= (TextBox1.text >= 20) and (TextBox.text <= 220) End sub 動作未確認ですが大丈夫だと思います。
ear********さん ありがとうございます。 テキストボックス1に指定範囲以外bの数値を入力したとしてもメッセージが表示され、登録ボタンも押せないようになりました。 ただ、間違った数値を選択しそのまま入力すれば問題はありませんでしたが、Deleteを押すとデバッグが発生してしまいました。 これを解消するには If TextBox1.Text = "" Then をどこかに入れなければならないでしょうか? ご回答のほどよろしくお願いいたします。
質問者からのお礼コメント
ご教示いただきありがとうございます。
お礼日時:2/4 8:28