【发布时间】:2017-02-17 16:39:39
【问题描述】:
我编写了一些简单的 VBA 代码来更新 Excel 文档中许多时间序列图表的 x 轴。
我遇到的问题是,在循环的第一次迭代之后,start_date 和 end_date 变量变为“”。我不确定为什么变量会消失。该宏确实适用于第一个图表,但之后由于变量问题而崩溃。
这是我的代码:
Sub xaxis_reset()
Dim start_date As Variant
Dim end_date As Variant
Dim ws As Integer
Dim obj As Integer
start_date = InputBox("Start Date")
end_date = InputBox("End Date")
ws = ActiveWorkbook.Worksheets.Count - 2
For w = 1 To ws
obj = Worksheets(w).ChartObjects.Count
For Z = 1 To obj
Worksheets(w).ChartObjects(Z).Activate
With ActiveChart
.Axes(xlCategory).MinimumScale = start_date
.Axes(xlCategory).MaximumScale = end_date
End With
Next Z
Next w
End Sub
谢谢
【问题讨论】:
-
如何调用宏? w 和 Z 没有定义。问题可能来自图表激活,请尝试将其删除。
-
@VincentG 我尝试取出图表激活,但我仍然遇到同样的问题。我的结论是这是一个excel错误。当我运行代码时,excel 随机关闭。它在我单步执行代码时关闭,它在代码崩溃并且我单击“调试”或“结束”时关闭。出于某种原因,Excel 真的很讨厌上面的代码。
-
为什么要激活图表然后设置坐标轴?您应该可以简单地说“With Worksheets(w).ChartObjects(Z)”。我也没有看到任何应该重置您的变量的东西。您确定它们在循环中被重置吗?
-
@BrandonBarney 感谢代码优化提示。我同意没有理由激活图表。我猜这不是真正的循环重置变量,它是 .Axes(xlcategory).MinimulScale = start_date 重置变量。我已经监视了变量值,并且在那行代码之后, start_date 从“08/16/2016”之类的东西变成了“???????”。我实际上只是注意到,随着在它下面执行不同的代码行,问号的数量也发生了变化。真的很奇怪。