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
我正在使用此代码,它专门将文本放置在我想要使用此代码的精确单元格中:
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