gpt4 book ai didi

vba - Excel中带有额外规则的正确案例

转载 作者:行者123 更新时间:2023-12-04 21:12:25 26 4
gpt4 key购买 nike

我在 Excel 中将 vba 用于正确案例,但我需要为其添加异常(exception)规则以节省大量手动编辑。我需要将“-”之后的第一个字母也大写,例如:
当我运行我的脚本时,“michael-jordan”现在变成了“Michael-jordan”。
我需要“迈克尔-乔丹”成为“迈克尔-乔丹”。

这是我的代码:
我的代码中也有“von”、“af”和“de”的异常(exception)。

Sub ProperCase()

Dim rng As Range

'Use special cells so as not to overwrite formula.
For Each rng In Selection.SpecialCells(xlCellTypeConstants, xlTextValues).Cells
Select Case rng.Value
Case "von", "af", "de"
rng.Value = StrConv(rng.Value, vbLowerCase)
Case Else
'StrConv is the VBA version of Proper.
rng.Value = StrConv(rng.Value, vbProperCase)
End Select
Next rng

End Sub

最佳答案

这是我的答案的副本Post .它应该很适合你。

我用了Rules for Capitalization in Titles of Articles作为创建大写异常(exception)列表的引用。
Function TitleCase使用 WorksheetFunction.ProperCase预处理文本。出于这个原因,我为收缩设置了一个异常(exception),因为 WorksheetFunction.ProperCase不正确地大写它们。

每个句子中的第一个单词和双引号后的第一个单词将保持大写。标点符号也处理得当。

Function TitleCase(text As String) As String
Dim doc
Dim sentence, word, w
Dim i As Long, j As Integer
Dim arrLowerCaseWords

arrLowerCaseWords = Array("a", "an", "and", "as", "at", "but", "by", "for", "in", "of", "on", "or", "the", "to", "up", "nor", "it", "am", "is")

text = WorksheetFunction.Proper(text)

Set doc = CreateObject("Word.Document")
doc.Range.text = text

For Each sentence In doc.Sentences
For i = 2 To sentence.Words.Count
If sentence.Words.Item(i - 1) <> """" Then
Set w = sentence.Words.Item(i)
For Each word In arrLowerCaseWords
If LCase(Trim(w)) = word Then
w.text = LCase(w.text)
End If

j = InStr(w.text, "'")

If j Then w.text = Left(w.text, j) & LCase(Right(w.text, Len(w.text) - j))

Next
End If
Next
Next

TitleCase = doc.Range.text

doc.Close False
Set doc = Nothing
End Function

关于vba - Excel中带有额外规则的正确案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39569861/

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