我想根据工作表中的一些现有数据在新选项卡中格式化图表。我可以使用“另存为模板”来记录模式,但我想创建一个每次都创建相同格式的宏。但是,我在参考图表时遇到了一些问题。这是我的代码。
Sub Macro1()
Dim GraphTab As Object
Set GraphTab = ActiveSheet
'Change everything to Times New Roman
With ActiveSheet.Shapes(GraphTab).TextFrame2.TextRange.Font
.NameComplexScript = "Times New Roman"
.NameFarEast = "Times New Roman"
.Name = "Times New Roman"
.Size = 10
End With
End Sub
我收到从此行With ActiveSheet.Shapes(GraphTab).TextFrame2.TextRange.Font
开始的错误消息。
理想情况下,我还希望每次手动更改选项卡名称时都更新GraphTab
。这可能吗?
答案 0 :(得分:1)
根据您的上一条评论,此代码已经过测试,可以产生预期效果。
Sub Macro1()
Dim ws As Worksheet
Set ws = Sheets("NewChartSheet") ' change name as needed
ws.Range("A1").Formula = "=RIGHT(CELL(""filename"",A1),LEN(CELL(""filename"",A1))-FIND(""]"",CELL(""filename"",A1)))
Dim cht As ChartObject
Set cht = ws.ChartObjects(1) 'since just one chart on page, it's the first one in the collection
With cht.Chart.ChartTitle
With .Format.TextFrame2.TextRange.Font
.NameComplexScript = "Times New Roman"
.NameFarEast = "Times New Roman"
.Name = "Times New Roman"
.Size = 10
End With
.Caption = "=NewChartSheet!R1C1"
End With
End Sub
要了解图表标题如何设置为在更改工作表名称时自动更改,请参阅以下内容:
.Caption = "=NewChartSheet!R1C1"
将图表标题设置为等于单元格A1中的值ws.Range("A1").Formula
设置公式以显示工作表名称。 A1
中的公式使用CELL函数的filename
参数,该参数返回引用单元格的完整文件路径,文件名和工作表名称。答案 1 :(得分:0)
也许这是您一直在寻找的解决方案:
With Sheet1.ChartObjects("Chart 1").Chart.ChartTitle
.Text = "test"
.Font.FontStyle = "Times New Roman"
.Font.Size = 10
End With
如果您使用工作表的代码名称而不是工作表名称,则在更改图表工作表的名称时代码仍然有效。如果您打算更改图表名称,那么我会集成一个循环,如此
For Each cht In Sheet1.ChartObjects
With cht.Chart.ChartTitle
.Text = "test"
.Font.FontStyle = "Times New Roman"
.Font.Size = 10
End With
Next cht