Public Function strSentenceCapitals(strString As String, Optional spaceNum As Integer = 1, Optional withDoEvents As Boolean = False) As String
If strString = "" Then Exit Function
'Check for all end-of-sentence punctuation
If Not InStrB(strString, ". ") > 0 Then
If Not InStrB(strString, "? ") > 0 Then
If Not InStrB(strString, "! ") > 0 Then
Exit Function
End If
End If
End If
If spaceNum < 1 Then spaceNum = 1
If spaceNum > 1 Then spaceNum = 2
Dim searchStrTxt As Integer
Dim strCmpare As String
Dim strRplc As String
Dim strModified As String
Dim strFirstChr As String
If withDoEvents = True Then
GoTo doFreeProc
Else
GoTo doHoldProc
End If
Exit Function
'Do with DoEvents
doFreeProc:
strModified = strString
strFirstChr = UCase(Mid$(strModified, 1, 1))
strModified = strFirstChr & Mid$(strModified, 2)
If spaceNum = 1 Then
'Search for single-spaced punctuation
For searchStrTxt = 1 To Len(strString) - 1
DoEvents
strCmpare = Mid$(strModified, searchStrTxt, 2)
If strCmpare = ". " Then
strRplc = Mid$(strString, searchStrTxt, 3)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
If strCmpare = "? " Then
strRplc = Mid$(strString, searchStrTxt, 3)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
If strCmpare = "! " Then
strRplc = Mid$(strString, searchStrTxt, 3)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
Next searchStrTxt
Else
'Search for double-spaced punctuation
For searchStrTxt = 1 To Len(strString) - 1
DoEvents
strCmpare = Mid$(strModified, searchStrTxt, 2)
If strCmpare = ". " Then
strRplc = Mid$(strString, searchStrTxt, 3)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
If strCmpare = "? " Then
strRplc = Mid$(strString, searchStrTxt, 3)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
If strCmpare = "! " Then
strRplc = Mid$(strString, searchStrTxt, 3)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
Next searchStrTxt
End If
'Assign new string
strSentenceCapitals = strModified
Exit Function
'Do without DoEvents
doHoldProc:
strModified = strString
strFirstChr = UCase(Mid$(strModified, 1, 1))
strModified = strFirstChr & Mid$(strModified, 2)
If spaceNum = 1 Then
'Search for single-spaced punctuation
For searchStrTxt = 1 To Len(strString) - 1
'DoEvents
strCmpare = Mid$(strModified, searchStrTxt, 3)
If strCmpare = ". " Then
strRplc = Mid$(strString, searchStrTxt, 4)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
If strCmpare = "? " Then
strRplc = Mid$(strString, searchStrTxt, 4)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
If strCmpare = "! " Then
strRplc = Mid$(strString, searchStrTxt, 4)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
Next searchStrTxt
Else
'Search for double-spaced punctuation
For searchStrTxt = 1 To Len(strString) - 1
'DoEvents
strCmpare = Mid$(strModified, searchStrTxt, 3)
If strCmpare = ". " Then
strRplc = Mid$(strString, searchStrTxt, 4)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
If strCmpare = "? " Then
strRplc = Mid$(strString, searchStrTxt, 4)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
If strCmpare = "! " Then
strRplc = Mid$(strString, searchStrTxt, 4)
strModified = Replace$(strModified, strRplc, UCase$(strRplc))
End If
Next searchStrTxt
End If
'Assign new string
strSentenceCapitals = strModified
End Function