
No.2ベストアンサー
- 回答日時:
IsAlphaが無いですね。
チェック用に、半角に統一して(StrConv)文字列を作り、
1字づつ、JISコードの65-90、97-122をエラーにするチェックを行い、上記作った文字列はチェック後は使い捨てる。
こういうルーチンを作るより他ないでしょう。
記号なども含めて考える。
ただ記号は十分検討が必要です。制限しすぎると、運用後にダウンとか、大騒ぎになる恐れをこめてます。
ありがとうございます。
仕様が変わってしまい、また新たな問題が発生してしまいました・・
また行き詰ったらご教授ねがうやもしれません。
今回はとても勉強になりました!
No.5
- 回答日時:
#04です。
補足ありがとうございましたですが想像力が貧困なので、何をどうすれば良いのか理解できませんでした
おそらく事前チェックと事後チェックを一緒くたに書いているからだと思います。もし事前チェック方法は回答として求めていないなら、混乱しますから書かなくて結構です。
具体的な文字列(○×1Ab)を示して、このような結果(1AやError)を得たいというように再度説明をお願いできませんか
No.4
- 回答日時:
正規表現を用いたユーザ定義関数を2つ書きました。
MyFunc1は文字列から半角英数字だけを取り出す関数で、MyFunc2は半角英数字以外がある時に「Error(文字列)」を返す関数です質問のデータがどのように引き渡されるのか分かりませんので、とりあえずエクセルのユーザ定義関数として作りました。ワークシートに値を入力して関数の動作を確認してみてください。仕様に問題がなければロジックだけを流用できると思います。関数は
=MyFunc(A1)
のようにして使います(A1はデータの入力されたセルアドレス)
Function MyFunc1(ByVal trg As Range) As String
'半角英数字を取り出す
Dim RE, mchItems
Dim strPattern As String
Dim idx As Integer
If trg <> "" Then
Set RE = CreateObject("VBScript.RegExp")
strPattern = "[0-9A-Z]"
With RE
.Pattern = strPattern
.IgnoreCase = True
.Global = True
Set mchItems = .Execute(StrConv(trg.Value, vbNarrow))
If mchItems.Count > 0 Then
For idx = 0 To mchItems.Count - 1
MyFunc1 = MyFunc1 & mchItems(idx).Value
Next idx
End If
End With
Set RE = Nothing
End If
End Function
Function MyFunc2(ByVal trg As Range) As String
'半角英数字以外があればエラーを返す
Dim RE, mchItems
Dim strPattern As String
Dim idx As Integer
If trg <> "" Then
Set RE = CreateObject("VBScript.RegExp")
strPattern = "[^0-9A-Z]"
With RE
.Pattern = strPattern
.IgnoreCase = True
.Global = True
Set mchItems = .Execute(StrConv(trg.Value, vbNarrow))
If mchItems.Count > 0 Then
MyFunc2 = "Error"
End If
End With
Set RE = Nothing
End If
End Function
ありがとうございます。
とても参考になりました。
ぜひ取り入れたいのですが、仕様が変わってしまい、
また新たな問題が発生してしまいました。
フォームでの事前チェックで、全角入力を”必ず弾きたい”、かつ
カタカナ・ひらがな入力を無効化する仕様に…
現在、KeyPress()で、大小A~Zと0~9のみ受け入れるようにしました。
が、キーボードで大小変換を押されてしますと(2バイト)は
チッェク対象外になってしまうようです。
ご教授いただければよろしくお願いします。
No.1
- 回答日時:
全角入力を”必ず弾きたい”のですか?
StrConv(str, vbNarrow)
で半角変換して受け入れるのは駄目ですか?
この回答への補足
その項目はフォームで、IME設定で半角英数字のみ入力
させています。(この状況ならチェックは要らないはずなのですが)
どうしてもチェックをいれないといけないようなのです。
なので、全角入力はありえない状況での、wチェックということ
になります。
入力前で半角英数字をはじいて、入力後チェックで半角英数字を
確認というような感じです。
もしよろしければご教授ください。
ありがとうございます。参考にいただきました。
しかし仕様が変わってしまい、
また新たな問題が発生してしまいました。
フォームでの事前チェックで、全角入力を”必ず弾きたい”、かつ
カタカナ・ひらがな入力を無効化する仕様に…
現在、KeyPress()で、大小A~Zと0~9のみ受け入れるようにしました。
が、キーボードで大小変換を押されてしますと(2バイト)は
チッェク対象外になってしまうようです。
ご教授いただければよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 助けてください!スパムメールがとんでもなく大量に届きます。 3 2023/08/10 16:32
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- Safari(サファリ) ブラウザーの検索欄に、仮名や漢字が入力できません。 1 2022/10/06 12:55
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
- CPU・メモリ・マザーボード 「コンピューターのメモリが不足しています」 3 2022/12/15 22:07
- Excel(エクセル) exel 漢字・英数字混在セルの入力規則 5 2022/04/03 11:08
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) 見えているセルの数字だけの合計を計算させたい 4 2022/09/11 17:23
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルでアルファベットか数値の判定をしたいのですが
Excel(エクセル)
-
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
5
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
6
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
Excel-VBA>コントロールをグレイアウトするには?
Excel(エクセル)
-
9
アルファベットの入った文字列の抽出の仕方について。
Excel(エクセル)
-
10
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
11
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
12
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
13
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
14
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
15
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
16
VBAで文字列を数値に変換したい
Excel(エクセル)
-
17
VBA 見つからなかった時の処理
Excel(エクセル)
-
18
文字列にアルファベットが何文字目に含まれているかの算出
Visual Basic(VBA)
-
19
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
20
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel関数「COUNTIF」で”文字”...
-
全角括弧と全角読点の間隔を狭...
-
文字の入力で横バー上段、中断...
-
エクセルのCOUNTIFが正しくカウ...
-
全角英数文字が嫌われる理由を...
-
メッセージボックスで1025文字...
-
Replace関数は文字数の制限ある...
-
VBAで英数字入力チェックしたい。
-
半角記号、全角記号を含む正規...
-
VBScriptである文字列に半角文...
-
エクセルでデータを30バイト...
-
全角半角変換 C++/CLI
-
PHPでMySQLに入力した半角スペ...
-
1文字のStrConv fromUnicode
-
2つ以上の連続する空白文字を除去
-
文字列中の両丸括弧を取り除くV...
-
日本語(2byte文字)の判別方法...
-
@ezweb.ne.jpについて教えて下...
-
入力データ「英数字」と「アン...
-
秀丸マクロについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の入力で横バー上段、中断...
-
メッセージボックスで1025文字...
-
全角括弧と全角読点の間隔を狭...
-
エクセルのCOUNTIFが正しくカウ...
-
Excel関数「COUNTIF」で”文字”...
-
VBAで英数字入力チェックしたい。
-
XMLのタグ名の禁則文字
-
全角英数文字が嫌われる理由を...
-
半角記号、全角記号を含む正規...
-
2つ以上の連続する空白文字を除去
-
Replace関数は文字数の制限ある...
-
記号は半角と全角どちらがよい...
-
エクセルでの漢字、カタカナ、...
-
特定の文字を簡単な操作で半角...
-
SEO タイトルに「&」を使用
-
パソコンで全角、半角文字の切...
-
文字列中の両丸括弧を取り除くV...
-
Excel2002 一桁数字だけ全角に置換
-
IT企業の技術屋にとって全角英...
-
Phonetic関数を利用して文章中...
おすすめ情報