- ベストアンサー
エクセルVBAで2回エラーが出力される
- エクセルVBAにて、特定の個所で2回のエラーメッセージが表示される問題が発生しています。
- 他の数値項目では問題ないのに、特定の個所のみで2回エラーメッセージが表示されます。
- 解決策が分かる方がいらっしゃいましたら、アドバイスをお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Private Sub Textbox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) MsgBox "aaa" If TextBox1.Text <> "" And IsNumeric(TextBox1.Text) = False Then MsgBox "数値を入力してください" Exit Sub End If End Sub と Cancel = True を除くと1回しか通りません。入れると確かに2度とおる。 Cancel = Trueが行われる場合このイベントが再度発生しているのでしょう。 似たようなケースで、 Changeイベントなどでは、よくプログラムで値をセットするが、またイベントを起してしまうケースを経験します。 Application.EnableEvents = False などを始めに入れたりする。 参考 http://okwave.jp/qa/q3037406.html ーー またテキストボックスは値をチェックする機会(タイミング)が難しいように思う。 安全なのは別のコマンドボタンをクリックしたとき行うことでしょうが、外に良い方法があるのかな。 そのほか前後で順次イベントが2重3重に起こるものもあるので、VBAの初心者はイベントを使うのは難しいと思う。 参考 http://www.geocities.jp/cbc_vbnet/kisuhen/Event.html Eventの発生する順序
その他の回答 (1)
- nattocurry
- ベストアンサー率31% (587/1853)
[F8]キーでのステップ実行で、流れの確認をした上での質問でしょうか? やってないのなら、やってみて、どのような流れでエラーメッセージが2回出力されているのかを分析しましょう。 きっと、あなたが想定しているものとは別の流れになっているはずです。
補足
ご回答ありがとうございます。 1ステップづつ何度も行っているのですが、 Exit Sub を通っているのに、「Exit Sub」のところで もう一度、「Private Sub txtMei4_1_BeforeUpdate」に戻ってきます。 もしかしたら、フレーム内の最後の項目なので、 そのせいかなと思ってきました。 本当は、「Exit Sub」の前に、項目をクリアしたいのですが、 それをやると、今度は、カーソルがエラーを出したところに 出てこなくなりました。 てんやわんやです。