Whole Number Validation in Input Box

D

Dkt24

I am having problems with an input box. The user can only put in a whole
number greater than or equal to 3. If they put in text or a decimal, I want
it to display an error and reopen the dialogue box. I got the text part, but
not the decimal validation. Any suggestions? The example of the code thus
far is written below.

'The user is now asked to input the number of sides in the box.
'The only valid answers is a numeric whole number greater than or equal to 3

Dim c As Integer, sides As Variant
c = 3
sides = Application.InputBox("Please enter the number of sides of your box",
"Box Geometry", c)
If sides = False Then GoTo 100
If sides = "" Or Not IsNumeric(sides) Then GoTo 2 Else GoTo 3
2
Repsonse = MsgBox("Your input must be a whole number greater than 3. Try
again.", vbOKOnly, "Error")
GoTo 1
3
If sides < 3 Then GoTo 2 Else GoTo 4
4
100
 
B

Bernie Deitrick

Dkt24,

Try it like below. Wasn;t sure whether 3 was a vlaid entry or not, since
your message and your math conflicted.

If three is Ok, then change sides<=3 back to sides <3 and change
the "greater then 3" part of your message to "3 or greater"

HTH,
Bernie
MS Excel MVP


Sub TryNow()
Dim c As Integer, sides As Variant
c = 3
GetEntry:
sides = Application.InputBox( _
"Please enter the number of sides of your box", _
"Box Geometry", c)
If sides = False Then Exit Sub
If sides = "" Or Not IsNumeric(sides) Or _
sides <= 3 Or (CInt(sides) <> sides) Then
MsgBox "Your input must be a whole number greater than 3." & _
"Try again.", vbOKOnly, "Error"
GoTo GetEntry
End If
MsgBox "The valid value entered was " & sides & "."
End Sub
 
D

Dave Peterson

You could just truncate the value they give you:

sides = int(sides)

or you could check
if sides = int(sides) then
'no decimals
else
'decimals
end if
 
D

Dkt24

It works! Thanks, Bernie.

Bernie Deitrick said:
Dkt24,

Try it like below. Wasn;t sure whether 3 was a vlaid entry or not, since
your message and your math conflicted.

If three is Ok, then change sides<=3 back to sides <3 and change
the "greater then 3" part of your message to "3 or greater"

HTH,
Bernie
MS Excel MVP


Sub TryNow()
Dim c As Integer, sides As Variant
c = 3
GetEntry:
sides = Application.InputBox( _
"Please enter the number of sides of your box", _
"Box Geometry", c)
If sides = False Then Exit Sub
If sides = "" Or Not IsNumeric(sides) Or _
sides <= 3 Or (CInt(sides) <> sides) Then
MsgBox "Your input must be a whole number greater than 3." & _
"Try again.", vbOKOnly, "Error"
GoTo GetEntry
End If
MsgBox "The valid value entered was " & sides & "."
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top