感谢这个,代码有用位。为什么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:'Sub ConvertToSentenceCase()ActiveCell = SentenceCase(ActiveCell)End Sub' – seegoon
你应该发布这个答案(并接受它),以便其他人可以看到你的问题已经解决了(以及你如何解决它),甚至如果你自己解决它。 :-) – JimmyPena