Excel 运行宏时最小化用户窗体
当一个Excel 运行宏时最小化用户窗体,excel,vba,Excel,Vba,当一个Userform在其中运行一个方法时,我试图最小化它。我的方法中的功能是如此巨大,以至于它运行了很长时间。我希望最小化UserForm,以便我可以处理其他一些excel工作表,然后在运行期间返回到UserForm(或恢复它) 当运行UserForm时,它不允许访问它的任何组件(因此,即使我添加最小化按钮,它也没有用)。我能够访问其他Excel并使用它们,因为我将Userform设置为vbmodeless,但我的要求是Userform应该最小化,现在我将Userform拖到屏幕的末尾,以便轻
Userform
在其中运行一个方法时,我试图最小化它。我的方法中的功能是如此巨大,以至于它运行了很长时间。我希望最小化UserForm
,以便我可以处理其他一些excel工作表,然后在运行期间返回到UserForm
(或恢复它)
当运行
UserForm
时,它不允许访问它的任何组件(因此,即使我添加最小化按钮,它也没有用)。我能够访问其他Excel并使用它们,因为我将Userform
设置为vbmodeless
,但我的要求是Userform
应该最小化,现在我将Userform
拖到屏幕的末尾,以便轻松查看其他文件。为什么不在您的Userform中添加最小化/最大化;)
这是我数据库中的一些内容(不是我的代码)。将其粘贴到userform中
Option Explicit
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function ShowWindow Lib "user32" _
(ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const GWL_STYLE As Long = (-16)
Private Const WS_SYSMENU As Long = &H80000
Private Const SW_SHOWMAXIMIZED = 3
Private Sub UserForm_Activate()
Dim Ret As Long, styl As Long
Ret = FindWindow("ThunderDFrame", Me.Caption)
styl = GetWindowLong(Ret, GWL_STYLE)
styl = styl Or WS_SYSMENU
styl = styl Or WS_MINIMIZEBOX
styl = styl Or WS_MAXIMIZEBOX
SetWindowLong Ret, GWL_STYLE, (styl)
DrawMenuBar Ret
End Sub
屏幕截图
我建议改用
UserForm.Hide
方法…谢谢KazJaw的回复。但如果我想回到我的宏,你怎么知道我的宏已经完成了处理。也进入我的收藏:哦,真的,这个效果非常好。非常感谢Siddharth Rout。但是Sidharth,我的问题是:如果我添加了最小化按钮,我在宏运行时无法访问它,userform中的每个对象都被锁定,所以我只能最小化userform中完成的任何事务。我们对此有什么解决办法吗?是的,它奏效了:)。。谢谢你所有的推荐。真的很有用。