Function ProperCase(inString As String) As String
' ThisFunction first converts inString to lowercase, then it
' iterates through each character and capitalizes only those characters
' which come after a non-alphabetic character (except for the
' apostrophe, which is treated as an alphabetic character). This
' results in a proper-cased string, which is what is returned.
On Error Goto ErrorHandler
ProperCase = ""
Dim outString As String
Dim char As String
Dim code As Integer
Dim last As Integer
Dim L As Integer
'----- Make sure we have a string
If Strcomp(inString, "") = 0 Then Goto TheEnd
'----- First make everything lowercase
inString = Lcase$(inString)
'----- Process the first char, if it's alpha then upper it
char = Mid$(inString, 1, 1)
code = Asc(char)
If Isnumeric(code) Then
If (code >= 97 And code <= 122) Then
outString = Ucase$(char)
Else
outString = char
End If
End If
For L = 2 To Len(inString)
last = Asc(Right$(outString, 1))
char = Mid$(inString, L, 1)
code = Asc(char)
If Isnumeric(code) Then
If (96 <= code And code <= 122) And _ ' char is lower case
and
(last <> 39) And _ ' the last char is not
an apostrophe
Not((65 <= last And last <= 90) Or _ ' and is not a member
of
(97 <= last And last <= 122)) Then ' of the alphabet
outString = outString & Ucase$(char)
Else
outString = outString & char
End If
End If
Next L
ProperCase = outString
TheEnd:
Exit Function
ErrorHandler:
ProperCase = inString
Print "ProperCase: " & Trim$(Str$(Err)) & ": " & Error$
Resume TheEnd
End Function
This was first published in November 2000