424错误对象必需

这个function只是为了运行一大堆表格,清除旧的数据,并将其复制到一个历史的范围内,以备实际的数据分析和传输。 当我试图重置范围对象,以便继续工作表中的单元格清除的执行,我得到一个“运行时错误'424':所需的对象。

我特别困惑于这个错误,因为它在两个对象之前没有任何问题。 拼写看起来是正确的。 有任何想法吗? 在行上函数底部的Else语句中发生错误Set historStartRangePuts = historStartRangePuts.Offset(0,10)

  Sub ClearTransferHistoricalOI(oiSheet As Worksheet) Dim continue As Boolean Dim startRangePuts As Range, startRangeCalls As Range, historStartRangePuts As Range, historStartRangeCalls As Range Dim newStartRangePuts As Range, newstartRangeCalls As Range, newHistorStartRangePuts As Range, newHistorStartRangeCalls As Range Dim columnCounter As Integer 'Sets start range Set startRangePuts = oiSheet.Cells(5, 1) Set startRangeCalls = oiSheet.Cells(5, 3) Set historStartRangePuts = oiSheet.Cells(5, 6) Set historStartRangeCalls = oiSheet.Cells(5, 8) continue = True oiSheet.Activate 'Attempts to catch already cleared sheets If IsEmpty(startRangePuts) = True Then continue = False End If Do While continue = True 'Clears puts and calls historical data oiSheet.Range(historStartRangePuts, historStartRangePuts.Offset(0, 1)).Select oiSheet.Range(Selection, Selection.End(xlDown)).ClearContents oiSheet.Range(historStartRangeCalls, historStartRangeCalls.Offset(0, 1)).Select oiSheet.Range(Selection, Selection.End(xlDown)).ClearContents 'Transfers puts and calls current data to historical data cols 'Puts oiSheet.Range(startRangePuts, startRangePuts.Offset(0, 1)).Select oiSheet.Range(Selection, Selection.End(xlDown)).Cut historStartRangePuts 'Calls oiSheet.Range(startRangeCalls, startRangeCalls.Offset(0, 1)).Select oiSheet.Range(Selection, Selection.End(xlDown)).Cut historStartRangeCalls If IsEmpty(startRangePuts.Offset(0, 10)) = True Then continue = False Else Set startRangeCalls = startRangeCalls.Offset(0, 10) Set startRangePuts = startRangePuts.Offset(0, 10) Set historStartRangePuts = startRangePuts.Offset(0, 5) Set historStartRangeCalls = startRangeCalls.Offset(0, 5) End If Loop End Sub 

你得到的错误,因为没有分配给variables。 这里 – “清除放入和调用历史数据oiSheet.Range(historStartRangePuts,historStartRangePuts.Offset(0,1))。selectoiSheet.Range(Selection,Selection.End(xlDown))。Select Selection.ClearContents

  oiSheet.Range(historStartRangeCalls, historStartRangeCalls.Offset(0, 1)).Select oiSheet.Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents 

你失去了两个历史范围的定义。 所以当你尝试

 Set historStartRangePuts = historStartRangePuts.Offset(0, 10) Set historStartRangeCalls = historStartRangeCalls.Offset(0, 10) 

没有什么可以参考的。 这是因为clearcontents返回一个variant – 这是一个对象。

这里正在发生 –

  historStartRangePuts.Select ActiveSheet.Paste 

删除该过程,你会看到Puts工程,但Calls仍然失败。