Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 运行宏时最小化用户窗体_Excel_Vba - Fatal编程技术网

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中完成的任何事务。我们对此有什么解决办法吗?是的,它奏效了:)。。谢谢你所有的推荐。真的很有用。