私は子供たちがサンタにメッセージを送ることができるプロジェクトに取り組んでいます。残念ながら、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
ありがとう、カイ:)
非常に簡単なトリックは 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
Styxxyの応答を補完します。結果が必要ない場合は、vbNullに置き換えます。
If Integer.TryParse(childAge, vbNull) Then
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
これを使用できます。
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
Dim Input
Input = TextBox1.Text
If Input > 0 Then
............................
............................
Else
TextBox2.Text = "Please only enter positive integers"
End If
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
クリスチャン