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