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(エクセル)
-
英数字のチェックをしたい ACCESSのVBAで
Access(アクセス)
-
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
-
4
セル内の文字列が日本語か英語かを厳密に識別したい
Visual Basic(VBA)
-
5
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
8
エクセルでセルの中身が漢字かどうか識別する方法は?
Excel(エクセル)
-
9
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
10
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
11
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
12
Msgboxの×が押されたとき
Excel(エクセル)
-
13
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
14
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
15
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
16
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
17
別のシートから値を取得するとき
Visual Basic(VBA)
-
18
VBAでの全角数字と半角数字の判断について
Visual Basic(VBA)
-
19
【Excel VBA】データ貼り付け先のシート名選択
Excel(エクセル)
-
20
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
記号は半角と全角どちらがよい...
-
全角英数文字が嫌われる理由を...
-
文字の入力で横バー上段、中断...
-
Excel関数「COUNTIF」で”文字”...
-
IT企業の技術屋にとって全角英...
-
パソコンで全角、半角文字の切...
-
全角括弧と全角読点の間隔を狭...
-
mb_strcut関数について
-
VBAのコマンドボタンの文字列の...
-
1バイト文字の上位4ビット・...
-
文字化け変換方法
-
複数行の文字列を1行にまとめる...
-
正規表現で特定のHTMLタグのク...
-
エクセルVBA 文字列領域が不足...
-
選択したセルでダブルクリック...
-
ソースコードの1行が長いとき...
-
掲示板で改行されない
-
VBAでCSVをExcelに取り込む時に...
-
\\nと\\rの違い
-
JAVA System.out.println の ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスで1025文字...
-
文字の入力で横バー上段、中断...
-
Excel関数「COUNTIF」で”文字”...
-
エクセルのCOUNTIFが正しくカウ...
-
全角括弧と全角読点の間隔を狭...
-
半角記号、全角記号を含む正規...
-
特定の文字を簡単な操作で半角...
-
全角英数文字が嫌われる理由を...
-
VBAで英数字入力チェックしたい。
-
エクセルでの漢字、カタカナ、...
-
全角半角変換 C++/CLI
-
XMLのタグ名の禁則文字
-
VBScriptである文字列に半角文...
-
記号は半角と全角どちらがよい...
-
文字列中の両丸括弧を取り除くV...
-
パソコンで全角、半角文字の切...
-
HTML5の「pattern」属性で前後...
-
Replace関数は文字数の制限ある...
-
Excel2002 一桁数字だけ全角に置換
-
エスケープ文字にstr_replaceが...
おすすめ情報