5

我目前在 excel 实例上打开了一个用户表单,并且它被设置为除了用户表单之外你不能与任何东西进行交互。由于无法最小化该程序,我在用户窗体上创建了一个“最小化”按钮,单击该按钮时,会隐藏用户窗体并按预期缩小 Excel 窗口。

但是,当我单击最小化的 excel 应用程序以恢复窗口时,我希望用户窗体再次出现,并且 excel 窗口像以前一样出现在它后面(现在只出现 excel 窗口)。

是否有任何我可以监听的函数或触发器允许我在单击并恢复 excel 实例时再次显示我的用户表单?这就是我目前最小化所有内容的方式:

Private Sub CommandButton15_Click()
Me.Hide
Application.WindowState = xlMinimized
End Sub
4

1 回答 1

7

当您显示表单时,您可能会执行以下操作:

UserForm.Show

Show方法接受一个可选参数,是显示表单Modal还是显示Modeless. 模态显示是默认的,不允许与工作表/工作簿对象交互。相反,当您显示表单时,请执行以下操作:

UserForm.Show vbModeless

这将允许用户与工作表/工作簿进行交互,从而减少对自定义按钮的需求,而您不需要这样做Me.Hide。最小化应用程序将最小化用户窗体。最大化应用程序将重新显示工作簿用户窗体。

如果您必须使用vbModalUserForm 的显示(在许多应用程序中,这是为了防止用户与工作簿/工作表交互而故意要求),请告诉我。可能有一些事件或应用程序事件可以更好地捕获最小化/最大化。

更新

或者,你可以做这样的事情。这种方法隐藏 Excel 应用程序,并缩小用户窗体的大小,然后在您单击用户窗体并再次显示 Excel 应用程序时调整它的大小。

Private Sub CommandButton15_Click()
'Hide Excel and minimize the UserForm
    Application.Visible = False
    Me.Height = 10
    Me.Width = 10

End Sub

Private Sub UserForm_Click()
'Show Excel and resize the UserForm
    Application.Visible = True
    Me.Height = 180
    Me.Width = 240
End Sub

Private Sub UserForm_Terminate()
'Ensure that the Application is visible and the form resized
    UserForm_Click
End Sub
于 2013-08-16T14:48:20.597 回答