web-dev-qa-db-ja.com

文字列変数に整数値があるかどうかを確認します

私は子供たちがサンタにメッセージを送ることができるプロジェクトに取り組んでいます。残念ながら、AGEフィールドに整数ではなく文字列を入力すると、プログラムがクラッシュし、文字列「[exampleString]」から「Double」型への変換が無効になります。整数を入力したかどうかを確認する方法はありますか?これがコードです。

If childAge > 0 And childAge < 150 Then
    fmSecA2 = "Wow! You are already " & childAge & " years old? You're growing to be a big " & childGender & " now! "
Else
    fmSecA2 = "Erm, I couldn't really understand your age. Are you making this up? Ho ho ho!"
End If

ありがとう、カイ:)

13

非常に簡単なトリックは parse try 整数としての文字列です。成功した場合、整数です(驚き)。

Dim childAgeAsInt As Integer
If Integer.TryParse(childAge, childAgeAsInt) Then
    ' childAge successfully parsed as Integer
Else
    ' childAge is not an Integer
End If
40
Styxxy

Styxxyの応答を補完します。結果が必要ない場合は、vbNullに置き換えます。

If Integer.TryParse(childAge, vbNull) Then
4
Warchlak

IsNumericはVBに組み込まれ、true/falseを返します

If IsNumeric(childAge) AndAlso (childAge > 0 And childAge < 150) Then
    fmSecA2 = "Wow! You are already " & childAge & " years old? You're growing to be a big " & childGender & " now! "
Else
    fmSecA2 = "Erm, I couldn't really understand your age. Are you making this up? Ho ho ho!"
End If
2
mmeasor

これを使用できます。

Sub checkInt() 
    If IsNumeric(Range("A1")) And Not IsEmpty(Range("A1")) Then 

        If Round(Range("A1"), 0) / 1 = Range("A1") Then 
            MsgBox "Integer: " & Range("A1") 
        Else 
            MsgBox "Not Integer: " & Range("A1") 
        End If 
    Else 
        MsgBox "Not numeric or empty" 
    End If 
End Sub 
1
Quentin Perez
Dim Input 

 Input = TextBox1.Text
 If Input > 0 Then 
   ............................
   ............................
 Else 
   TextBox2.Text = "Please only enter positive integers"
 End If
0
SAm

Styxxyの答えから、整数ではなくバイトとして解析する場合、負の年齢と最大年齢の255もすべて一度にチェックします。

Dim childAgeAsByte As Byte
If Byte.TryParse(childAge, childAgeAsByte) Then
    ' childAge successfully parsed as Byte
Else
    ' childAge is not a Byte
End If

クリスチャン

0
Kristian