ショボ短歌会

ある条件を満たさない場合、あるテキストボックスからフォーカスが抜けれなくしたいのですがどうすればいいのですか?

例えば、txt名前では半角20文字もしくは全角10文字までしか書き込めない。しかしそれ以上になるとエラーをだして、そこから条件を満たすまではずっと抜けれなくしたいのです!

ものすごい初心者なのでわかりやすく丁寧な回答をお待ちしております!よろしくお願いします。

A 回答 (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を書きます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/09/18 09:21

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



簡単な説明ですが、一度チャレンジしてみてください。

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

この回答への補足

>Cancel = TrueをセットしExit Subします。

これってどういうことですか?
全く意味がわかりません…

補足日時:2002/09/17 09:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す