饼图VBA DataLabel格式

时间:2018-11-21 00:00:46

标签: excel vba charts formatting

晚上,

我被困了几个小时,试图克服我使用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

结束子

2 个答案:

答案 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
相关问题