我遇到以下代码的问题:
Sub newC()
Dim ch As Chart
Dim s As Series
Dim objLabels As DataLabels
Dim objLabel As DataLabel
Range("B65", "I66").Select
Set ch = Charts.Add
ch.ChartTitle = "Prova"
conta = 1
For Each s In ch.SeriesCollection
s.HasDataLabels = True
s.Points(conta).DataLabel.Position = xlLeft
conta = conta + 1
Set objLabels = s.DataLabels
For Each objLabel In objLabels
objLabel.Position = xlLabelPositionLeft
Next objLabel
Next s
End Sub
设置标签位置时出现问题:
objLabel.Position = xlLabelPositionLeft
它说:
dataLabel对象的方法位置失败。
有人有任何建议吗?
答案 0 :(得分:0)
默认是柱状图,遗憾的是没有xlLabelPositionLeft;鉴于您没有提及图表类型,我将假设您正在处理柱形图。柱形图的唯一有效标签位置是:xlLabelPositionOutsideEnd,xlLabelPositionInsideEnd,xlLabelPositionCenter和xlLabelPositionInsideBase。您可以看到,当您手动右键单击柱形图数据标签,然后选择“格式化数据标签”时,这些是您提供的唯一选择。标签。这显示了这些选项,每个选项旁边都有一个单选按钮,只允许其中一种可能性。
以下内容对我有用:
Sub newC()
Dim ch As Chart
Dim rng As Range
Set rng = Range("B65", "I66")
Set ch = Charts.Add
ch.SetSourceData Source:=rng
ch.HasTitle = True
ch.ChartTitle.Text = "Prova"
Dim s As Series
Dim objLabels As DataLabels
Dim objLabel As DataLabel
For Each s In ch.SeriesCollection
s.HasDataLabels = True
Set objLabels = s.DataLabels
For Each objLabel In objLabels
objLabel.Position = xlLabelPositionInsideBase
Next objLabel
Next s
End Sub
这些标签位置可能不是您所希望的。但是话说你可以调整边距对齐以获得接近你想要的东西 - 在你的情况下,通过设置右边距标签对齐将标签移到左边。