|
原因はAfterUpdateイベントを使っていることだと思います。
ご自身で発見されたとおり2回目からは、TextBoxAになにがしかの値(エラー時に""とされた値も含めて)が入っていますのでコントロールを抜ける際にこのイベントが発生しますが、最初は【からっぽ】で、そこに何もいれないで、かつ確定もさせないでフォーカスを移動(タブキーや他のボタンのクリック等)すると、そもそもフィールドが【UpDate】されないので、このイベントは発生しないわけです。
これをExitイベントに変えて実行してみてください。これならフォーカスを移動すれば必ず発生しますので。ついでにエラー時、Cancel=trueとすることでフォーカスの移動要請もリセットされますのでフォーカスを元に戻す必要もありません。
ところで、現在のAfterUpdateルーティンでCancel=trueと書いておられますがCancel変数はここで使えません。おそらくoptionでExplicitとしておられないので
エラーには、なっていないんでしょうが。できるだけExplicitとされるよう、推奨します。
それと、多くの方々が言っておられるように、VBAのアプリレベルではNULLは、まず登場しません。IsNullは不要ですね。IsNmericと""で【ない】ことを確認されれば充分でしょうね。
|
|