我写了一些简单的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真的不喜欢上面的代码。 – Jarom
为什么激活图表然后设置坐标轴?你应该只能说“With Worksheets(w).ChartObjects(Z)”。我没有看到任何应该重置变量的内容。你确定他们正在循环内重置吗? –