- ベストアンサー
Access2000での質問
ある条件を満たさない場合、あるテキストボックスからフォーカスが抜けれなくしたいのですがどうすればいいのですか? 例えば、txt名前では半角20文字もしくは全角10文字までしか書き込めない。しかしそれ以上になるとエラーをだして、そこから条件を満たすまではずっと抜けれなくしたいのです! ものすごい初心者なのでわかりやすく丁寧な回答をお待ちしております!よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 txt名前のExit(フォーカス喪失時)イベントに書くやり方もあります。 半角20文字全角10文字以下のやり方は、moshamoshaさんご自身が質問されていたので承知していると思います。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=351503 Private Sub txt名前_Exit(Cancel As Integer) If LenB(StrConv(Me!txt名前.Text, vbFromUnicode)) > 20 Then MsgBox "文字数オーバー" Cancel = True With Me!txt名前 .SelStart = 0 .SelLength = Len(.Text) End With End If End Sub イベントプロシージャの中で、Cancelという引数がある場合は、それにTrueを代入することによって、ある動作をキャンセル(取り消し)することが出来ます。 BeforeUpdate(更新前処理)イベントの場合は、データの更新をキャンセルし、Exit(フォーカス喪失時)イベントでは、フォーカスの喪失(他のコントロールへのフォーカスの移動)をキャンセルします。 Exit Subというのは、そこでプロシージャから出るということです。 もしそれ以降にキャンセルしない場合の処理が書いてある場合は、キャンセルならそれらのコードは実行しないので、そこでプロシージャを抜けるためにExit Subを書きます。
その他の回答 (1)
- aptiva
- ベストアンサー率36% (193/529)
txt名前のBeforeUpdateイベントプロシージャで、入力された文字の長さの半角全角を区別し(参考URL)、長さが規定以上なら、メッセージを表示して、Cancel = TrueをセットしExit Subします。 簡単な説明ですが、一度チャレンジしてみてください。
補足
>Cancel = TrueをセットしExit Subします。 これってどういうことですか? 全く意味がわかりません…
お礼
いつもご丁寧な説明ありがとうございます! 本当に勉強になっています。