我想打开一个工作簿并仅显示特定的用户窗体(并隐藏包含该用户窗体的工作簿)。我知道如何在工作簿打开时打开表单,但是我仅隐藏此特定工作簿的尝试失败了。我需要用户在使用用户表单时能够工作和/或打开其他Excel窗口。有什么建议么? 谢谢, JP
我尝试了以下方法:
myUserform.show vbModeless
Application.WindowState = xlMinimized
上面的方法似乎不符合常规,并且如果当前正在打开其他Excel窗口,则该方法很有趣。我也尝试过:
myUserform.show vbModeless
Application.Visible = False
第二种方法不允许用户继续在其他Excel窗口(我需要)上工作
答案 0 :(得分:0)
编辑:下面的组合代码隔离了具有用户窗体的Excel实例,强制其他文件在另一个实例上打开,并强制您在自己的实例上打开该文件。允许您使用npm i -g eslint
首先,您必须确保此excel实例仅用于UserForm文件。
打开工作簿时,请确保它是实例上唯一的一个。
此工作簿模块:
Application.Visible = False
您可能会想:“这意味着我必须确保先打开此文件,否则其他文件将无法工作”。的确如此,但是您可以通过创建Excel的快捷方式来解决此问题,并指定“ / X”参数以在新实例上打开该文件。这样,即使打开了其他文件,它也会在新实例上打开。换句话说,找到EXCEL.exe,为其创建快捷方式,然后将目标编辑为'I'll explain why you need the App variable below
Private WithEvents App As Application
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = ThisWorkbook
If Application.Workbooks.Count > 1 Then
'Not on its own instance
Wb.Close False
Else
'Alright, it's the only workbook, lets open the form
Set App = Application
Application.Visible = False
UserFormName.Show vbModeless
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
。EXCEL路径可能会有所不同,具体取决于您的Excel版本。
现在,如果我尝试打开另一个excel文件并尝试在此实例上打开它,会发生什么?这就是"C:\Program Files (x86)\Microsoft Office\Office15\EXCEL.EXE" /X "FilePath\FileName.xlsm"
变量起作用的地方。接下来的两个下标是事件处理程序,可在您尝试打开文件或新工作簿时使用。
App
新的excel实例将成为“ Windows首选”,因此您打开的任何新工作簿都将尝试在新实例中打开,而将UserForm保留为一个。并且,此文件应始终位于其自己的实例上,如果您尝试打开另一个文件或新的工作簿,则它们应使用这些处理程序在新的实例中打开。
注意:打开文件时,某些事件处理程序会被激活,如果您对代码进行了任何更改,则可能需要保存并重新打开文件以使其正常工作。