更改范围文本的大小写并键入它



可能的情况,假设我们创建了一个包含以下行的Range Object

投机性买入,FV:19.59埃及镑

现在我想将Range Object分成两部分,按 ", " 作为delimiter,以便给定的Range将变为包含"投机性买入"和", FV: EGP19.59"(两个单独的范围(的两个范围。

现在我需要使用以下方法将仅包含"投机性买入"的第一个范围的情况更改为"投机性买入":

.Case = wdTitleWord

以前我使用 .Find 更改以下代码中的范围(这不是完整的代码,因为它只是更改范围 R,而不是将其拆分为两个(:

Sub Range_into_Ranges()
selection.EndKey Unit:=wdLine
selection.MoveUp Unit:=wdParagraph, COUNT:=1, Extend:=wdExtend
Dim R, F As Word.Range
Set R = selection.Range
Set F = R.Duplicate
    With F.Find
    .Text = ", "
    .Forward = True
    .Wrap = wdFindStop
    .Execute
    End With
    If F.Find.Found Then
    R.SetRange Start:=R.Start, _
    End:=F.Start
    R.Case = wdTitleWord
    Else
    End If
End Sub

注意:可能还有其他方法可以产生相同的结果。 您可以自由地建议我另一个简单的代码。

可以使用 WdCharacterCase 枚举将大小写分配给范围。对于标题大小写:

R.Case = wdTitleWord 

放入示例代码的上下文中,如下所示。我做了一些调整:

  • 我的版本假设您想使用当前选择所在的段落,这就是为什么我注释掉了您的前两行
  • 在 VBA 中,您需要声明每个变量的数据类型,否则它是变体。所以:Dim R As Word.Range
  • VBA 提供了根据分隔符划分字符串的Split函数。我用它来获取要搜索的术语,以便您可以直接获取范围
  • 我发现在具有全部大写的文本上设置标题大小写时,它不会将大写字母减少为小写。但是首先应用小写,然后应用标题大小写,确实有效。

示例代码

Sub Range_into_Ranges()
'    Selection.EndKey Unit:=wdLine
'    Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Dim R As word.Range, F As word.Range
    Dim sTerm As String, bFound As Boolean
    Set R = Selection.Paragraphs(1).Range
    R.MoveEnd wdCharacter, -1 'Trim off the paragraph mark
    sTerm = R.Text
    sTerm = Split(sTerm, ",")(0)
    Set F = R.Duplicate
    With F.Find
        .Text = sTerm
        .Forward = True
        .wrap = wdFindStop
        bFound = .Execute
    End With
    If bFound Then
        F.Case = wdLowerCase
        F.Case = wdTitleWord
    Else
    End If
End Sub

最新更新