所以我有一堆需要格式化的数据透视图。我是 VBA 新手,但想录制一个宏,然后将其用于每个图表。在此代码中,我想将“Sheet 5”替换为活动图表。谁能帮我解决这个问题吗?
这是目前的代码:
Sub ChartUp()
' ChartUp Macro AddChartDetails Keyboard Shortcut: Ctrl+Shift+E
ActiveSheet.ChartObjects("Chart 5").Activate
ActiveSheet.ChartObjects("Chart 5").Activate
ActiveChart.Axes(xlValue, xlSecondary).Select
Selection.TickLabels.NumberFormat = "0.00%"
Selection.TickLabels.NumberFormat = "0%"
ActiveChart.Legend.Select
ActiveChart.Legend.Select
Selection.Position = xlBottom
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Chart 5").ScaleWidth 1.3668124563, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Chart 5").ScaleHeight 1.3356401384, msoFalse, _
msoScaleFromBottomRight
End Sub
我希望我正确理解了你的帖子。我已更新您的 Sub 以接收 2 个参数:
Sht As Worksheet
和 ChtName As String
。
建议:我认为最好远离
ActiveSheet
,而是参考工作表,例如Worksheets("Sheet1")
。
我添加了另一个
Sub TestChartUp()
只是为了测试这个解决方案。
试试这个代码:
Option Explicit
Sub ChartUp(Sht As Worksheet, ChtName As String)
' ChartUp Macro AddChartDetails Keyboard Shortcut: Ctrl+Shift+E
Dim ChtObj As ChartObject
Set ChtObj = Sht.ChartObjects(ChtName)
With ChtObj
.Chart.Axes(xlValue, xlSecondary).TickLabels.NumberFormat = "0%"
.Chart.Legend.Position = xlLegendPositionBottom
End With
With Sht.Shapes(ChtName )
.ScaleWidth 1.3668124563, msoFalse, msoScaleFromTopLeft
.ScaleHeight 1.3356401384, msoFalse, msoScaleFromBottomRight
End With
End Sub
'================================================================
Sub TestChartUp()
Call ChartUp(ActiveSheet, "Chart 5") '<-- I prefer not to use ActiveSheet, but "Sheet1" , etc.
End Sub
编辑 1:实际选择要格式化的图表时运行下面的子程序。
Option Explicit
Sub ChartUp()
' ChartUp Macro AddChartDetails Keyboard Shortcut: Ctrl+Shift+E
Dim Sht As Worksheet
Dim ChtObj As ChartObject
Set Sht = ActiveSheet
Set ChtObj = ActiveChart.Parent
With ChtObj
.Chart.Axes(xlValue, xlSecondary).TickLabels.NumberFormat = "0.00%"
.Chart.Legend.Position = xlLegendPositionBottom
End With
With Sht.Shapes(ChtObj.Name)
.ScaleWidth 1.3668124563, msoFalse, msoScaleFromTopLeft
.ScaleHeight 1.3356401384, msoFalse, msoScaleFromBottomRight
End With
End Sub