MS WORD 2010 使用 VBA 在 table 单元格中键入文本,然后重新格式化并键入更多文本 w/o 删除之前的文本

MS WORD 2010 Using VBA to type text into table cell then reformat and type more text w/o deleting previous text

我正在使用此代码,它专门将文本放置在我想要使用此代码的精确单元格中:

    Dim myText1 As String
    Dim myText2 As String
    myText1 = "Header"
    myText2 = "Body"

    With ActiveDocument.Tables(1).Cell(2, 2).Range

   .Font.Name = "Times New Roman"
    .Font.Size = 12
   .Font.Bold = True
   .Font.Underline = True   
    .Text = myText1 & vbCr & vbCr & myText2
End With

我遇到的问题是 "myText2" 不应加下划线或粗体。

我试过这个:

    Dim myText1 As String
    Dim myText2 As String
    myText1 = "Header"
    myText2 = "Body"

    With ActiveDocument.Tables(1).Cell(2, 2).Range

   .Font.Name = "Times New Roman"
    .Font.Size = 12
   .Font.Bold = True
   .Font.Underline = True   
    .Text = myText1 & vbCr & vbCr
   .Font.Bold = False
   .Font.Underline = False  
    .Text = myText2

End With

但是第一个 myText1 被删除了,我只剩下 myText2。

还有这个

    With ActiveDocument.Tables(1).Cell(2, 2).Range
       .Font.Name = "Times New Roman"
.Font.Size = 12
.Font.Bold = True
.Font.Underline = True
.InsertAfter myText1 & vbCr & vbCr
.Font.Bold = False
.Font.Underline = False    
.InsertAfter myText2

虽然这附加了文本,但整个 post 的格式没有下划线或粗体,最终结果应该看起来像

页眉

正文

如何重新格式化 myText2,拥有它 post,而不丢失上面格式化的 myText1?

通常情况下,最好按照您的方式输入文本,而不是使用 Select,但是当对单元格的不同部分应用不同的格式时,我认为您必须使用它。我不得不更改格式的顺序,并在文档中稍微绕一下以使其工作:

    Dim myText1 As String
    Dim myText2 As String
    myText1 = "Header"
    myText2 = "Body"

    With ActiveDocument.Tables(1).Cell(2, 2).Range
        .Font.Name = "Times New Roman"
        .Font.Size = 12
        .Font.Bold = True
        .Font.Underline = True
        .Text = myText1 & vbCr & vbCr
    End With

    'Select the whole cell
    ActiveDocument.Tables(1).Cell(2, 2).Select

    'Move to the right
    Selection.Collapse Direction:=wdCollapseEnd
    'Move back to the left
    Selection.MoveLeft wdCharacter, 1

    'Add the text (using the myText1 format)
    Selection.Range.Text = myText2

    'Select the on word the right (myText2)
    Selection.MoveRight wdWord, 1, True

    'Format myText2
    Selection.Range.Font.Underline = False
    Selection.Range.Font.Bold = False

在您的代码中,您已将 With 语句设置为处理单元格的整个区域。这会导致格式应用于整个单元格。

您不必使用 Selection 对象来应用格式,您只需要确保您使用的是正确的范围。使用 Selection 对象会使代码 运行 在移动光标时变慢。

我已经在下面重写了你的代码。

Sub AddTextToCell()
    Dim myText1 As String
    Dim myText2 As String
    myText1 = "Header"
    myText2 = "Body"

    With ActiveDocument.Tables(1).Cell(2, 2).Range
        .Text = myText1 & vbCr & vbCr & myText2
        With .Font
            .Name = "Times New Roman"
            .Size = 12
            .Bold = False
            .Underline = False
        End With
        With .Paragraphs.First.Range.Font
            .Bold = True
            .Underline = True
        End With
    End With
End Sub