• 締切済み

入力値チェック

VBにて、テキストフィールドに入力した値を チェックするプログラムを作りたく、記載を致しました。 わからない点として、 (1) 値を入れ終わった直後に入力チェックが入るようにする コードをどうかけばいいのか? (2) 入力チェックは、"1~5"の値入力のみを受付ける。 それ以外は、"入力を受け付けない"というメッセージを 促し、テキストフィールドの値を空にする。 の2点です。 このチェック処理を作るための手順についてお伺いしたく 記載を致しました。 ご教授の程お願い致します。

みんなの回答

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.2

久しぶりすぎてVBがうまく書けない‥ ほんの一例を下記に示す。 Private Sub TextBox1_Leave(‥略‥) Handles TextBox1.Leave  If Not chkMoji(TextBox1.Text) Then   MsgBox("入力を受け付けない", MsgBoxStyle.Critical, "禁止文字チェック")   TextBox1.Text = ""  End If End Sub Private Function chkMoji(ByVal strMoji As String)  If Not Regex.IsMatch(strMoji, "^[1-5]$") Then   Return False  End If  Return True End Function ※ VB2005 正規表現を扱うRegexクラスの名前空間はSystem.Text.RegularExpressionsです

tkihara197
質問者

お礼

非常にためになる意見ありがとうございます。 早速ですが、利用させていただきたいと思います。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

VBのバージョンが何だか不明なので、具体的な記述はできませんが、 次のような理屈になると思います。 >値を入れ終わった直後に入力チェックが入るようにする 「値を入れ終わる」をどう定義するかです。私の感覚ではフォーカスを 失った(別のフィールドに移動した)時のイベントプロシージャで チェックをします。 >入力チェックは、"1~5"の値入力のみを受付ける コントロールのテキストプロパティで、入力値を受け取る。 If文で、入力値>="1" And 入力値<="5" を判断する。 これ以外ならメッセージボックスを表示して、コントロールの テキストプロパティに空文字列("")を代入する。 こんな感じでしょうか。

tkihara197
質問者

お礼

ロジックで作成するという点で理解しました。 VBをやるのは初めてで、プロパティですべてが対応できる ものなのかと思ってしまい、わからない部分がありました。 ご教授ありがとうございます。

関連するQ&A

  • テキストボックスの入力値チェックについて

    テキストボックスに入力した値に対して半角カナで入力されているかのチェックをコマンドボタン押下時に行いたいのですが、 どのようなコードを書けばよろしいのでしょうか? ついでに、半角数字のみのチェックも教えてください。

  • VB6 重複チェックについて

    お世話になります。 次の処理をVisual Basic6.0で教えてください。 1.Text1にキー入力した値をコマンドボタンクリックすると、Text1の値を保存します。 2.次にText1に新たに入力してコマンドボタンクリックで前項で保存した値と重複して   いないかチェックして重複無しならText1の値を保存します。 3.Text1に新たに入力して・・・・重複チェックして・・・・ といった具合に保存する値と重複チェックする対象の値がどんどん増えていきます。 さすがに10,000件はいかないですが。 保存先は読み書き込みの時間も考慮してVB内のTextBOXが第1希望、外部のtxtファイルやcsvファイルは第2希望としたいです。 If Text1=保存値 Then  処理 else  処理 End If 保存値をText2として行いましたが、完全一致でないとダメでした。 入力値:保存値=1:n(入力値が複数の保存値と重複したかどうか)が知りたいです! お手数おかけしますが、何卒よろしくお願いします。

  • 入力値チェックについて

    access2007 にて・・・ テキストボックスの入力値の最終チェックとして(ボタンを押したときにチェックする)、 半角数字と半角ハイフン以外が入っていたらエラーとしたいのですが、 どのようなコードを書けばよろしいのでしょうか?ご指導願います。

  • ACCESS2000にて「うるう年」のチェック

    ACCESS2000にて、フィールドの入力規則で「うるう年」のチェックをしたいです。 値のチェックはしますが、チェックした値の入力も許可したいのですが、それができてません。 例えば2012/2/28、2016/2/28などは「うるう年ですけど、2/29じゃなくて大丈夫ですか?」 のような警告をし、入力しているユーザーが2/28で大丈夫であれば、2/28も入力可能 2/29に修正が必要であれば、ユーザーが手動で2/29と入力し直す、としたいです。 テクストボックスの入力規則で制限してしまうと、警告は出るものの、 その禁止した値は入力ができません。 マクロでも良いです。 VBAは得意でないので。。 フィールド名やフォーム名を変えればそのまま貼付られるような感じで お教え頂けるとありがたいです。 どうかお知恵お貸し下さい。 宜しくお願い致します。

  • テキストボックスの入力チェック。

    Version 6.0 です。 テキストボックスに入力された値の中に任意の文字があるかどうかを判断する関数というのはあるでしょうか?InStrとかでやってみたのですが、If文を繰り返すことになってしまい、見難い状況です。 2つのテキストボックスに年月を入力させ、 "yyyymm"、"yyyym"、"yyyy/mm"、"yyyy/m" が入力可。入力した文字列に"/"があるかないかを判断し、あればそのままでIsDateでチェック。なければ、"/"を入れてIsDateでチェック、とさせたいです。 何か簡単なコードの書き方等あれば、ぜひ教えてください。分かり難いところがあれば、補足します。よろしくお願いします。

  • VB.NET テキストボックスの入力チェック

    Visual Basic 2008 に関する質問です。 画面のテキストボックスの入力値をチェックする処理として、 Validatingイベントを使用しています。 例えば、 画面上に配置しているボタンをクリックして画面を閉じさせたい場合(Application.Exit()等)、 テキストボックスの値が未入力であると、上記の入力チェックが先にはしってしまい、 画面を閉じることができません。 閉じるボタンの処理を最優先させる方法について、 どなたかご教授いただけませんでしょうか? (※初歩的なご質問で大変申し訳ございません。)

  • テキストコントロールの値が変わったときに知らせてくれる方法

    VB6です。 テキストコントロールに「1」を入力してそのまま処理を行いたいのですが、どこかのコードでそのテキストコントロールの値を「5」に変えているようです。 自分でコードを書いておきながら、どこで間違って変更しているのかわからなくなってしまいました。 このような場合に、該当のテキストコントロールの値が直前に変更されたその行を特定する機能はVB6にあるのでしょうか。

  • 期間重複チェック。コード以外での回答はご遠慮下さい

    期間重複チェック。コード以外での回答は遠慮下さい VB2005+SQLServer2005で開発を行っています。 期間を3つ入力してデータを抽出する プログラムを作っているのですが 期間重複チェックがわかりません 期間(1)~期間(3)まであります(抽出条件) 1,2,3各期間重複する場合は再入力させるとしか 仕様書に書かれておらず プログラミングできず困っています。 期間(1) txtStartDate1.text txtEndDate1.text 期間(2) txtStartDate2.text txtEndDate2.text 期間(3) txtStartDate3.text txtEndDate3.text 実を言うとvisual basicのカテゴリでも同じような 質問をしたのですがプログラムコードの回答が得られず 困っています。プログラマに向いていないというような 回答も見受けられましたがどうしても プログラムコードでの回答がほしいです 皆さんお忙しい中申し訳ありませんが プログラムコードでのご回答をお願いいたします。 コード以外でのご回答はご遠慮ください 私はこの仕事に向いていないのでしょうか 毎日つらいです。

  • テキストフォームの未入力チェック

    お世話になります。 Javascriptでテキストフォームの入力チェックを行っております。 テキストフォームにはDBから取得した値が入っており、その値を変更して更新できるプログラムを作ろうとしています。 テキストフォームが未入力だった場合に元の値を入れてPOSTリクエストを投げたいのですが方法が分かりません。 (よく見かける未入力だったらアラートを出すというのは出来るのですが・・・) 以下ソースの抜粋になります。 function check(){ for(i=0; i<document.iform1.length;i++){ if(document.form1.elements[i].value==""){ document.iform1.elements[i].valueに元の値を入れたい。 } } <form name="form1" action="updata.php" method="POST"> <input type="button" name ="save" value="更新" onClick="check()"> </form> 以上、ご教示よろしくお願いいたします。

  • データグリッドビューでの入力値チェックについて

    VB2008の環境です。 元々VB6を使用していて1週間前からVB.NETを勉強中です。 現在データグリッドビューを用いてデータを入力できるソフトを作成中です。 編集中の行から移動した時に、移動前の行の入力した項目について、上限値を超えていないか?ブランクではないか?他の行と重複した値になっていないか?などの確認を行いたいと思っています。 上記のチェックの内、他の行との重複チェックを行おうとすると、新規行を追加した時に、新規行に値が入っていないためエラーとなってしまいます。 どなたか行単位のデータチェックで参考になりそうなサンプルソースをご存知ないでしょうか。

専門家に質問してみよう