Word VBA大写单词的第一个字符问题
Posted
技术标签:
【中文标题】Word VBA大写单词的第一个字符问题【英文标题】:Word VBA uppercase first character of words issues 【发布时间】:2019-02-19 10:30:45 【问题描述】:好的,假设我想将 Word 文档中选定范围内的单词中的第一个字符大写,但某些表达式除外。我有一个做类似事情的脚本,但我对某些表达式有疑问。在脚本中,我使用 Selection.Range.Case,但问题在于 URL 地址。我想将地址中的所有内容都保留为小写,但 Selection.Range.Case 将 URL 链接分解为多个字符串,例如:https、:、//、/ 等。该 URL 字符串的每个第一个字符都大写。选定的文本范围在编号列表中,并且 URL 是下一个编号项目之前的最后一件事。是否有一些解决方案可以在下一个编号项目之前将 http:// 或 https:// 之后的所有内容连接成一个字符串?谢谢。
【问题讨论】:
您需要提供一些示例文本,一个恰好选择了 WHAT 的示例,一些(最小)代码,代码给出的结果和预期的结果。我们可以用一些东西作为起点。这是非常模糊和笼统的。 【参考方案1】:如果选定的文本范围仅在编号列表中,可以尝试这样的操作
Sub test()
Dim Pg As Paragraph, Pos As Long, Rng As Range
For Each Pg In Selection.Paragraphs
If Not Pg.Range.ListFormat.List Is Nothing Then 'Process only bulleted list
PgTxt = Pg.Range.Text
'Debug.Print PgTxt
Pos = InStr(1, PgTxt, "http")
If Pos <> 1 Then 'bypass if http found at start of List item then no Case Change
If Pos > 1 Then Pos = Pos - 1 'http found some where within the List item
If Pos = 0 Then Pos = Len(PgTxt) ' if http not found in the list Item
Set Rng = ActiveDocument.Range(Pg.Range.Start, Pg.Range.Start + Pos)
Rng.Case = wdTitleWord
End If
End If
Next
End Sub
【讨论】:
好的,我已经将它与我的代码合并,它工作得很好。谢谢。 感谢@Greedy 接受并让我的分数超过 1K。但是,尽管我介绍了两种情况 1. URL 位于列表项的末尾。 2 列表项中没有 URL。但我错过了第三点,即 URL 位于列表项的开头。尽管在您的情况下可能不需要特别要求。我正在编辑帖子以合并第三种情况。以上是关于Word VBA大写单词的第一个字符问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在javascript中将字符串的每个单词的第一个字符大写? [复制]