Excel VBA 句子大小写函数

标签 excel vba

我在以下链接中找到了一篇关于句子大小写功能的旧帖子。 Converting to sentence case using 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
    .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

如有任何帮助,我们将不胜感激。请原谅我转发此内容,我无权评论帖子。

谢谢 加里

最佳答案

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

<小时/>
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

关于Excel VBA 句子大小写函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31162554/

相关文章:

excel - 当工作表受到保护时,宏不起作用。运行宏返回运行时错误 1004

excel - 查找特定文本、选择并突出显示

excel - 在 64 位 Office 中调用 MultiByteToWideChar() 给出错误结果

json - 将 Json 转换为 Xlsx 文件

c# - OpenXML Spreadsheet : Excel gives an error, 然后修复它并且它可以工作。 (C#)

vba - 在 if 函数中添加工作日

vba - IsDate 函数返回意外结果

vba - 删除不等于组合框值的行?

json - VBA/JIRA/JSON : add new key/value to dictionary parsed from a JSON

mysql - 如何在 Google 表格的查询中使用 MAX 返回行?