これ、便利なコードをありがとう。VBが適切な大文字小文字を区別し、文の大文字小文字を区別しない理由は非常に奇妙です。私の目的のために微調整しました。前にスペースがある場合、オリジナルは最初の文字を大文字にしないので、私のいくつかの変更を共有してもかまいません。
文の最初または最後の不要なスペースを削除するために、上記から呼び出される別の関数を追加しました。
Public Function DblTrim(vString As String) As String
Dim tempString As String
tempString = vString
Do Until Left(tempString, 1) <> " "
tempString = LTrim(tempString)
Loop
Do Until Right(tempString, 1) <> " "
tempString = RTrim(tempString)
Loop
DblTrim = tempString
End Function
Public Function ProperCaps(strIn As String) As String
Dim objRegex As Object
Dim objRegMC As Object
Dim objRegM As Object
Set objRegex = CreateObject("vbscript.regexp")
strIn = DblTrim(strIn)
strIn = LCase$(strIn)
With objRegex
.Global = True
.ignoreCase = True
.Pattern = "(^|[\.\?\!\r\t]\s?)([a-z])"
If .test(strIn) Then
Set objRegMC = .Execute(strIn)
For Each objRegM In objRegMC
Mid$(strIn, objRegM.firstindex + 1, objRegM.Length) = UCase$(objRegM)
Next
End If
ProperCaps = strIn
End With
End Function
ProperCaps(Yourstring)を呼び出すと、最初の文字を大文字にして、すべてのスペースを削除して文を取り戻すことができます。
DblTrim(Yourstring)を使用して、スペースの数に関係なく、文字列の前後のすべてのスペースを(文の大文字と小文字を変更せずに)削除することもできます。