
現在VB6.0の勉強をしております。
すごく初歩的な質問だとは思いながらも、自分で調べられなかったので質問させてください。
テキストボックスに入力された文字列に許可文字以外が入力された場合にエラーとしたいのですが、方法が分かりません。
C言語の用に文字列を添え字指定でループ出来れば良いんですが、VBだと、どのように行うのでしょうか?
一応自分で調べ、似たような質問を見つけたんですが、私の場合は禁止文字が多すぎるので、それを一つずつチェックするのは無謀かなと思いまして・・・・。
http://oshiete1.goo.ne.jp/qa2174793.html
ちなみに許可文字は、半角カタカナと'0'~'9'と'A'~'Z'です。
それ以外の文字が含まれている場合はエラーにしたいです。
どうかよろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
>「正規表現」の部分は「変数」という意味なんでしょうか?
変数名や関数名を漢字にしただけです。お好みで変えてもらって
結構です。
>のような感じでしょうか?
そうです。
>はやはり分けて記載すべきですか?
分けて記載すると正しく動作しません。禁止文字(検出パターン)は
同時に記述しなければなりません。
>「*」や「-」もパターン指定したい
「正規表現の構文」見ました?書いてあるんだけどね・・・
(1)[xyz] x 、 y 、 z のいずれかと一致する
(2)[^xyz] x 、 y 、 z のいずれとも一致しない
今回はこのパターンで"\d"(数字)、"A-Z"(A~Z)、"。-゜"(半角カナ)
という具合で、否定の^があるから、いずれにも該当しない文字を
検索するという意味です。
(3)\(バックスラッシュ)は特殊文字をエスケープします。
「*」と[ ] 内の「-」は特殊文字なので、エスケープが必要です。
と、ここまで書けば正解を書けますよね?
分けて記載するとオカシくなる原因も理解できましたか?
VB6なんだからデバッガでいろいろ試してみて、体で覚えるのが
一番です。
オマケ:"[^\dA-Z。-゜\*\-]"
ご丁寧にありがとうございますm(__)m
「正規表現の構文」見たんですが、いまいち理解出来なくて・・・
詳細に記載していただきありがとうございます!
オマケも参考にさせていただきます。
本当にありがとうございました。
No.6
- 回答日時:
No.4
- 回答日時:
テキストボックスのValidateイベントを活用してみましょう
この場合テキストボックスからフォーカスが外れる時点でチェックが機能します
許可しないデータの入力があるとフォーカスの移動を行いません
VB6のメニューから プロジェクト > 参照設定で
『Microsoft VBScript Regular Expressions 5.5』を設定します
Private sub Text1_Validate(Cancel as Boolean)
dim objRegp as New RegExp
objRegp.Global = True
objRegp.Pattern = "[^\dA-Z。-゜]"
Cancel = objRegp.TEst( Text1.Text )
if Cancel then
MsgBox "入力が不正です"
end if
End Sub
といった具合で …
# 正規表現部分は nda23氏の回答を引用しています
ご回答ありがとうございます。
出来れば、フォーカスロストでのチェックは行いたくないので、参考にさせていただきます。
参照設定の記載はとても参考になります。
ありがとうございました。
No.3
- 回答日時:
正規表現を使うと簡単です。
Function 不許可文字検出(ByVal 文字列 As String) As Boolean
Dim 正規表現
Set 正規表現 = CreateObject("VBScript.RegExp")
正規表現.Global = True
正規表現.Pattern = "[^\dA-Z。-゜]"
不許可文字検出 = 正規表現.Test(文字列)
End Function
不許可文字検出("A0カ")→False 不許可文字を検出しなかった
不許可文字検出("a0カ")→True 不許可文字を検出した
http://msdn.microsoft.com/ja-jp/library/cc392487 …
http://msdn.microsoft.com/ja-jp/library/cc392020 …
この回答への補足
ご回答ありがとうございます。
丁寧に記載していただき、とてもありがたいんですが、「正規表現」の部分は「変数」という意味なんでしょうか?
実際に記載してみました↓
Function CheckPermissionStr(ByVal inStr As String) As Boolean
Dim seiki
Set seiki = CreateObject("VBScript.RegExp")
seiki.Global = True
seiki.Pattern = "[^\dA-Z。-゜]"
CheckPermissionStr = seiki.Test(inStr)
End Function
上記関数の使い方
If CheckPermissionStr(コントロール.Text) Then
不許可文字を検出した場合の処理(エラー)の処理
Else
不許可文字を検出しなかった場合(正常)の処理
のような感じでしょうか?
また、パターン指定ですが、半角カタカナと'0'~'9'と'A'~'Z'
はやはり分けて記載すべきですか?
あと、「*」や「-」もパターン指定したいんですが、どのように記載すれば良いのか教えていただけないでしょうか?
分からない事だらけで質問してしまいすいませんm(__)m
No.1
- 回答日時:
以下のページが参考になると思います。
http://homepage1.nifty.com/rucio/main/Samples/vb …
この実装方法は、テキストボックスにキープレスイベントを実装し、
その中で押されたキーを判定するものです。
指定されたキーでなければテキストボックスに入力されません。
サンプルを参考に、半角英数と半角カタカナ、それと
文字を削除するためのバックスペースを許可キーにして下さい。
※この方法ではコピー&ペーストで貼り付けられたデータに対して
チェックを行うことができません。
最終的に1文字ずつチェックする仕組みを作成するか、
貼り付けを禁止するコントロールを作成するか、
その他なんらかの対策は必要になると思います。
この回答への補足
ご回答ありがとうございます。
申し訳ございません、私の説明不足なのですが、チェックはコマンドボタン押下時に行いたいです。
入力そのものを不可能にするのではなく、入力された後で、文字列中の全ての文字に対してチェックを行いたいと思っております。
URLはとても参考になります。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- C言語・C++・C# C言語の質問です、プログラミング初心者です このような文字列があった場合 "abcdef☆ghijk 4 2022/11/22 10:56
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- WordPress(ワードプレス) Wordpressの記事URLを自由に決めたい 3 2022/06/02 12:05
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA/ Formatで文字列が...
-
replaceが一行に何個もある?
-
入力された文字を1文字ずつチ...
-
JSで文字列の先頭1文字を消した...
-
お気に入りに追加について
-
階層化されたメニューの作り方
-
直下のディレクトリのファイル...
-
C#の質問です。
-
リクエスト結果が一瞬しか表示...
-
助けてください!スパムメール...
-
関数を最終行までコピー
-
列を非表示にするマクロが実行...
-
以下のコードを実行しても、オ...
-
Aタグを文字ではなくタグとして...
-
送信ボタンをbuttonに変えてonc...
-
JavsScriptでつまみ調節はでき...
-
ナビゲーションのインジケート
-
VBAマクロ、パスがありませんで...
-
ホームページビルダーでスクリ...
-
javascriptでエクセルデータ読...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字認証の問題
-
正整数の半角数字かどうか判定する
-
VB.NET2003 テキストボックスに...
-
VC#でテキストボックスに変数の...
-
エクセルVBA/ Formatで文字列が...
-
禁止文字チェック
-
ハイフンだけ置換したい。
-
VBAによる第3、4水準文字の判定...
-
「終了していない文字列型の定...
-
Visual Basic 6.0 のテキストボ...
-
javascript 文字列の最後から1...
-
gas 全角数字を半角数字に変換
-
Vba SelStart、SelLen教えてく...
-
C#でTextBoxに数値のみ入力可能...
-
CListCtrl の特定のセル(アイ...
-
Excel VBA カタカナ セル判定...
-
エクセル 半角英数6文字以上 ...
-
入力された文字を1文字ずつチ...
-
正規表現について
-
c言語で「文字列(最大80文字)お...
おすすめ情報