如果打开则关闭工作簿

时间:2015-01-27 05:01:33

标签: excel vba

我想要一个错误处理程序来处理关闭未打开的Excel工作簿。

我尝试了以下代码。

If Workbooks("Combo.xlsx").IsOpen Then 
     Workbooks("Combo.xlsx").Close SaveChanges:=False 
Else: Resume Next 
MsgBox "Error: (" & Err.Number & ") " & Err.Description, vbCritical 
End If 

这给了我一条错误信息:

  

运行时错误:9下标超出范围。

2 个答案:

答案 0 :(得分:2)

你真正需要的是

On Error Resume Next
Workbooks("Combo.xlsx").Close SaveChanges:=False
On Error Goto 0

如果没有使用该名称打开工作簿,则可以忽略该错误。

答案 1 :(得分:0)

我遇到了一个同样的问题,即“错误恢复上的下一步”似乎对此不起作用。我的设置只是为了解决未处理的错误,所以我不明白为什么在尝试关闭时它会不断出错。

无论如何,我制作了关闭工作簿时要调用的简单变通方法子程序:

Private Sub closeWorkbookIfOpen(wb As Workbook)
    On Error GoTo NotOpen

    wb.Close

NotOpen:
End Sub

不确定为什么继续简历不起作用,但这似乎可以解决问题!