TEXTBOXへの入力時に、桁数による入力制限を
おこないたいと考えてます。
プロパティのMAXLENGTHで「〜桁まで」という制限は
実現できたのですが、同じTEXTBOXの「〜桁以上」という
条件を設定するにはどうすればいいのでしょうか?
(たとえば「5桁以上10桁までしか入力できない」というようにしたい)
簡単なことなのかもしれないのですが。。わかりません。
ぜひお教えください。
ちょっと考えれば分かると思いますが…、何桁以上という設定は出来ません。
データベースを使ってるなら保存する前とか、
LostFocusイベントとかで桁数チェックしてメッセージを出したりすればイイと思います。
nanashi さんの補足ですが…
>「5桁以上10桁までしか入力できない」
設定が実現できたとして、5桁までの文字はどうやって入力・修正
するか?ってゆー問題が発生するわけですね。仕様によっては
出来ないことは無いと思いますが、2・3行のコーディングで
できあがり…なんてことはないでしょう。
ですから入力は自由にできるけどどこかのタイミングでエラー
メッセージが出る…と言う処理が一般的です。
文字列の長さを判断するのは Len 関数ででも…
全角半角などを判定する必要があるなら過去ログ検索してみて下さい。
こんなサンプル書くまでもないかもしれませんが…
[VB6.0]
Private Const MaxLength As Integer = 10
Private Const MinLength As Integer = 5
Private Sub Text1_Validate(Cancel As Boolean)
With Me.Text1
If Len(.Text) > MaxLength Or Len(.Text) < MinLength Then
MsgBox MinLength & "文字以上" & MaxLength & "文字以下で入力して下さい。"
End If
End With
End Sub
お知恵をいただきありがとうございます。
これでできそうなのですが、ちょっと思いついたので
発言いたします。
「10桁のみ」と条件を範囲指定ではない形にした場合も
やはり同様の記述が必要でしょうか。
電話番号の入力を促すのですが、
よく考えてみると電話番号(携帯ではない)って必ず10桁
かなあと。。
「この条件ならこんな簡単な方法が。。。」というものが
もしございましたらご連絡ください。
フリーダイヤルとかは12桁くらいありますね。
外国の方が入力する可能性は無いのでしょうか?
ま、通常の個人情報の入力欄であれば、殆ど10桁かとは思いますが、
私ならば、そういった事(10桁を超える可能性)を考慮して、
特に桁数制限などを設けないでしょうね。
ユーザーが間違えても、それはそれで仕方が無いという事にします。
それが不安ならば、入力制限をするのでは無く、
怪しいデータのみユーザーに再確認してもらうかな。。。
入力が終了した段階(Validate等)で、10桁を超えていたり、
0で始まっていない、国内に存在しない市外局番などをチェックして、
チェックにひっかかったデータは、
MsgBox(vbYesNoCancel)を表示してユーザーに再確認してもらうとか。。。
>フリーダイヤルとかは12桁くらいありますね。
10桁ダタ。。。
http://www.soumu.go.jp/joho_tsusin/top/tel_number/q_and_a-2001aug.html
>市外局番と市内局番の桁数は合せて5桁(一部地域では4桁)
…の"一部地域"がいまだ存在するなら9桁の地域があるって事でしょうか…?
…そこまで調べる気にはなりませんでしたが。
>「10桁のみ」と条件を範囲指定ではない形にした場合も
>やはり同様の記述が必要でしょうか。
…10桁以上10桁以下の範囲指定とも解釈できますが?
…というか最初から言ってることですが、10桁のみの条件でも
1〜9桁を入力する時、又は文字列を Backspace とかして修正する時は
文字列の長さは10桁じゃないですよね?その状態を許さない!なんて
仕様にしたら入力自体出来なくなるんですけど?その辺の動作をどう
考えているのか教えてもらえないのでは何とも言えません。
どういった動作をお望みなんでしょうか?。
ありがとうございました。
また御礼がおそくなりまして申し訳ございません!
完璧です!できました。
自分がやりたかったことは、登録ボタン押下時に
各種桁数チェックをおこなうものであり、
これで実現可能です。
本当にありがとうございました。