Excel崩溃workbook.close?

我有一个VBA函数,当我运行它(“Microsoft Excel已停止工作”)时,会崩溃excel,但如果我通过编辑器中的每一行,工作正常。 我想用该函数打开另一个工作簿,更改给定工作表上的切片器,查找值,然后closures新工作簿而不保存它。 我有的function如下:

Function ValueLookup() Dim Check As Boolean Dim NewBook As Workbook Check = IsWorkBookOpen("C:\Location\Filename") If Check = False Then Set NewBook = Workbooks.Open("C:\Location\Filename") Else Set NewBook = Workbooks("Filename") End If NewBook.Activate Worksheets("Sheetname").Activate ActiveSheet.PivotTables("pivottable1")ManualUpdate = True With ActiveWorkbook.SlicerCaches("Slicer_SlicerName") .ClearManualFilter .VisibleSlicerItemsList = Array("[Tablename].[Columnname].&[MyValue]") End With ActiveSheet.PivotTables("pivottable1").ManualUpdate = False ValueLookup = ActiveSheet.Cells.Find(What:="*", _ After:=Range("A1"), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ searchorder:=xlByRows, _ searchdirection:=xlPrevious, _ MatchCase:=False) If Check = False Then NewBook.Close savechanges:=False End Function 

(IsWorkBookOpen()取自检测Excel工作簿是否已经打开 ,似乎没有任何问题)。

似乎试图closures新的工作簿是什么导致的问题,如果工作簿打开之前,我运行该function没有问题。 调用该函数的子例程通常会在excel崩溃之前执行该函数(为用户input打开一个MsgBox)。 我已经尝试在每行之后添加Sleep 1000,并且在最后一行之后添加DoEvents,而不会改变结果。 我试过改变

 NewBook.Close savechanges:= False 

 Application.Windows("NewBook").Close 

没有任何区别。 我也尝试用replace结束

 If Check = False Then Cancel = True Application.OnTime Now, "Close_Xls" End If End Function Sub Close_Xls() ThisWorkBook.Close savechanges:=False End Sub 

但是在我的子程序完成之后,这个closures了错误的工作簿(我想让macros运行的原始工作簿)。 但是,它似乎在closures错误的工作簿之前成功执行代码,并且不会导致Excel崩溃。

有什么build议么?

编辑:

现在看来工作没有问题。 我改变了以下内容:

 If Check = False Then NewBook.Close savechanges:=False End Function 

 NewBook.Saved = True If Check = False Then Cancel = True Application.OnTime Now, "Close_Xls" End If End Function Sub Close_Xls() Workbooks("Filename").Close savechanges:=False End Sub 

谢谢!

Close_Xls()子项更改为以下内容将使正确的工作表closures:

 Sub Close_Xls() Workbooks("Filename").Close savechanges:=False End Sub 

closures工作簿而不保存可能工作的另一种方法是使用:

 NewBook.Saved = True 

在结束之前。