1

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

我有buttonTextBox

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

按钮:

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

文本框:

    Private Sub TextBox1_Change()
    End Sub

输出:

在此处输入图像描述

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

4

1 回答 1

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

如您所见,我在开始时添加了文本框。我这样做是为了确保您使用正确的文本框(如果添加 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
于 2013-07-14T14:47:44.813 回答