有一个使用 DataLabels.Left 属性的解决方法,该属性相对于 ChartArea 定位 DataLabel。
这是一个示例 VB 解决方案:
sub FakeLabels()
Dim sF As Double
Dim lOff As Double
Dim p As Double
ActiveSheet.ChartObjects(1).Activate
With ActiveChart
For sF = 1 To .SeriesCollection.Count
If .SeriesCollection(sF).Name = "FakeSeries" Then
'Define the lOff variable by adding 100, or some other value
lOff = .SeriesCollection(sF).Points(1).DataLabel.Left + 100
For p = 1 To .SeriesCollection(sF).Points.Count
.SeriesCollection(sF).Points(p).DataLabel.Left = lOff
Next p
End If
Next sF
End With
它产生相同的结果,唯一的新要求是将“虚拟”系列的值保持在图表的轴最小值/最大值内。
令人惊喜的是,重新调整图表大小似乎不会影响标签的相对位置。
2013 年 9 月 25 日更新
自从第一次问这个问题以来,我一直使用“文本框”方法。但是管理标签位置和文本框位置之间的相互作用、它们的相对位置PlotArea
ie、何时使用.InsideWidth
vs..Width
或.InsideLeft
vs..Left
以及是否需要对这些点进行任何类型的享乐“调整”是非常笨拙的价值观,似乎总是如此,它们从来都不是完全一致的。
在阅读 PPT 对象模型参考以进行其他一些与图表相关的查询时,我偶然发现了这个属性,它似乎复制了以前的修补程序/注册表黑客的功能。
.ShowDataLabelsOverMaximum