Sub IntTrim_Locator()
Dim Temp$, Msg$, K%
Test1:
Temp = IntTrim(" A B ", , , True)
Test2:
Temp = IntTrim("A B C", 2, , True)
Test3:
Temp = IntTrim(" A B C ", , False, True)
Test4:
Temp = IntTrim(" A B C ", 0, , True)
End Sub
Function IntTrim(InputString As String, _
Optional MaxBlanks As Integer = 1, _
Optional RemvLeadTrail As Boolean = True, _
Optional Test As Boolean = False) As String
Dim N As Integer, LenInputString As Integer, LenIntTrim As Integer
Dim LeadingBlankCnt As Integer, TestCnt As Integer
Dim Msg As String, DisplayVal As String
Const Title$ = "Function 'IntTrim'"
LenInputString = Len(InputString)
On Error GoTo ErrorReturn
IntTrim = Replace(InputString, Chr(160), Chr(32))
IntTrim = Trim(IntTrim)
LenIntTrim = Len(IntTrim)
Do Until InStr(1, IntTrim, Space(MaxBlanks + 1)) = 0
IntTrim = Replace(IntTrim, Space(MaxBlanks + 1), Space(MaxBlanks))
Loop
If Not RemvLeadTrail _
Then
LeadingBlankCnt = InStr(1, InputString, Left(Replace(InputString, " ", ""), 1)) - 1
IntTrim = Space(LeadingBlankCnt) & IntTrim & Space(Len(InputString) - LeadingBlankCnt - LenIntTrim)
End If
If Test _
Then
DisplayVal = IntTrim
For N = 1 To Len(IntTrim)
InputString = Replace(InputString, " ", ".")
InputString = Replace(InputString, Chr(160), ".")
DisplayVal = Replace(DisplayVal, " ", ".")
DisplayVal = Replace(DisplayVal, Chr(160), ".")
Next N
Msg = "Input string: '" & InputString & "'" & vbCr & _
"Output string: '" & DisplayVal & "'" & vbCr & vbCr & _
"Options" & vbCr & _
" MaxBlanks (internal): " & MaxBlanks & vbCr & _
" RemvLeadTrail: " & RemvLeadTrail & vbCr & _
" Test (mode): True"
MsgBox Msg, , Title
End If
GoTo Finish
ErrorReturn:
IntTrim = CInt(CVErr(xlErrValue))
Finish:
On Error GoTo 0
End Function
|