Excel VBA 中的 2013 年簇状柱形图
Excel 2013 Clustered Column Chart in VBA
我正在使用 EXCEL VBA 从两行数据创建一个新图表。 Excel 版本是 2013.
在 X 轴上我有年份,在 Y 轴上我有每年的一些特定值。
我面临的问题是,当我创建实际图表时,它会随机选择三种可用样式之一,如下面的屏幕截图所示。
我正在创建图表:
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Union(Sheets(SheetName).Range(Cells(1, 11), Cells(1, LastColumnNumber)), Sheets(SheetName).Range(Cells(4, 11), Cells(4, LastColumnNumber)))
添加 Sheets(SheetsName)
的原因是我在创建图表后将其移动到新的 sheet,因此需要保留参考。
LastColumnNumber
用于统计去年的colum及其对应的值
我试过:
ActiveChart.ChartType = xlColumnClustered
我也试过在改变样式时录制一个新的宏,但没有参数选择这三个中的一个。
作为解决方法(但它在 VBA 中不起作用),我将图表样式更改为 簇状列 样式以外的其他样式,然后选择返回我需要的那个。
P.S。我实际上需要在附加的打印屏幕中选择的那个。
如何强制应用该样式?
据我了解,您需要这个:
Chart.PlotBy = xlColumns
或者这样:
Chart.PlotBy = xlRows
上下文见下文:
Sub InsertBar(myRange As Range)
Dim rngChart As Range
Dim myChart As Chart
Sheets(Operator.Value).Range("$A:$C").Select
Set myChart = ActiveSheet.Shapes.AddChart(xlColumnClustered, 500, 10, , 175).Chart
With myChart
.PlotBy = xlColumns
.ChartArea.Format.TextFrame2.TextRange.Font.Size = 8
.HasTitle = True
.ChartTitle.Text = "Title"
.SeriesCollection(1).Name = Range("B" & StartRow - 1).Value
.SeriesCollection(2).Name = Range("C" & StartRow - 1).Value
End With
End Sub
我正在使用 EXCEL VBA 从两行数据创建一个新图表。 Excel 版本是 2013.
在 X 轴上我有年份,在 Y 轴上我有每年的一些特定值。
我面临的问题是,当我创建实际图表时,它会随机选择三种可用样式之一,如下面的屏幕截图所示。
我正在创建图表:
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Union(Sheets(SheetName).Range(Cells(1, 11), Cells(1, LastColumnNumber)), Sheets(SheetName).Range(Cells(4, 11), Cells(4, LastColumnNumber)))
添加 Sheets(SheetsName)
的原因是我在创建图表后将其移动到新的 sheet,因此需要保留参考。
LastColumnNumber
用于统计去年的colum及其对应的值
我试过:
ActiveChart.ChartType = xlColumnClustered
我也试过在改变样式时录制一个新的宏,但没有参数选择这三个中的一个。
作为解决方法(但它在 VBA 中不起作用),我将图表样式更改为 簇状列 样式以外的其他样式,然后选择返回我需要的那个。
P.S。我实际上需要在附加的打印屏幕中选择的那个。
如何强制应用该样式?
据我了解,您需要这个:
Chart.PlotBy = xlColumns
或者这样:
Chart.PlotBy = xlRows
上下文见下文:
Sub InsertBar(myRange As Range)
Dim rngChart As Range
Dim myChart As Chart
Sheets(Operator.Value).Range("$A:$C").Select
Set myChart = ActiveSheet.Shapes.AddChart(xlColumnClustered, 500, 10, , 175).Chart
With myChart
.PlotBy = xlColumns
.ChartArea.Format.TextFrame2.TextRange.Font.Size = 8
.HasTitle = True
.ChartTitle.Text = "Title"
.SeriesCollection(1).Name = Range("B" & StartRow - 1).Value
.SeriesCollection(2).Name = Range("C" & StartRow - 1).Value
End With
End Sub