在处理 VBA 时,您必须考虑范围,然后是给定范围的属性。在这里,您有一个示例代码可以执行您想要的操作:
Private Sub CommandButton1_Click()
Set Object = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, Left:=10, Top:=10, Width:=80, Height:=80)
With Object.TextFrame.TextRange
.Text = "Hi my name is Koki"
With .Characters(2).Font
.ColorIndex = wdTurquoise 'http://msdn.microsoft.com/en-us/library/office/aa195611(v=office.11).aspx
End With
With .Characters(12).Font
.ColorIndex = wdTurquoise
End With
With .Characters(18).Font
.ColorIndex = wdTurquoise
End With
End With
End Sub
如您所见,我在开始时添加了文本框。我这样做是为了确保您使用正确的文本框(如果添加 ActiveX 文本框,行为会有所不同)。
- - - - - 更新
为了依赖建议的方法,您可能必须使用 Document Open 事件来删除任何形状并编写您想要的形状。例如:
Private Sub Document_Open()
For i = ActiveDocument.Shapes.Count To 1 Step -1
ActiveDocument.Shapes(i).Delete
Next i
Set Object = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, Left:=10, Top:=10, Width:=80, Height:=80)
End Sub
此代码将在文档打开时调用,并将删除您创建的所有形状(不是 ActiveX 对象,如 commandButton)并添加文本框。您可以全局声明Object
变量并从代码中的任何位置访问它(CommandButton1_Click()
例如)。
请记住,这是获得您想要的解决方法的示例。您不需要删除给定的形状,您可以使用此代码检查在文档开头要做什么:如果有一个名为“我想要的名称”的形状,让它在那里并且不要做任何东西,只需将其设置为全局Object
变量,即:
Private Sub Document_Open()
For i = ActiveDocument.Shapes.Count To 1 Step -1
If(ActiveDocument.Shapes(i).Name = "the name I want") Then
Set Object = ActiveDocument.Shapes(i)
Exit Sub
End If
Next i
Set Object = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, Left:=10, Top:=10, Width:=80, Height:=80)
End Sub