我的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))
你能帮忙吗?
答案 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