• ベストアンサー

EXCEL2000 VBAにおいてユーザフォーム上での入力チェック

ユーザフォーム上のテキストボックスに数字のみ入力するように制御したいのですが、英字が入力された場合、エラーメッセージを出した後、フォーカスをそのテキストボックスに戻したいのですが、うまくいかず、次のところにフォーカス移動してしまいます。どのようにすればいいか、ご教示願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • pppc88
  • ベストアンサー率43% (40/93)
回答No.1

どのように、エラーメッセージを出しているのかわからないのですが(メッセージボックス?)、この部分でsetFocusがうまくいってないのかなと思います。 ご質問の内容と設計が異なりますが、初めから数字しか打てないようにしてはどうでしょう。 例です。 Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case vbKey0, vbKey1, vbKey2, vbKey3, vbKey4, vbKey5, vbKey6, vbKey7, vbKey8, vbKey9 Case Else KeyAscii = 0 End Select End Sub

consommepanchi
質問者

お礼

迅速な回答ありがとうございました。 回答の中にありますようにメッセージボックスでエラーメッセージを出して、その後SetFocusでフォーカスをその項目に戻そうとしていました。 最初から数字から打てないという提案を使わせてもらうことにします。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

Private Sub TextBox1_Change() If IsNumeric(TextBox1) Then Exit Sub MsgBox "数値以外の入力は不可です。", vbOKOnly, "テキスト1" End Sub の様に変更時イベントでチェックすれば良いのでは?

consommepanchi
質問者

お礼

迅速な回答ありがとうございます。 私の説明が足りていませんでした。申し訳ありません。 数値チェック自体はうまくいくのですが、数値以外が入力された後に、メッセージボックスを出してOKボタンを押すとフォーカスを移動させないように出来なかったんです。

すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

フォーム!コントロール名.SetFocus でフォーカスを設定できます。

consommepanchi
質問者

お礼

迅速な回答ありがとうございます。 私の説明が足りませんでした。 SetFucosは行っているのですが、その後フォーカスが移動してしまうのを防止したかったんです。

すると、全ての回答が全文表示されます。

関連するQ&A