アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2003のVBAで、ユーザーフォーム上にあるテキストボックスに入力制限をつけようとしています。
エクセルのセル13列目にdeg値
0
0.5
1
1.5
2




があります。
ここにない値を入力するとエラーメッセージを表示させます。
下記のコードで、小数点を入力した瞬間(例えば「1.」)にエラーメッセージが表示されてしまいます。
どう修正したらよいか、どなたか分かりませんでしょうか?
よろしくお願いいたします。


Private Sub TextBox21_Change()
For i = 7 To 1446
If TextBox21.Value = ThisWorkbook.Sheets(\"default\").Cells(i, 13).Value Then Exit For
Next i
If i = 1447 Then
MsgBox \"deg値と一致しません。補正値を入れなおしてください。\"
TextBox21.Text = \"\"
End If
End Sub

A 回答 (3件)

つぎのようにするとか。



Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

For i = 7 To 1446
If Val(TextBox1.Value) = ThisWorkbook.Sheets(1).Cells(i, 13).Value Then Exit For
Next i
If i = 1447 Then
MsgBox "\deg値と一致しません。補正値を入れなおしてください。\"
TextBox1.Text = "\\"
Else
MsgBox "yes"
End If

End Sub
    • good
    • 0
この回答へのお礼

changeイベントで、以下のVal()をいれたら、
ばっちり動作するようになりました。
ありがとうございます!

If Val(TextBox21.Value) = ThisWorkbook.Sheets("default").Cells(i, 13).Value Then Exit For

お礼日時:2009/09/11 15:06

違っていたらすみません。



Changeイベントでなく、Exitイベントを使用したら
いかがでしょうか?

フォーカスが別に移ったときに処理を行うイベントです。
    • good
    • 0

限られた値しか受け付けないというのであるなら、入力をリストボックスにして選択させたる方式にした方がよいのでは?


シートの値と連動させることも可能みたいだし。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!