我在图表上粘贴了文本框。
我正在尝试为所有图表更改该文本框中的字体大小。
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
答案 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
指定一个Workbook
和Worksheet
变量,以便更好地指出您希望此宏在哪里运行(而不是难看的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提供的代码将可用