答案 0 :(得分:2)
完成此任务的代码如下:
Dim myChart As Chart
Dim mySerCol As SeriesCollection
Dim strRange As String
strRange = "=Sheet1!$F$2:$F$5" 'To hold the range for the new labels
Set myChart = ....[put in code to get the appropriate chart]
Set mySerCol = myChart.SeriesCollection(i)
mySerCol.ApplyDataLabels 'Turn on the datalabels for this series
'The next line sets the range to get the values from
mySerCol.Format.TextFrame2.TextRange.InsertChartField msoChartFieldRange _
, strRange, 0
mySerCol.ShowRange = True 'Show the values from the range
mySerCol.ShowValue = False 'Do not show the actual values of the points
请注意,这只会针对其中一个系列执行此操作。要做其他的,在myChart.SeriesCollections(i)行中遍历i。
答案 1 :(得分:1)
****编辑****见其他答案。我要离开这里,因为它提供了一些可以使用的对象的信息,但实际上并没有解决问题。
这不是问题的完整答案,但这对评论来说太长了。
我搜索了Datalabels的文档并且无法弄清楚如何执行此操作(我假设您希望能够使用VBA定义标签的范围)。我能够“检查”复选框,但无法确定附加到它的范围。要检查的相应代码。
要选中该复选框,请使用以下代码:
myChart.SeriesCollection(i).ApplyDataLabels
其中i是有问题的系列,myChart是引用图表的Chart对象。此方法有许多参数可以显示不同的项目(百分比,值等),但没有参数是范围。
如果您未输入任何可选参数
,则默认为系列的值然后可以使用以下方式打开和关闭它:
myChart.SeriesCollection(i).DataLabels.ShowRange = True/False
可以使用以下方法更改Datalabels的标题:
myChart.SeriesCollection(i).DataLabels(j).Caption = "MY CAPTION"
这将一次更改一个标题,它将替换“ApplyDataLabels”方法放在那里的值。可以遍历范围来设置值,但这可能不是您想要的。
还有这个:
myChart.SeriesCollection(i).HasDataLabels = True
但这似乎只是打开和关闭它们并重置你可能放在那里的字幕。
MSDN链接同时使用hasdatalabels属性和applydatalabels方法,但不清楚他们为何同时使用这两种方法:https://msdn.microsoft.com/EN-US/library/office/ff745965.aspx
希望这至少可以为您提供一些开始。