Excel VBA图表xlPrimary与xlSecondary双轴设为百分比格式失效问题
问题原因
代码核心问题是Axes方法参数使用错误,Excel VBA中Axes的完整调用格式为.Axes(坐标轴类型, 坐标轴分组),你只传入了xlPrimary/xlSecondary作为唯一参数,会被识别为「坐标轴类型」参数,而非坐标轴分组:
xlPrimary的枚举值为1,对应坐标轴类型xlCategory(分类轴),原代码实际是在设置分类轴的数字格式,而非主数值轴- 次坐标轴的设置刚好命中数值轴参数,所以会出现仅一个坐标轴生效的情况
修正方案
将坐标轴格式设置的代码调整为明确指定数值轴+对应分组即可,同时可优化重复定义cht的冗余代码:
Set cht = Output.ChartObjects("Chart 1").Chart With cht .ChartArea.ClearContents .ChartType = xlColumnClustered xdata = EnregistrementsSecteurs ydata = EnregistrementsValeurs ' 添加第一个系列(主坐标轴柱形) .SeriesCollection.NewSeries .SeriesCollection(1).XValues = xdata .SeriesCollection(1).Values = ydata .SeriesCollection(1).Name = "Rating" ' 添加第二个系列(次坐标轴折线) .SeriesCollection.NewSeries .SeriesCollection(2).AxisGroup = xlSecondary .FullSeriesCollection(2).ChartType = xlLine .SeriesCollection(2).Values = TValues .SeriesCollection(2).Name = "Y" ' 添加第三个系列(次坐标轴折线) .SeriesCollection.NewSeries .SeriesCollection(3).AxisGroup = xlSecondary .FullSeriesCollection(3).ChartType = xlLine .SeriesCollection(3).Values = ThisWorkbook.Sheets("sheet").Range("D3:D12").Value .SeriesCollection(3).Name = "T" ' 统一设置两个数值轴的百分比格式 .Axes(xlValue, xlPrimary).TickLabels.NumberFormat = "0.0%" .Axes(xlValue, xlSecondary).TickLabels.NumberFormat = "0.0%" End With
补充说明
如果修改后仍偶发格式失效,可以在设置格式前加一行代码强制刷新图表:.Refresh
避免Excel缓存未更新导致格式不生效。
内容的提问来源于stack exchange,提问作者TourEiffel
相关产品推荐
相关产品推荐

