• ベストアンサー

Access2000での質問

ある条件を満たさない場合、あるテキストボックスからフォーカスが抜けれなくしたいのですがどうすればいいのですか? 例えば、txt名前では半角20文字もしくは全角10文字までしか書き込めない。しかしそれ以上になるとエラーをだして、そこから条件を満たすまではずっと抜けれなくしたいのです! ものすごい初心者なのでわかりやすく丁寧な回答をお待ちしております!よろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.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を書きます。

moshamosha
質問者

お礼

いつもご丁寧な説明ありがとうございます! 本当に勉強になっています。

その他の回答 (1)

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.1

txt名前のBeforeUpdateイベントプロシージャで、入力された文字の長さの半角全角を区別し(参考URL)、長さが規定以上なら、メッセージを表示して、Cancel = TrueをセットしExit Subします。 簡単な説明ですが、一度チャレンジしてみてください。

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=355973
moshamosha
質問者

補足

>Cancel = TrueをセットしExit Subします。 これってどういうことですか? 全く意味がわかりません…

関連するQ&A