![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
セルに書き込まれた文字列に漢字が含まれるかを調べようとした時に、If Len(Range("c" & i).Value) <> LenB(Range("c" & i).Value) Thenとしてみました。
セルに書き込まれた文字列は、事前に、StrConvのvbNarrow処理していたのですが、2バイトの半角文字になったようです。
lenを使わない方法でもいいのですが、文字列に漢字(漢数字、2バイト半角数字を含む)の有無を識別する方法はありますか?
詳しいかた教えて頂けないでしょうか?
別の言い方をすれば、大文字小文字を含む英数字と"-"のみで成り立つ文字列を抽出したいのです。(今書いているVBAでは、"-"が含まれている文字列の抽出を行っているので、結果的に、大文字小文字を含む英数字となります)
宜しくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんばんは。
Wendy02です。>2バイトの半角文字を1バイト文字にする方法ってあるのでしょうか?
2バイト文字を半角の1バイトの処理するのは、ANSIに関するだけの話ですが、
ActiveCell.Value = StrConv(ActiveCell.Value, vbNarrow)
ご存知のように、基本的には、これでよいのです。Excelのワークシートは、今でも、S-JIS です。
実際に、VB Editor 上は、Unicode ですので、それを、ワークシートに戻すか、一旦、StrConv(arg, vbFromUnicode)で、ANSIに戻さない限りは、バイト長、もしくは全角・半角は確認しにくいのです。
>セルに書き込まれた文字列は、事前に、StrConvのvbNarrow処理していたのですが、2バイトの半角文字になったようです。
厳密には、Unicode 上でも、2バイトの上位バイトと下位バイトを調べれば、全角は、上位・下位に入っていますが、半角には、2バイトは使っていても、片方しか入っていません。上位に入れるか、下位に入れるか、どちらかの方法があります。そういう調べる方法もありますが、#2 で書いたCheck2byte関数の方が楽です。
No.2
- 回答日時:
こんばんは。
質問の内容が、それぞれ違っているので、ちょっと理解しにくいです。
>2バイトの半角文字になったようです。
Unicode では、見かけ上だけで2バイトは変わりません。
ANSI なら、二つに分かれます。
'2バイト文字のチェック
Function Check2byte(argText As String) As Boolean
If LenB(StrConv(argText, vbFromUnicode)) <> Len(argText) Then
Check2byte = True
End If
End Function
'漢字チェック(最後に2バイト数字を加えた)
Function KanjiCheck(argText As String) As Boolean
With CreateObject("VBScript.RegExp")
.Pattern = "[\u4E00-\u9FA5\uF900-\uFA2D0-9]+"
.Global = True
KanjiCheck = .Test(argText)
End With
End Function
'大文字小文字を含む英数字と"-"のみで成り立つ文字列を抽出したいのです。
こちらは意味がよく分かりませんが、こういうことなのでしょうか。
Function PullOutText(argText As String) As String
With CreateObject("VBScript.RegExp")
.Pattern = "^[a-z\d\-]+$"
.Global = False
.IgnoreCase = True
If .Test(argText) Then
PullOutText = argText
End If
End With
End Function
この回答への補足
大変、丁寧な回答有難う御座います。
早速、活用させていただきたく存じます。
便乗的な質問で恐縮なのですが、2バイトの半角文字を1バイト文字にする方法ってあるのでしょうか?
根本的には、そのあたりが私の解決策となりそうなので、あつかましいと思いながら、追加の質問をお許しください。
宜しくお願い致します。
No.1
- 回答日時:
漢字が入っていないのは、lenb(strconv(変数,vbfromunicode))=len(変数)が成立すればいいと思います
VBAの文字型はUnicodeになるので、半角英数も2バイトになります
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) エクセルで文字列と数字が混在する列に書式設定したい。 3 2022/12/19 09:11
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1Mバイトって何バイト?
-
携帯電話の略語であるMBって英...
-
EXCELでの16進数取り出し、上...
-
文字の容量(サイズ)についての...
-
1メガ、1ギガはナンバイトですか?
-
5.1byteは何bitですか?
-
メモリーの単位を解説してくだ...
-
1バイトは何ビット?
-
実行計画の「COST」と「BYTE」...
-
(*^_^*) キロバイトと字数の...
-
Excel_VBAで改行コードの無いフ...
-
GB と Gbの違いの意味
-
ffftpのサイズの単位は何でしょ...
-
1B
-
16進数に変換して浮動小数点表示
-
文字数(バイト数)の数え方が...
-
32bitコンピューティングについて
-
ソニーのメモリスティック
-
基礎情報資格に関する問題です
-
文字列をバイト数分表示するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の容量(サイズ)についての...
-
文字化けはなぜ日本語が入って...
-
KBのMB違いって
-
EXCELでの16進数取り出し、上...
-
KBとMB
-
携帯電話の略語であるMBって英...
-
1Mバイトって何バイト?
-
実行計画の「COST」と「BYTE」...
-
GB と Gbの違いの意味
-
アルファベット30文字は何バイ...
-
文字数(バイト数)の数え方が...
-
32bit = 4GB(バイト)?
-
1KBは、2の8乗X1000ではない...
-
CSV データのバイト数を調べる...
-
K KB MB について詳し...
-
2バイト文字を一括削除するマクロ
-
DVD-R 4.7GBって、何byte でし...
-
マトリックスサイズが512×512で...
-
新聞1ページは何バイトですか?...
-
Oracle AL32UTF8でのバイトサイ...
おすすめ情報