允许用户在不关闭用户窗体的情况下以编程方式创建Excel工作表

时间:2015-04-28 08:10:35

标签: excel vba excel-vba

当用户点击按钮时,我以编程方式在我的VBA应用程序中创建一个新的Excel工作表。我想允许用户编写这个新创建的工作表,并保持同时显示创建新工作表的用户形式。

编辑:附加精度:我使用一系列用户表单,第一个是身份验证表单,第二个是功能选择菜单,我在问题中提到的那个提供了其中一个功能。因此,我的问题的正确解决方案是将所有这些用户表单显示为非模态。

2 个答案:

答案 0 :(得分:2)

将userform显示为非模态:

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

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

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

答案 1 :(得分:-1)

我很确定如果用户表单处于活动状态,那么它将不允许您在工作表关闭之前访问它。

虽然有很多方法可以解决这个问题。隐藏userform直到再次需要它。将其设置为键盘快捷键或其他内容以再次显示它。因此,userform.hide会在功能区中显示另一个宏或按钮,以便使用userform.show再次显示用户表单

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

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

Dim objExcel As Excel.Application 
Set objExcel = CreateObject("Excel.Application") 

objExcel.Workbooks.Add 

objExcel.Visible = True 

这将创建一个新的Excel实例,并且仍然在另一个Excel实例中具有userform