Perhaps I still miss some features of an MS-Word's method. Please check/test. Any thought is welcome.
vb Code:
Public Function SentenceCase(sText As String) As String Dim i As Long, bCap As Boolean, Ch As String * 1 SentenceCase = LCase(sText) '-- convert all to lowercase first bCap = True For i = 1 To Len(SentenceCase) Ch = Mid$(SentenceCase, i, 1) Select Case AscW(Ch) Case 97 To 122 '-- a-z : separated and put on top as happens more often If bCap Then Mid$(SentenceCase, i, 1) = UCase(Ch) bCap = False End If Case 33, 46, 63, 10, 13 '-- sentence terminators ! . ? Lf Cr bCap = True Case 32, 160, 9 '-- space, non-break space, tab Case 34, 41, 93, 125, 148 '-- closing quotes or brackets Case Is < 128 '-- other chars between 0-127 If bCap Then bCap = False Case Else '-- Extended-Ascii (128-255) or Unicode (> 255) If bCap Then If StrComp(Ch, UCase(Ch), vbBinaryCompare) <> 0 Then '-- a letter that has uppercase. Mid$(SentenceCase, i, 1) = UCase(Ch) End If bCap = False End If End Select Next End Function




Reply With Quote