半角数字かどうかを判断する
ある文字列が、半角数字かどうかを判断する方法です。
「RegExpオブジェクト」を使用すれば、高度な正規表記が使えるようになるようですが、参照設定をしないといけないので、今回は使用しない方法で。
IsNumeric関数を用いれば数字かどうかは判断できそうですが、
Sub test()
If IsNumeric("123") Then
Debug.Print ("123は数字")
End If
If IsNumeric("3D2") Then
Debug.Print ("3D2は数字")
End If
End Sub
このプログラムを実行すると、「3D2」も半角数字と判断されてしまいます。
これは、こちらのページを参照すれば、なぜそのようになるかは分かると思います。
Sub test()
If hankakusuujicheck("123") Then
Debug.Print "123は半角数字だよ"
Else
Debug.Print "123は半角数字じゃないよ"
End If
If hankakusuujicheck("3D2") Then
Debug.Print "3D2は半角数字だよ"
Else
Debug.Print "3D2は半角数字じゃないよ"
End If
End Sub
Function hankakusuujicheck(ByVal checkvalue As String) As Boolean
Dim i As Integer
For i = 1 To Len(checkvalue)
If Not Mid(checkvalue, i, 1) Like "[0-9]" Then Exit Function
Next
hankakusuujicheck = True
End Function
このように、Likeを用いて、1文字ずつ分解して判断するのが良いと思います。