Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用Excel瀑布图中的VBA更改单个数据标签的数字格式_Excel_Vba_Excel Charts - Fatal编程技术网

Can';t使用Excel瀑布图中的VBA更改单个数据标签的数字格式

Can';t使用Excel瀑布图中的VBA更改单个数据标签的数字格式,excel,vba,excel-charts,Excel,Vba,Excel Charts,我试图在Excel工作簿中使用VBA修改瀑布图数据标签的数字格式。由于数字格式的复杂性,我需要使用两种不同的数字格式模式,并有条件地将必要的模式应用于每个数据点的标签 在下面的代码中,我在尝试读取或写入数据标签的.NumberFormat属性时出错。我可以读写。NumberFormatLinked和。NumberFormatLocal,尽管。NumberFormatLinked在再次选中时已恢复为其原始值True。NumberFormatLocal非常脆弱。我发现,如果打开VBA编辑器,有时新的

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

在下面的代码中,我在尝试读取或写入数据标签的
.NumberFormat
属性时出错。我可以读写
。NumberFormatLinked
。NumberFormatLocal
,尽管
。NumberFormatLinked
在再次选中时已恢复为其原始值
True
。NumberFormatLocal非常脆弱。我发现,如果打开VBA编辑器,有时新的数字格式会“粘滞”,而当编辑器未打开时,数字格式不会“粘滞”

我怀疑问题可能是由于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
Dim mws\u数据作为工作表:设置mws\u数据=此工作簿。工作表(“瀑布图”)
Dim endRow作为整数:endRow=mws_Data.Cells(mws_Data.Rows.Count,“G”).End(xlUp).row
将pt变为整数
点作为点
将mws\U图表设置为Excel。形状:设置mws\U图表=mws\U数据。形状(1)
Dim valuesArray作为变量:valuesArray=mws_数据范围(“G37:G”和endRow).值
带mws_图表。图表。完整系列集合(1)
.Values=mws_数据范围(“G37:G”和endRow)
.XValues=mws_数据范围(“H37:H”和endRow)
对于pt=1到.dataLabels.Count
设置图表点=.Points(pt)
用chartPoint
.dataLabel.NumberFormatLink=False
Debug.Print.dataLabel.NumberFormat'引发错误
Debug.Print.dataLabel.NumberFormatLinked
Debug.Print.dataLabel.NumberFormatLocal
如果值ray(pt,1)<0,则

.dataLabel.NumberFormat=“[似乎我没有真正理解您的问题。就通用数据标签的答案而言,它似乎不是瀑布图的答案。因此,我收回我的答案。