セルに書き込まれた文字列に漢字が含まれるかを調べようとした時に、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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELでの16進数取り出し、上...
-
KBとMB
-
K KB MB について詳し...
-
実行計画の「COST」と「BYTE」...
-
文字の容量(サイズ)についての...
-
KBのMB違いって
-
新聞1ページは何バイトですか?...
-
iPhoneの使い方 iPhoneのiCloud...
-
こちらの商品をpcにてexFATにて...
-
アルファベット30文字は何バイ...
-
32bit = 4GB(バイト)?
-
(*^_^*) キロバイトと字数の...
-
1テラバイトに、CDが何枚はいる...
-
1KBは、2の8乗X1000ではない...
-
携帯電話の略語であるMBって英...
-
文字数(バイト数)の数え方が...
-
1Mバイトって何バイト?
-
GB と Gbの違いの意味
-
【有効数字について】 授業で、...
-
1秒は何ミリ秒とか、単位変換の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の容量(サイズ)についての...
-
KBのMB違いって
-
携帯電話の略語であるMBって英...
-
EXCELでの16進数取り出し、上...
-
KBとMB
-
実行計画の「COST」と「BYTE」...
-
1Mbpsって毎秒何キロバイト?
-
1Mバイトって何バイト?
-
GB と Gbの違いの意味
-
アルファベット30文字は何バイ...
-
CSV データのバイト数を調べる...
-
K KB MB について詳し...
-
32bit = 4GB(バイト)?
-
Excel_VBAで改行コードの無いフ...
-
新聞1ページは何バイトですか?...
-
DVD-R 4.7GBって、何byte でし...
-
1KBは、2の8乗X1000ではない...
-
カナカナの(半)濁点がついた文...
-
Oracle AL32UTF8でのバイトサイ...
-
2バイト文字を一括削除するマクロ
おすすめ情報