打开错误的Excel选项卡时执行VBA代码时出错

时间:2018-04-25 01:25:04

标签: vba

我的VBA代码使用两个Excel电子表格。它从一个(Tab1)获取数据并将结果写入另一个选项卡(Tab2)。但是,当我在Tab2打开时启动代码时,VBA正在给我"应用程序定义或对象定义错误"。当我在Tab1上时,代码可以找到。下面是它阻塞的代码行:

Set YE_last = Forecast.Range(Cells(YE_forecast.Row + 1, YE_forecast.Column + i - 1), Cells(YE_forecast.Row + 1, YE_forecast.Column + i - 1))

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

没有工作表对象限定符的

Cells隐含地引用ActiveSheet的任何内容(如果您在标准代码模块中)。如果您在工作表的代码隐藏模块中,那么不合格的Cells调用基本上正在执行Me.Cells,即他们指的是那个工作表。

解决方案是使用您正在使用的工作表对象限定所有内容:

Set YE_last = Forecast.Range(Forecast.Cells(YE_forecast.Row + 1, YE_forecast.Column + i - 1), Forecast.Cells(YE_forecast.Row + 1, YE_forecast.Column + i - 1))

With块可以简化这一点:

With Forecast
    Set YE_last = .Range(.Cells(YE_forecast.Row + 1, YE_forecast.Column + i - 1), .Cells(YE_forecast.Row + 1, YE_forecast.Column + i - 1))
End With