在VB Ms Word 2007中更改一个字母颜色

时间:2013-07-14 13:08:04

标签: vba button textbox ms-word

我是Visual Basic的新手,我想要处理一些简单的事情。

我有按钮TextBox

  • 当我点击按钮时,我想在文本框中显示一些字符串,但是该字符串中的某些特定字符会有某种特定的颜色。

按钮:

    Private Sub CommandButton1_Click()
    TextBox1.Text = "Hi my name is Koki"
    End Sub

文本框:

    Private Sub TextBox1_Change()
    End Sub

输出:

enter image description here

注意:即使有静态解决方案,它也会对我有帮助,例如Html中的<span></span>

1 个答案:

答案 0 :(得分:1)

在处理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

正如您所看到的,我在开始时添加了文本框。我这样做是为了确保你使用正确的textBox(如果你添加一个ActiveX文本框,行为会有所不同)。

---------- UPDATE

为了依赖提议的方法,您可能必须使用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