VBA初心者です。
エクセルのユーザーフォームでtextboxからの入力できる値を、1~10の整数か""(未入力)以外の場合にエラールーチンにgotoさせたいのですが、条件をすべて満足させる条件式が考えつきません。
お知恵を拝借できないでしょうか。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

テキストボックスは、テキストボックスへのデータ入力の終了を知らせる良い仕組みが内容に思う。


(1)キー入力をした都度チェックする
これでも入力の終わりは、コマンドボタンクリックなどが、別途必要と思う。
(2)コマンドボタンを(設け、テキストボックスへ入力終了後に)クリックしたとき、テキストボックスのテキストの文字列を全桁チェックする
のような方式が考えられると思うが、初心者にはこのイベントの扱い、イベントの選択が難しいと思う。
当面勉強が進むまでは、INPUTBOXなどで対処したらどうか。
下記は十分自信はないが、一応挙げてみる。もっと良い回答(イベントの扱い方)が出れば、無視してください。
ただし(1)か(2)のどちらか一方を入れること。
ーー
テキストボックスへの入力は半角数字に限るという内容。
(1)即座チェック
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then
MsgBox "数字入力のこと"
SendKeys "{BKSP}"
End If
End Sub
(2)一括チェック
Private Sub CommandButton1_Click()
For i = 1 To Len(TextBox1.Text)
n = Mid(TextBox1.Text, i, 1)
If Asc(n) < 46 Or Asc(n) > 57 Then
MsgBox "数字入力のこと"
TextBox1.Text = ""
TextBox1.SetFocus
Exit Sub
End If
Next i
'(テキストを使った処理)
End Sub
    • good
    • 0
この回答へのお礼

 早速のご回答、ありがとうございます。
 やはり初心者には難解な条件のようですね (^^ゞ
 実際のフォームにはテキストボックスが5個ありますので、その都度INPUTBOXというのはあまり適していないかと思います。
 これらに入力後コマンドボタンを押すと、エラーチェックの後ワークシートに転記しますが、入力条件が面倒なのは5個のうちのひとつだけです。IF~THEN~ELSE IF とかで回避できればと思うのですが、入力内容を数字として取り込むと、""の場合が上手くいきませんし、小数の場合も別途判断が必要。文字列で取り込んでも問題があるんですよね・・・

お礼日時:2011/04/14 15:16

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング