使用VBA转换为句子案例

see*_*oon 6 excel vba excel-vba

我一直在谷歌上搜索一页,在这里寻找这个看似简单的请求的解决方案,但无济于事.有没有人知道使用将字符串转换为句子的可靠方法?

理想情况下,我会将其构建为子而不是函数,因此从GUI调用更容易.

作为参考,我想要:

这里是一个长长的,高级的句子.请立刻向我致敬.

成为:

这是一个冗长,丑陋的大写句子.请立即修改我.

转换为标题案例我发现非常简单(因为有一个内置函数)但转换到句子案例确实非常困难.

我尝试了以下一些方法,但每次都会出现错误:

我怎样才能让它发挥作用?

bre*_*tdj 7

您可以使用RegExp更有效地运行解析

像这样的东西

Sub Tested()
    Call ProperCaps("HERE IS A LONG, UGLY UPPERCASE SENTENCE. PLEASE AMEND ME IMMEDIATELY." & vbCrLf & "next line! now")
End Sub

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 = 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
        MsgBox strIn
    End With
End Function
Run Code Online (Sandbox Code Playgroud)