无法使用Excel瀑布图中的VBA更改单个数据标签的数字格式

问题描述

我正在尝试在Excel工作簿中使用VBA修改瀑布图的数据标签的数字格式。由于数字格式的复杂性,我需要使用两种不同的数字格式模式,并有条件地将必要的一种应用于每个数据点的标签

在下面的代码中,尝试读取或写入数据标签.NumberFormat属性时收到错误消息。我可以读取和写入.NumberFormatLinked.NumberFormatLocal,尽管.NumberFormatLinked在再次检查时已经恢复到其原始值True,并且.NumberFormatLocal极为脆弱。我发现如果我打开VBA编辑器有时会打开新的数字格式“ sticks”,而当未打开编辑器时,数字格式不会“ stick”。

我怀疑问题可能归结于对Excel中较新的图表类型缺乏VBA支持。如果有任何方法可以解决此问题,或者我的代码有任何问题(除了valuesArray之外,我将为之寻找更好的解决方案),我将不胜感激!

Dim mws_Data As Worksheet: Set mws_Data = ThisWorkbook.Worksheets("Waterfall Graph")
Dim endRow As Integer: endRow = mws_Data.Cells(mws_Data.Rows.Count,"G").End(xlUp).row
Dim pt As Integer
Dim chartPoint As Point
Dim mws_Chart As Excel.Shape: Set mws_Chart = mws_Data.Shapes(1)
Dim valuesArray As Variant: valuesArray = mws_Data.Range("G37:G" & endRow).value

With mws_Chart.Chart.FullSeriesCollection(1)
    .Values = mws_Data.Range("G37:G" & endRow)
    .XValues = mws_Data.Range("H37:H" & endRow)
    
    For pt = 1 To .dataLabels.Count
        
        Set chartPoint = .Points(pt)
        
        With chartPoint
            .dataLabel.NumberFormatLinked = False
    
            Debug.Print .dataLabel.NumberFormat     ' Raises an error
            Debug.Print .dataLabel.NumberFormatLinked
            Debug.Print .dataLabel.NumberFormatLocal
        
            If valuesArray(pt,1) < 0 Then
                .dataLabel.NumberFormat = "[<=-0.5](#,##0);(<1)"      ' Raises an error
            Else
                .dataLabel.NumberFormat = "[=0]-;[>=0.5]#,##0;<1"      ' Raises an error
            End If
        
    Next pt
End With

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)