VBA“ThisWorkbook.Close”不closures此工作簿!

我正在写一个VBA的macros,应该打开“fileB.xls”,然后打开后立即closures。 既然我们将要讨论3个excel文件,我会称之为第一个文件。

文件A的用户窗体上button的代码如下所示。

Private Sub CommandButton2_Click() 'Code for Button in FileA ' Workbooks.Open Filename:="File Path/fileB.xls" ThisWorkbook.Close End Sub 

一旦“fileB.xls”打开,它将启动一个表单来收集一些用户信息。

但是原来的文件没有closures,“fileB.xls”打开。

 Sub Workbook_Open() 'Code in FileB ' 'Display a form to obtain information from the user. ' frmOpenFile.Show End Sub 

可能值得注意的是,fileB打开了第三个也是最终的excel文件(FileC)。 在FileB中使用与FileA代码类似的代码,并且在启动FileC(FileBclosures正常)时正常工作。

这个想法是,有一个“主”文件,你可以select你需要填写的表格。 这个主文件然后closures自己,让用户填写表格,并根据用户input打开最终的Excel文件。

所以,只是为了重申这个问题,FileA打开,启动一个用户表单,用户点击一个button,文件B启动,FileA不应该closures,当它应该。

我将不胜感激任何帮助!

编辑:我应该注意,如果重写FileA直接打开FileC,FileA正确closures。 从FileB的用户forms可以防止文件Aclosures?

是的,这是用户表单。 文件C中的用户表单是非模态的。 它与文件B中的相反。当文件B打开时,用户窗体打开,所有代码执行停止,直到它closures。 随着文件C,代码执行继续。 如果将文件B的用户窗体属性ShowModal更改为False,则它们将工作相同。

在VBE中,打开有问题的用户窗体,然后按F4打开“属性”对话框。 findShowModal属性并将其更改为False。

如果您的工作簿FileA已经改变,则会提示用户保存工作簿。

根据您正在运行的其他代码,这可能会被隐藏。

为了避免这个提示,只要你不需要保存更改,这个代码就可以工作:

 ThisWorkbook.Close SaveChanges = False