晚上,
我被困了几个小时,试图克服我使用VBA格式化图表所面临的问题。
因此我在更新图表的基础上记录了以下宏,以反映我想要的格式。问题是当我再次运行此宏时,我得到“对象'Datalabels'的'方法'选择'失败”
GetAvailableRooms
我非常感谢对此提供的一些帮助,但无法在其他地方找到修复程序。
我认为它也可能与系列集合有关,因为图表是动态的,并且系列名称根据用户选择而变化。
理想情况下,如果可能的话,我想将此操作作为另一个更大的宏的一部分运行而无需激活图表。
谢谢!
编辑:
因此,这现在可以正确运行代码,但实际上不会更新格式XD
Sub UpdateChartFormat()
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.ShowPercentage = True
Selection.Separator = "" & Chr(10) & ""
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.ShowPercentage = True
Selection.ShowValue = False
ActiveSheet.Range("D32").Select
End Sub
结束子
答案 0 :(得分:0)
类似的东西:
Sub UpdateChartFormat()
With ActiveSheet.ChartObjects("Chart 4")
.Activate
With .Chart.SeriesCollection(1).DataLabels
.ShowPercentage = True
.Separator = "" & Chr(10) & ""
End With
End With
With ActiveSheet.ChartObjects("Chart 1")
.Activate
With .Chart.SeriesCollection(1).DataLabels
.ShowPercentage = True
.ShowValue = False
End With
End With
End Sub
根据https://docs.microsoft.com/en-us/office/vba/api/excel.datalabels.showpercentage
备注图表必须首先处于活动状态,然后才能访问数据 以编程方式添加标签,否则将发生运行时错误。
答案 1 :(得分:0)
使用下面的代码设法创建一个循环,通过遍历每个点将DataLabels格式更新为我想要的格式。
Sub FormatDataLabels()
Dim intPntCount As Integer
ActiveSheet.ChartObjects("Chart 4").Activate
With ActiveChart.SeriesCollection(1)
For intPntCount = 1 To .Points.Count
.Points(intPntCount).ApplyDataLabels _
AutoText:=False, ShowSeriesName:=False, ShowCategoryName:=False, _
ShowValue:=True, ShowPercentage:=True, Separator:="" & Chr(10) & ""
Next intPntCount
End With
ActiveSheet.ChartObjects("Chart 1").Activate
With ActiveChart.SeriesCollection(1)
For intPntCount = 1 To .Points.Count
.Points(intPntCount).ApplyDataLabels _
AutoText:=False, ShowSeriesName:=False, ShowCategoryName:=False, _
ShowValue:=False, ShowPercentage:=True, Separator:="" & Chr(10) & ""
Next intPntCount
End With
End Sub