所以答案如下(感谢 Sam Ward 的评论将我推向了正确的方向):
使用我的 RoundTo50() 函数将最小和最大限制四舍五入到最接近的 50。计算合理数量的网格线的间隔应该是多少,在我的例子中是 12。将此间隔四舍五入到最接近的 50。
Function RoundTo50(number As Double) As Double
RoundTo50 = WorksheetFunction.Round(number * 2, -2) / 2
End Function
和
With Sheets("Report").ChartObjects.Add(...)
.Chart.Axes(xlCategory).MinimumScale = RoundTo50(Sheets(sheetName).Range("M4"))
.Chart.Axes(xlCategory).MaximumScale = RoundTo50(Sheets(sheetName).Range("M124"))
.Chart.Axes(xlCategory).MajorUnit = RoundTo50((.Chart.Axes(xlCategory).MaximumScale - .Chart.Axes(xlCategory).MinimumScale) / 12)
.Chart.Axes(xlCategory).MinorUnit = .Chart.Axes(xlCategory).MajorUnit / 3
我仍然对能够使用格式化字符串执行此操作非常感兴趣,因为我有一个以百分比表示的辅助轴,并且从舍入到 50 的网格线与辅助轴的刻度线略有偏移。使用格式化字符串,它们将完全对齐(因为它们会稍微放在错误的位置,但我更喜欢这样)。