半角数字かどうかを判断する

ある文字列が、半角数字かどうかを判断する方法です。

 「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文字ずつ分解して判断するのが良いと思います。

 VBAのお勉強 まとめに戻る

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2011 simple blog いろいろ勉強中 Suffusion theme by Sayontan Sinha