如何更改 vba 中形状文本的样式?

How change the style of a shape-text in vba?

我使用以下代码行更改了文本的大小

shp.CellsSRC(visSectionCharacter, 0, visCharacterSize).FormulaU = " 3pt"

我想用相同的代码模式更改形状文本的样式(粗体)和颜色吗?

我没有找到确切的 "formula",你知道我该怎么做吗?

非常感谢您

编辑:我为颜色找到了这一行:

shp.CellsSRC(visSectionCharacter, 0, visCharacterColor).FormulaU = "THEMEGUARD(RGB(255,0,0))"

我不确定为什么没有 enumeration 用于设置样式。在任何情况下,它都是形状属性中的第 2 列。所以使用

shp.CellsSRC(visSectionCharacter, 0, 2).FormulaU = 17

将文本设置为 粗体

你问我怎么知道的?基于 Understanding the Shape Sheet 上的 Microsoft 参考,有一段有用的代码可供使用。

首先,select 绘图中您想要查看有关属性信息的形状。然后在 Visio 编辑器中打开形状属性 window(在 VBE 中为 not)——您可以通过查看开发人员功能区,然后单击 Show ShapeSheet 图标

在形状属性 window 中,向下滚动直到看到“字符”部分。您必须 select 属性 window 中的单元格之一。此处的示例 select 编辑了样式列。

完成此操作后,然后 运行 下面的代码片段,您将在 VBE 的即时 Window 中获得所需的信息。

Public Sub DebugPrintCellProperties()
    ' Abort if ShapeSheet not selected in the Visio UI
    If Not Visio.ActiveWindow.Type = Visio.VisWinTypes.visSheet Then
        Exit Sub
    End If
    Dim cel As Visio.Cell
    Set cel = Visio.ActiveWindow.SelectedCell
    'Print out some of the cell properties
    Debug.Print "Section", cel.Section
    Debug.Print "Row", cel.Row
    Debug.Print "Column", cel.Column
    Debug.Print "Name", cel.Name
    Debug.Print "FormulaU", cel.FormulaU
    Debug.Print "ResultIU", cel.ResultIU
    Debug.Print "ResultStr("""")", cel.ResultStr("")
    Debug.Print "Dependents", UBound(cel.Dependents)
    ' cel.Precedents may cause an error
    On Error Resume Next
    Debug.Print "Precedents", UBound(cel.Precedents)
    Debug.Print "--------------------------------------"

End Sub

这会告诉您调用 CellsSRC 时要使用的节、行和列。我所做的是弄清楚 属性,然后我手动将文本设置为粗体并再次查看 DebugPrintCellProperties 的结果,看到 FormulaU = 17 为粗体。