允许用户以编程方式创build的Excel表格而不closures用户窗体

当用户点击一个button时,以编程方式在我的VBA应用程序中创build一个新的Excel工作表。 我想让用户写这个新创build的工作表,并保持创build新工作表的用户窗体同时显示。

编辑:额外的精度:我使用一系列的用户表单,第一个是authentication表单,第二个是function性select菜单,我在我的问题中提到的那个提供了这些function之一。 因此,我的问题的正确解决scheme是显示所有这些用户forms为非模态。

将用户窗体显示为非模态:

 Userform1.Show False '//<-- Allows user interaction whilst form is active. 

警告:
将表单显示为非模式将允许在显示表单后继续执行代码 – 这可能会导致意外的行为,应在devise时考虑。 例如:

 Sub ModalExample() UserForm1.Show '// Show modal, code will pause here until form is closed. MsgBox "Userform has now been closed." UserForm1.Show False '// Show non-modal, code will continue to execute regardless. MsgBox "Userform is still open." End Sub 

被接受的答案是错误的。 以下代码行不正确:

 Userform1.Show False 

无模式地显示用户表单的build议对于这个问题的场景来说是一个很好的build议,但是要做到这一点,应该这样做:

 Userform1.Show vbModeless <---This is correct. 

False和vbModeless都是零值。 不过,这只是巧合。

例如,如果您要尝试反模式来以模态方式显示用户表单,则不起作用:

 Userform1.Show True <---This does NOT work. 

但是这样做:

 Userform1.Show vbModal 

切勿将布尔值作为parameter passing给用户窗体的Show方法。 而是使用FormShowConstants枚举的成员。

我很确定,如果一个用户窗体是活动的,那么它将不允许你访问工作表,直到它被closures。

几个方法虽然这个方法。 隐藏用户表单,直到它再次需要。 将其设置为键盘快捷方式或其他内容再次显示。 所以这将是userform.hide然后有另一个macros或function区中的button来显示userform再次使用userform.show

而不是创build一个新的工作表。 用新的工作簿创build一个新的Excel实例。 这将允许用户窗体在一个Excel实例中保持打开状态,然后用户可以在另一个Excel实例中写入其他工作簿

要创buildExcel的新实例,您需要使用代码

 Dim objExcel As Excel.Application Set objExcel = CreateObject("Excel.Application") objExcel.Workbooks.Add objExcel.Visible = True 

这将创build一个新的Excel实例,并在Excel的另一个实例中仍然具有用户窗体