我有一张包含6个用户表单的Excel表格,我希望能够在任务栏中选择并激活。
我使用了以下代码,我在另一个帖子中找到了:
Private Sub UserForm_Activate()
Dim lFrmWndHdl As Long
Dim lStyle As Long
lFrmWndHdl = FindWindowA(vbNullString, Me.Caption)
lStyle = GetWindowLong(lFrmWndHdl, GWL_STYLE)
lStyle = lStyle Or WS_SYSMENU
lStyle = lStyle Or WS_MINIMIZEBOX
lStyle = lStyle Or WS_MAXIMIZEBOX
SetWindowLong lFrmWndHdl, GWL_STYLE, (lStyle)
lStyle = GetWindowLong(lFrmWndHdl, GWL_EXSTYLE)
lStyle = lStyle Or WS_EX_APPWINDOW
SetWindowLong lFrmWndHdl, GWL_EXSTYLE, lStyle
DrawMenuBar lFrmWndHdl
AppActivate ("Microsoft Excel")
ThisWorkbook.Application.Visible = False
End Sub
这有效,但有延迟。 当第一个userform显示时,没有任务栏图标。单击按钮并显示第二个用户表单后,仍然没有项目。关闭第二个用户窗体并返回第一个用户窗体后,第一个用户界面的图标就会显示出来。
我尝试过使用一些" DoEvents"在线之间,但仍然没有帮助。 所有userforms都是showmodal false。 它似乎需要在结束子后进行某种更新。
任何想法?