【发布时间】:2016-10-26 12:12:40
【问题描述】:
我正在开发一个包含大量图表的仪表板,并且随着这些图表上显示的数据发生变化,数字的格式也会发生变化。就我现在而言,在循环遍历图表中的所有系列的过程中,我遇到了一个问题,试图从数据所基于的电子表格中检索预期的格式代码。 到目前为止的代码如下:
Sub FixLabels(whichchart As String)
Dim cht As Chart
Dim i, z As Variant
Dim seriesname, seriesfmt As String
Dim seriesrng As Range
Set cht = Sheets("Dashboard").ChartObjects(whichchart).Chart
For i = 1 To cht.SeriesCollection.Count
If cht.SeriesCollection(i).name = "#N/D" Then
cht.SeriesCollection(i).DataLabels.ShowValue = False
Else
cht.SeriesCollection(i).DataLabels.ShowValue = True
seriesname = cht.SeriesCollection(i).name
Debug.Print seriesname
这样,我可以检索不会导致错误的系列名称,并隐藏会导致错误的系列。到现在为止还挺好。 现在开始格式化:有一列存储了该工作簿的所有可能的系列名称,左边一列是我的格式化代码,“int”表示整数,“#,#”表示带有重要小数大小写的数字,“%”表示百分比。这些以纯文本形式存储。所以最后一段代码看起来像:
Select Case seriesfmt
Case "int"
Cht.SeriesCollection(i).DataLabels.NumberFormat = "#"
Case "#,#"
Cht.SeriesCollection(i).DataLabels.NumberFormat = "#,###"
Case "%"
Cht.SeriesCollection(i).DataLabels.NumberFormat = "#.0%"
End Select
End If
Next i
最后,真正的问题在这里:介于两者之间。我无法检索系列格式!我的最佳猜测是:
With Sheets("CxC").Range("K22:K180")
seriesfmt = .Find(seriesname).Offset(0, -1).Value
End With
我收到错误,告诉我 With 块没有定义。我尝试了同一命令的几种组合,有或没有 With 方法,有和没有 Set 方法,我尝试了 WorksheetFunction Match,但无济于事。非常感谢任何解决此问题的帮助!
【问题讨论】: