Good day!

I have a variable string that will hold numbers...I need a function that will check if the number meets the below criteria:

( Acceptable format )
-accept positive numbers
-accept negative numbers
-accept single decimal place (ex. 567.89)
-will not accept double demical place (ex. 567.89.678)
-will not accept single, double positive sign after a digit(ex. 98+45+)
-will not accept single, double negative sign after a digit(ex.34-, 98-45-)

<A little code demonstration>

Public Function Validate_Number(ByRef PassNumber as String) as Boolean
'formatting conditions here
End Function

Private Sub TxtInputNumber_LostFocus()
If Validate_Number(TxtInputNumber.Text)=True Then
msgbox "The Number is in Acceptable Format",vbInformation
else
msgbox "The Number is Not an Acceptable Format",vbInformation
End Sub

I dont want to use masking as this is the required format to follow.

Thank you for helping!

Edited by blocker

3
Contributors
2
Replies
4
Views
5 Years
Discussion Span
Last Post by RonalBertogi

If you google the following you should get plenty of sample code. You will be making use of the following functions to check for an integer value, search for characters etc -

IsNumeric
cInt
Mid
Left
Right
Replace
ASCii

With the above you can perform any validation check you need.

Edited by AndreRet

Here's mine for your number validation

Function Validate_Number(ByRef PassNumber As String) As Boolean
Static szValidNum As String
If szValidNum = "" Then _
szValidNum = "0123456789"

Dim szNum As String
Dim c As String * 1, i As Integer, ch As Integer
Dim dots As Integer, pluses As Integer, minuses As Integer
' Create a local copy of the PassNumber
szNum = PassNumber
ch = Len(szNum)
' Trim trailing dots.
' A number of multiple dots is number if these dots are the end of the number.
' We must be considerate
Do While 1
If Right(szNum, 1) <> "." Then Exit Do
ch = ch - 1
szNum = Left(szNum, ch)
Loop
For i = 1 To ch
c = Mid(szNum, i, 1)
If 0 = InStr(1, szValidNum, c) Then
Select Case c
Case "+"
'Make sure positive sign exists before anything else
If i > 1 Then Exit Function
If minuses Then Exit Function
pluses = pluses + 1
'Reject multiple pluses
If pluses = 2 Then Exit Function
Case "-"
'Make sure negative sign exists before anything else
If i > 1 Then Exit Function
If pluses Then Exit Function
minuses = minuses + 1
'Reject multiple pluses
If minuses = 2 Then Exit Function
Case "."
dots = dots + 1
'Make sure we are the only dot in this decimal number
If dots = 2 Then Exit Function
Case Else
'Hell we are not a number!!!
Exit Function
End Select
End If
Next i
ValidateNum = True
End Function

Edited by RonalBertogi

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.