gpt4 book ai didi

用于在图表上设置标签的 Vba 代码

转载 作者:行者123 更新时间:2023-12-04 20:58:03 24 4
gpt4 key购买 nike

我遇到以下代码的问题:

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

它说:

Method position of dataLabel object failed.



有人有什么建议吗?

最佳答案

默认是柱形图,不幸的是没有 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

这些标签位置可能不是您所希望的。但是话虽如此,您可以调整边距对齐方式以获得接近您想要的东西 - 在您的情况下,通过设置右边距标签对齐方式将标签向左移动。

关于用于在图表上设置标签的 Vba 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42681728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com