gpt4 book ai didi

Excel VBA 句子大小写函数

转载 作者:行者123 更新时间:2023-12-02 11:38:09 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com