Excel 执行工作簿时意外显示工作簿。在应用程序运行时关闭。可见=false
关闭新工作簿时出现意外显示 我从命令行启动宏。Excel 执行工作簿时意外显示工作簿。在应用程序运行时关闭。可见=false,excel,vba,Excel,Vba,关闭新工作簿时出现意外显示 我从命令行启动宏。 应用程序在工作簿中不可见。\u打开: Sub workbook_open() Application.Visible = False UserForm1.Show Application.Visible = True End Sub UserForm1包含一个按钮。 ->仅显示userform 按下按钮可启动以下代码: Sub UnexpectedDisplay() Dim NewBook As Workbo
应用程序在工作簿中不可见。\u打开:
Sub workbook_open()
Application.Visible = False
UserForm1.Show
Application.Visible = True
End Sub
UserForm1包含一个按钮。->仅显示userform 按下按钮可启动以下代码:
Sub UnexpectedDisplay()
Dim NewBook As Workbook
Debug.Print "_______________"
Application.Visible = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set NewBook = Workbooks.Add
With NewBook
.Title = "MyTitle"
.Subject = "Display"
.SaveAs Filename:="MyWorkbook"
End With
Debug.Print ActiveWorkbook.Name
MsgBox "New workbook added"
NewBook.Close SaveChanges:=True
Debug.Print ActiveWorkbook.Name
MsgBox "Workbook closed"
Application.DisplayAlerts = True
End Sub
将显示第一个msgbox:“已添加新工作簿”->仅显示msgbox 按“确定” 将显示第二个msgbox:“工作簿已关闭”
调试跟踪:
_______________
MyWorkbook.xlsx
MyMacroFile.xlsm
->工作簿变得可见(何时打开MyMacroFile.xlsm?。 ->问题:如何避免此问题。请尝试此代码
Sub TestInVis()
Dim Wb As Workbook
Dim Fn As String
Fn = FileOpenName("Test")
Application.ScreenUpdating = False
Set Wb = Workbooks.Open(Fn)
Wb.Windows(1).Visible = False
Application.ScreenUpdating = True
End Sub
执行此操作之前,请将变量Fn
设置为包含有效的文件名,并填写其路径。(我使用了一个名为FileOpenName
的函数,该函数调用一个文件选择器对话框。)代码将打开指定的工作簿并隐藏其窗口,将以前显示的窗口保留在顶部
在我的测试中,Open
操作没有重新恢复屏幕更新,但我不确定禁用它是否会有不同。打开工作簿时会出现短暂的闪烁,我认为在屏幕更新=False
时不会太明显。但是,如果文件太大,它将被延长。无论如何,文件以不可见的方式打开,您可以通过指定给它的对象变量访问它
接下来,我用工作簿测试了相同的过程。我所说的关于Open
的内容同样适用,当然,除了新工作簿非常小之外。因此,更难判断屏幕更新是否真的起作用。请尝试此代码
Sub TestInVis()
Dim Wb As Workbook
Dim Fn As String
Fn = FileOpenName("Test")
Application.ScreenUpdating = False
Set Wb = Workbooks.Open(Fn)
Wb.Windows(1).Visible = False
Application.ScreenUpdating = True
End Sub
执行此操作之前,请将变量Fn
设置为包含有效的文件名,并填写其路径。(我使用了一个名为FileOpenName
的函数,该函数调用一个文件选择器对话框。)代码将打开指定的工作簿并隐藏其窗口,将以前显示的窗口保留在顶部
在我的测试中,Open
操作没有重新恢复屏幕更新,但我不确定禁用它是否会有不同。打开工作簿时会出现短暂的闪烁,我认为在屏幕更新=False
时不会太明显。但是,如果文件太大,它将被延长。无论如何,文件以不可见的方式打开,您可以通过指定给它的对象变量访问它
接下来,我用工作簿测试了相同的过程。我所说的关于Open
的内容同样适用,当然,除了新工作簿非常小之外。因此,更难判断屏幕更新
是否真的起作用。打开工作簿的代码在哪里?此按钮是否关闭表单,因为工作簿中的下一行是application.visible=true。它看起来是对的,因为activeworkbook将是调用代码的那个,您正在关闭newworkbook,所以在打开之前将其放在一起,然后看看它是什么?另一个工作簿本身是否打开另一个工作簿。Workbooks.Add方法使新工作簿成为活动工作簿。它将被分配到活动窗口,在该窗口中它将可见。要避免设置Application.screenUpdate=False,请添加新工作簿,隐藏ActiveWindow,然后重新启用ScreenUpdate。将显示以前的活动窗口。@Nathan_Sav:该按钮不会关闭窗体。它只启动意外的显示宏。按userform十字键退出应用程序。@Nathan_Sav:“另一个工作簿本身是否打开了另一个工作簿。”;NewBook不再打开工作簿。@Variatus:Application.ScreenUpdate=False在执行Workbooks.Add时丢失?打开工作簿的代码在哪里?此按钮是否关闭表单,因为工作簿中的下一行是application.visible=true。它看起来是对的,因为activeworkbook将是调用代码的那个,您正在关闭newworkbook,所以在打开之前将其放在一起,然后看看它是什么?另一个工作簿本身是否打开另一个工作簿。Workbooks.Add方法使新工作簿成为活动工作簿。它将被分配到活动窗口,在该窗口中它将可见。要避免设置Application.screenUpdate=False,请添加新工作簿,隐藏ActiveWindow,然后重新启用ScreenUpdate。将显示以前的活动窗口。@Nathan_Sav:该按钮不会关闭窗体。它只启动意外的显示宏。按userform十字键退出应用程序。@Nathan_Sav:“另一个工作簿本身是否打开了另一个工作簿。”;NewBook不再打开工作簿。@Variatus:Application.ScreenUpdate=False在执行Workbooks.Add时丢失?