プロが教える店舗&オフィスのセキュリティ対策術

VBAで文字に半角が含まれているか調べる方法を教えて頂けないでしょうか?全角が含まれているかのチェックはできたのですが。。。
下記は全角が含まれているかのチェックです。

If Asc(Mid(文字列, i, 1)) < 0 Or Asc(Mid(文字列, i, 1)) > 256 Then
  処理
End If

A 回答 (3件)

半角が含まれているかどうか調べる関数は、確かなかったと思います。


ただ、全角文字は2バイトであることを利用すれば、以下のようなルーチンで半角文字の有無を検出できます。

Sub test()

Dim str As String
Dim len1 As Long
Dim len2 As Long

str = Range("A1").Value
len1 = Len(str)

str = StrConv(str, vbFromUnicode)
len2 = LenB(str)

If len1 = len2 Then
Range("b1") = "すべて半角文字の場合の処理"
Else
If len1 * 2 = len2 Then
Range("b1") = "すべて全角文字の場合の処理"
Else
Range("b1") = "全角半角混在の場合の処理"
End If
End If

End Sub
    • good
    • 0

こんにちは。

maruru01です。

全角のチェックをそのまま反対にしたらどうですか。


If Asc(Mid(文字列, i, 1)) >= 0 And Asc(Mid(文字列, i ,1)) <= 256 Then
  MsgBox "半角"
End If
    • good
    • 0

こんにちは


VBAというかOfficeのバージョンにもよりますが・・。
Strconv関数を使うと判定できますよ。
UnicodeコードからANSIにして、LenとLenBを比べる方法の他に、文字列をvbWideで全角にしてみて、前の文字列と比較して、違っていれば半角が含まれていたと判定するとかですね。
では!
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!