Excel VBA用户窗体 - 最小化按钮

时间:2018-06-14 08:42:44

标签: excel vba excel-vba excel-2010 userform

大家好,

我已经在Excel VBA中处理了几个用户表单,现在还有另外一位绅士在一个问题上的帮助。在他们工作的同时,我意识到这是一场噩梦,因为我无法点击它们到我的电子表格中,这就是让我提出问题的原因; 有没有办法在用户窗体右上角的关闭图标旁边创建一个最小化按钮?我希望这只是一个随机按钮,但如果有可能,任何人都可以助攻。我已经尝试了.hide,但这看起来不起作用。

如果有帮助,我使用 Excel 2010

提前致谢:)

1 个答案:

答案 0 :(得分:1)

试试这样: -



Private Sub UserForm_Initialize()
InitMaxMin Me.Caption
End Sub




将此代码放入模块



Option Explicit
Public Declare Function FindWindowA& Lib "user32" (ByVal lpClassName$, ByVal lpWindowName$)
Public Declare Function GetWindowLongA& Lib "user32" (ByVal hwnd&, ByVal nIndex&)
Public Declare Function SetWindowLongA& Lib "user32" (ByVal hwnd&, ByVal nIndex&, ByVal dwNewLong&)
' Déclaration des constantes
Public Const GWL_STYLE As Long = -16
Public Const WS_MINIMIZEBOX = &H20000
Public Const WS_MAXIMIZEBOX = &H10000
Public Const WS_FULLSIZING = &H70000
'Attention, envoyer après changement du caption de l'UF
Public Sub InitMaxMin(mCaption As String, Optional Max As Boolean = True, Optional Min As Boolean = True _
        , Optional Sizing As Boolean = True)
Dim hwnd As Long
    hwnd = FindWindowA(vbNullString, mCaption)
    If Min Then SetWindowLongA hwnd, GWL_STYLE, GetWindowLongA(hwnd, GWL_STYLE) Or WS_MINIMIZEBOX
    If Max Then SetWindowLongA hwnd, GWL_STYLE, GetWindowLongA(hwnd, GWL_STYLE) Or WS_MAXIMIZEBOX
    If Sizing Then SetWindowLongA hwnd, GWL_STYLE, GetWindowLongA(hwnd, GWL_STYLE) Or WS_FULLSIZING
End Sub