Excel VBA脚本在图表中包含轴名称

我有“CPU_STAT”工作表中的下表:

在这里输入图像说明

我在同一个工作簿中有一个“CPU_STAT_GRAPH”工作表,其中我拉入了用于生成图表的列。

使用的代码:

Sub test() Dim sourceColumn1 As Range, targetColumn1 As Range Dim sourceColumn2 As Range, targetColumn2 As Range Dim sourceColumn3 As Range, targetColumn3 As Range Set sourceColumn1 = Workbooks("KPI_stats_v1.xls").Worksheets("CPU_STAT").Columns("D") Set targetColumn1 = Workbooks("KPI_stats_v1.xls").Worksheets("CPU_STAT_GRAPH").Columns("A") Set sourceColumn2 = Workbooks("KPI_stats_v1.xls").Worksheets("CPU_STAT").Columns("G") Set targetColumn2 = Workbooks("KPI_stats_v1.xls").Worksheets("CPU_STAT_GRAPH").Columns("B") Set sourceColumn3 = Workbooks("KPI_stats_v1.xls").Worksheets("CPU_STAT").Columns("I") Set targetColumn3 = Workbooks("KPI_stats_v1.xls").Worksheets("CPU_STAT_GRAPH").Columns("C") sourceColumn1.Copy Destination:=targetColumn1 sourceColumn2.Copy Destination:=targetColumn2 sourceColumn3.Copy Destination:=targetColumn3 Range("A1:C5").Select ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmooth).Select ActiveChart.SetSourceData Source:=Range("CPU_STAT_GRAPH!$A$1:$C$5") ActiveChart.SetElement (msoElementPrimaryValueGridLinesNone) ActiveChart.SetElement (msoElementPrimaryCategoryGridLinesNone) ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis) ActiveChart.SetElement (msoElementPrimaryValueAxisTitleAdjacentToAxis) ActiveChart.ChartTitle.Select ActiveChart.ChartTitle.Text = "CPU Utilization" Selection.Format.TextFrame2.TextRange.Characters.Text = "CPU Utilization" With Selection.Format.TextFrame2.TextRange.Characters(1, 15).ParagraphFormat .TextDirection = msoTextDirectionLeftToRight .Alignment = msoAlignCenter End With End Sub 

“CPU_STAT_GRAPH”中的输出是:

在这里输入图像说明

一切都如预期。 我需要的只是正确地重命名graphics的轴。 垂直轴为Percent ,水平为Hour

如何将其纳入代码? 也正如你所看到的,我的代码是一个非常基本的代码,它没有明确定义从左边的数据中使用的X轴和Y轴。 如何用最less的代码行优化我的代码,并使其更加智能:)

[[新手到VBA编码:)]]

添加轴标题的语法与您在图表标题中添加的语法非常相似。 在将来你可以学到很多东西,从录制一个macros来看看代码是什么样的,然后手动执行这些步骤 – 但是要添加轴,使用下面的语法:

 ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis) ActiveChart.SetElement (msoElementPrimaryValueAxisTitleAdjacentToAxis) 

然后添加您可以使用的标题:

 ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Hour" ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Percent" 

但我真的build议录制,以便您可以看到所有的格式和相关的参数,你可以通过,也是一个很好的学习方式。 希望这可以帮助!

还有一件事,因为所有这些命令都使用ActiveChart,你也可以使用with循环。 所以你可以将所有的ActiveChart元素分组在一起,可以这样说:

 With ActiveChart .Axes(xlCategory, xlPrimary).AxisTitle.Text = "Hour" .Axes(xlValue, xlPrimary).AxisTitle.Text = "Percent" End With