此功能只是为了运行一大堆工作表并清除旧数据并将其复制到历史范围,为实际数据分析和传输做准备。当我尝试重置范围对象以继续执行工作表中单元格的清除时,我收到“运行时错误‘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
最佳答案
您收到错误是因为没有为该变量分配任何内容。这里 -
'清除看跌期权和看涨期权历史数据
oiSheet.Range(historStartRangePuts, historStartRangePuts.Offset(0, 1)).Select
oiSheet.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
您将丢失两个 histor
范围的定义。所以当你尝试
Set historStartRangePuts = historStartRangePuts.Offset(0, 10)
Set historStartRangeCalls = historStartRangeCalls.Offset(0, 10)
没有什么可以引用的。 我认为这是因为 clearcontents返回一个变体
- 它是一个对象。
事情就发生在这里 -
historStartRangePuts.Select
ActiveSheet.Paste
删除该过程,您将看到 Puts
可以工作,但 Calls
仍然失败。
关于vba - 424 错误 需要对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35584842/