Public Function CleanString(InputString As String, _
Optional ScanDirection As Variant) As String Dim k As Integer Dim DecimalFound As Boolean Dim MinusFound As Boolean Dim LeftToRight As Boolean Dim FromValue As Integer Dim ToValue As Integer Dim StepIncrements As Integer Dim OutputString As String Const MinusSign As String = "-" ' ' Protect against a zero length input string ' OutputString = "" If Len(InputString) <= 0 Then GoTo FunctionExit End If ' ' Check if the first character is a minus sign ' If Left(InputString, 1) = MinusSign Then MinusFound = True Else MinusFound = False End If ' ' Determine the scan direction ' If IsMissing(ScanDirection) Then GoSub SetLeftToRight Else If ScanDirection = 0 Then GoSub SetLeftToRight Else '** Right to left FromValue = Len(InputString) ToValue = 1 StepIncrements = -1 LeftToRight = False End If End If ' ' Examine the passed string character by character ignoring any ' which are not 0 thru 9 or the first decimal point encountered ' DecimalFound = False For k = FromValue To ToValue Step StepIncrements Select Case Mid(InputString, k, 1) Case "0" To "9" GoSub KeepCharacter Case "." If Not DecimalFound Then GoSub KeepCharacter DecimalFound = True End If End Select Next k ' ' If needed, put the minus sign back ' If MinusFound Then OutputString = MinusSign & OutputString End If ' ' Return the cleaned up string ' FunctionExit: CleanString = OutputString Exit Function '******************************************************************** ' Subroutines '******************************************************************** SetLeftToRight: FromValue = 1 ToValue = Len(InputString) StepIncrements = 1 LeftToRight = True Return KeepCharacter: If LeftToRight Then OutputString = OutputString & Mid(InputString, k, 1) Else OutputString = Mid(InputString, k, 1) & OutputString End If Return End Function |