我当前正在运行VBA代码,该代码会自动为我设置图表格式。设置y轴标签数字格式的代码部分如下:
If chart1.Type <> xlPie And chart1.Type <> xlDoughnut Then
If InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") <> 0 And _
chart1.Axes(xlValue).MaximumScale < 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0%;(#0.0)%"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") <> 0 And _
chart1.Axes(xlValue).MaximumScale >= 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "##0%;(##0)%"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, ".") <> 0 And _
InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") = 0 And _
Len(chart1.Axes(xlValue).MaximumScale) > 2 Then _
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0;(#0.0)"
Else
chart1.Axes(xlValue).TickLabels.NumberFormat = "#,##0;(#,##0)"
End If
If InStr(chart1.Axes(xlCategory).TickLabels.NumberFormat, "yy") <> 0 Then _
chart1.Axes(xlCategory).TickLabels.NumberFormat = "mmm yy"
我尝试修改此代码,以便它也可以处理数字格式:“#,## 0.0x;(#,## 0.0)x; 0.0x”
这是我修改的代码:
If chart1.Type <> xlPie And chart1.Type <> xlDoughnut Then
If InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") <> 0 And _
chart1.Axes(xlValue).MaximumScale < 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0%;(#0.0)%"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") <> 0 And _
chart1.Axes(xlValue).MaximumScale >= 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "##0%;(##0)%"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, ".") <> 0 And _
InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") = 0 And _
Len(chart1.Axes(xlValue).MaximumScale) > 2 Then _
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0;(#0.0)"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "x") <> 0 And _
chart1.Axes(xlValue).MaximumScale < 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0x;(#0.0)x"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "x") <> 0 And _
chart1.Axes(xlValue).MaximumScale >= 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "##0x;(##0)x"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, ".") <> 0 And _
InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "x") = 0 And _
Len(chart1.Axes(xlValue).MaximumScale) > 2 Then _
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0;(#0.0)"
Else
chart1.Axes(xlValue).TickLabels.NumberFormat = "#,##0;(#,##0)"
End If
If InStr(chart1.Axes(xlCategory).TickLabels.NumberFormat, "yy") <> 0 Then _
chart1.Axes(xlCategory).TickLabels.NumberFormat = "mmm yy"
不幸的是,这似乎不起作用。
基本上,如果我有数据集:
2016 0.3倍
2017年0.4倍
2018 0.5倍
图表的y轴标签没有x
有人有什么建议吗?
预先感谢
托马斯
答案 0 :(得分:0)
Else If
语句
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "x") <> 0 And _
chart1.Axes(xlValue).MaximumScale < 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0x;(#0.0)x"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "x") <> 0 And _
chart1.Axes(xlValue).MaximumScale >= 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "##0x;(##0)x"
仅在chart1.Axes(xlValue).TickLabels.NumberFormat
中已经包含x
时评估为true,这意味着除非您的TickLabels
已经用所需的x
格式化,否则该行代码永远不会是真的。
请尝试将“不等于”运算符<>
更改为=
,以便在您的TickLabel中找不到x
时,对其进行格式化以使其包含在内。