On Error GoTo skip1 Application.ActiveProtectedViewWindow.Edit skip1: Cells.Select Cells.EntireColumn.AutoFit ActiveWorkbook.Save Range("A1").Select On Error GoTo skip2 Cells.Find(What:="期货持仓汇总", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate i = Selection.Row + 2 i0 = i Do While Range("A" & i) <> "合计" i = i + 1 Loop i = i - 1 Range("A" & i0, "J" & i).Copy Workbooks("场内部期权每日结算.xlsm").Activate Sheets("当日持仓").Select Range("I2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '贴期权持仓 Workbooks("011381506002_" & CStr(Format(now, "yyyy-mm-dd")) & ".xls").Activate skip2: Cells.Find(What:="期权持仓汇总", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate为什么这段代码中on error goto skip2失效
时间: 2024-04-14 09:31:46 浏览: 172
在你提供的代码中,`On Error GoTo skip2` 失效的原因可能是因为 `Find` 方法的错误没有被正确捕获。`Find` 方法在找不到指定的值时会引发错误,但是在 `On Error GoTo skip2` 的下一行就立即使用了 `Activate` 方法,这可能导致错误被忽略而不会跳转到 `skip2` 标签。
为了确保错误被正确捕获和处理,你可以将 `Activate` 方法移到错误处理代码块内,例如:
```vb
On Error GoTo skip2
Cells.Find(What:="期货持仓汇总", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
If Not ActiveCell Is Nothing Then
ActiveCell.Activate
' 在这里继续处理其他操作
i = Selection.Row + 2
i0 = i
Do While Range("A" & i) <> "合计"
i = i + 1
Loop
i = i - 1
Range("A" & i0, "J" & i).Copy
Workbooks("场内部期权每日结算.xlsm").Activate
Sheets("当日持仓").Select
Range("I2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
' 贴期权持仓
Workbooks("011381506002_" & CStr(Format(now, "yyyy-mm-dd")) & ".xls").Activate
skip2:
Cells.Find(What:="期权持仓汇总", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
If Not ActiveCell Is Nothing Then
ActiveCell.Activate
' 在这里继续处理其他操作
End If
```
在上述修改后的代码中,我们将 `Activate` 方法放入了 `If Not ActiveCell Is Nothing` 的条件语句内,这样当 `Find` 方法找到了指定的值时才会执行后续的操作。如果没有找到,错误处理代码块将会执行,然后程序会继续执行下面的代码。这样可以确保错误被正确捕获,并且 `On Error GoTo skip2` 生效。
阅读全文