excelvba语句格函数

excelvba语句格函数,excel,vba,Excel,Vba,我在下面的链接中找到了一篇关于句子格函数的老帖子。 我碰巧喜欢bretdj设计的以下功能 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 .G

我在下面的链接中找到了一篇关于句子格函数的老帖子。

我碰巧喜欢bretdj设计的以下功能

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
我搞不懂的是,如何使函数对特定单元格中键入的字符串进行句子大小写,然后将更正后的句子放回原始单元格中。我不需要把它放在留言框里。类似于以下内容:

If Not Intersect(Target, myrange2) Is Nothing Then
    Target.Value = ProperCaps(Target.Value)
End If
任何帮助都将不胜感激。请原谅我转载这篇文章,我无权评论帖子

谢谢
Gary

您的函数缺少最后一部分,但是如果最后一部分只是多行
结束函数
,那么您需要做的就是将
MsgBox strIn
替换为
ProperCaps=strIn



如果在
ProperCaps()
函数中注释掉
MsgBox strIn
行,它是否不符合您的要求?它做什么?不,它清除单元格中的值,无论{MsgBox strIn}是否存在。我想用正确的映射来更正字符串,然后把它放回那个单元格。一行简单的代码我想不出来。你解决了我的问题。谢谢一个简短的问题,我不熟悉这个代码,所以我不理解它。我如何调整它使第一个单词的第一个字母大写?你能告诉我第一个字母没有大写的文本(我只需要看到大写字母前面的几个字符)这是作为所有小写字母输入在同一个大单元格中的。使用Alt+Enter键输入第一行之后的每一行。“学院将包括一天的县长培训。总共三天半。每个县最多可以派出两名个人。他们可能包括县长。”因此,唯一应该大写的是“the”中的第一个“t”?
Option Explicit

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
    End With

    ProperCaps = strIn

End Function