おかげで、コードの有効ビットのようなパース
何かを実行するために正規表現を使用することができます。なぜ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)
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)を使用して、スペースの数に関係なく、文字列の前後にあるすべてのスペースを(文例を変更せずに)削除することもできます。
あなたが与えた最初のリンクは期待どおりに機能します。 –
申し訳ありません。私は本質的に間違って実行していた。 'Sub ConvertToSentenceCase()ActiveCell = SentenceCase(ActiveCell)End Sub' – seegoon
これはあなたの問題が解決されたこと(そしてあなたの解決方法)もしあなたがそれをあなた自身で解決すれば。 :-) – JimmyPena