【发布时间】:2017-02-23 02:26:34
【问题描述】:
所以我有一个数据跨越 A2 到 AF17 的电子表格,我隐藏了大部分列,现在只显示列:I、AB、AD、AF,其中列 I 是我想要作为轴标签范围的范围, AF 列作为取值范围。
我编写了以下代码来创建一个动态使用范围直到最后一个非空行作为值的图表:
Private Sub CommandButton2_Click()
Dim MyEmbeddedChart As Chart
Set MyEmbeddedChart = Sheets("Analysis").Shapes.AddChart(Width:=634, Height:=250).Chart
With MyEmbeddedChart
.ChartType = xlBarClustered
.ChartStyle = 339
.SetSourceData Source:=Sheets("Analysis").Range("AF2", Cells(Rows.Count, 1).End(xlUp))
.Legend.Delete
.Axes(xlValue).Delete
.Axes(xlValue).MajorGridlines.Format.Line.Visible = msoFalse
.ApplyDataLabels
End With
End Sub
现在,即使生成的图表自动将 I 列显示为轴标签范围,这只是因为 I 列是目前最左边的可见列。也就是说,实际上源数据范围是 A2:AF17,轴标签范围实际上是 A2:AD17。一旦我取消隐藏列,轴标签自然就搞砸了。
尽管当前的图表符合我的目的,但它绝对不是理想的。那么如何将源数据精确地设置为 I 列作为轴标签范围,AF 列作为值范围,同时继续使用最后一个非空行方法?
我对 VBA 还是比较陌生,感谢任何帮助。
【问题讨论】: