TextBoxに文字を入力、指定した桁数を超える場合、
KeyPressイベントを使ってAsciiコードをZEROにし、
入力できないようにしています。
FormモジュールでAsciiコードをZEROにすると内容を解除しますが、
これを標準モジュールで行いたいのですが、
AsciiコードをZEROに設定しているにもかかわらず、解除されません。
標準モジュールでチェックした後、桁数を超える場合は
フォームモジュールでKeyAscii = ZEROにするしかないのでしょうか?
教えて下さい。
宜しくお願い致します。
そもそも、イベント引数をイベント外に飛ばすその仕様はいかがなものかと。
通常はWithEventsなどを使って、まとめたほうが良いのでは?
とりあえず環境と再現できるコードを。
ノ<色々脳内補完されているようで、
「ZERO」とか格好良い定数ですw(Σ
以下余談
で、適当に考えて、私がやってみたところ…普通にできましたよ?
'Form1(テキストボックス:TextBox1を貼り付ける)
Private Sub Text1_KeyPress(KeyAscii As Integer)
Call foo(KeyAscii)
End Sub
'Module1
Public Sub foo(ByRef hoge As Integer)
If 97 <= hoge And hoge <= 122 Then hoge = 0
End Sub
※色々書いて誤爆してたら…スマソ(orz
ねんどさん、ガッさん、ありがとうございます。
KeyAscii = 0が設定されていました。
小数点桁数チェックで整数5桁+小数2桁入力の
テキストボックスの入力桁数制限をしたかったのですが、
そのコーディングの間違いでした。
申し訳ありません・・・
そこで別の質問ですが・・・
TextBoxのMaxLengthプロパティに7桁設定
123456 → 12345 までOK
123.456 → 123.45 までOK
というような感じです。
皆さんはどのようにされているか教えていただけますでしょうか?
>TextBoxのMaxLengthプロパティに7桁設定
>123456 → 12345 までOK
>123.456 → 123.45 までOK
>というような感じです。
>皆さんはどのようにされているか教えていただけますでしょうか?
何が知りたいのか意味不明です。
>小数点桁数チェックで整数5桁+小数2桁入力
の仕様を実装するのにどのようにしているかということでしょうか?
お手軽に実装するならMaskEditコントロールを使います。
テキストボックスを使うならそれなりのコードを書きます。
>>小数点桁数チェックで整数5桁+小数2桁入力
>の仕様を実装するのにどのようにしているかということでしょうか?
>お手軽に実装するならMaskEditコントロールを使います。
>テキストボックスを使うならそれなりのコードを書きます。
そうです。申し訳ないです。
MaskEditコントロールは使用せず、テキストボックスを使う予定です。
そのときの実装方法をご教授願います。
> テキストボックスを使う予定です。
> そのときの実装方法をご教授願います。
まぁ、例外処理をどのように処理するかによってコードが変わるので、
簡単に済ますなら、
入力時に常にチェックをするのではなく最後に一度だけチェックするとか。
貴方の具体的な仕様だけを満たすコードは書きたくないので実装方法は自分で考えて下さい。
テキストのプロパティでSelStartやIMEMode、MaxLen
テキストボックスのイベントでKeyDownやKeyPress、Validate
文字列の長さを返すLen関数や文字列の一部分を置換するMidステートメント
等を調べれば何かできそうな気がしてくるでしょう。
自分だったら、リアルタイムな判定ならテキストボックスのChangeイベントとLenでやるかなぁ…と思いますが。
よろしくないかな。(汗)
ツイート | ![]() |