更改文本框中的字体大小

时间:2020-03-11 09:57:37

标签: excel vba

我在图表上粘贴了文本框。

我正在尝试为所有图表更改该文本框中的字体大小。

这是我的意思的图片
enter image description here

Sub shapeFont()
Dim shp As Shape

For Each shp In ActiveSheet.Shapes
    With shp.ShapeRange.TextFrame2.TextRange.Font
    .Size = 30
    End With
Next shp

End Sub

2 个答案:

答案 0 :(得分:3)

这些文本框似乎已嵌入ChartObjects中。因此,您必须改为循环ChartObjects。然后循环遍历其Shapes集合,只有当遇到适当的TextBox时,才应更改其字体。通过选择图表并插入形状,可以将嵌入的文本框插入图表中。从那时起,这些形状随图表一起移动。

例如:

Sub FindTextBoxes1()

    Dim c As ChartObject
    Dim s As Shape

    For Each c In ActiveSheet.ChartObjects
        For Each s In c.Chart.Shapes
            If s.Type = msoTextBox Then
                s.TextFrame2.TextRange.Font.Size = 30
            End If
        Next s
    Next c

End Sub

指定一个WorkbookWorksheet变量,以便更好地指出您希望此宏在哪里运行(而不是难看的ActiveSheet

来自here的灵感


虽然嵌入式文本框非常适合区分您想要要更改的形状和不想要更改的形状,但您也不需要实际选择您的文本框首先可以更改您的Font.Size,以防您要遍历所有非嵌入式文本框。只需参考Characters中的TextRange。例如:

Sub FindTextBoxes2()

    Dim s As Shape

    For Each s In ActiveSheet.Shapes
        If s.Type = msoTextBox Then
             s.TextFrame2.TextRange.Characters.Font.Size = 30
        End If
    Next

End Sub

答案 1 :(得分:2)

VBA是一种奇怪的语言,如果您实际上选择它能够做到的话。

Sub shapeFont()
Dim shp As Shape

For Each shp In ActiveSheet.Shapes
    shp.Select
    With Selection.ShapeRange.TextFrame2.TextRange.Font
    .Size = 30
    End With
Next shp

结束子

如果存在图表对象,并且您有单独的文本框,则可以进行以下操作:

Sub shapeFont()
Dim shp As Shape

For Each shp In ActiveSheet.Shapes
    shp.Select
    Debug.Print (shp.Type)
    If shp.Type = msoTextBox Then
        With Selection.ShapeRange.TextFrame2.TextRange.Font
       .Size = 50
    End With
   End If
Next shp
End Sub

如果您想更新图表上的框,则https://stackoverflow.com/users/9758194/jvdv提供的代码将可用

相关问题