감사와 같은
뭔가를 실행하기 위해 정규식을 사용할 수있는 코드의 유용한 비트. 왜 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