首页 > 单独文章 > 正文

定制化窗体之窗体添加最大最小化按钮

时间:2007-09-06 14:57:53 作者:officeba 【认证】

主    题

 定制化窗体之窗体添加最大最小化按钮

版    本

 Excel2000及其以后版本

说    明

  本示例主要运用API函数来定制化Excel中的用户窗体,为窗体添加最大最小化按钮。(Code By wangminbai)

Excel 中当当我们显示一个VBA中的用户窗体时你会发现此窗体不像一般的程序窗体,它没有最大化和最小化按钮,那我们就来给它添加上最大化和最小化按钮。

 在Excel 的VBE窗口中插入一个用户窗体,将其命名为 MaxMiniUserform。然后再添加一个模块。在窗体和模块中添加后面所列代码。

在工作薄中的任意工作表中添加一窗体按钮控件,将指定其 设置宏  为 ShowForm。其供示范之用

显示效果如下图:

 

[代码:]

'//************************************************************************
'//显示窗体

Sub ShowForm()
   MaxMiniUserform.Show
End Sub
'/------------------------------------------------------------------------

Option Explicit
'//**************************************************************************
'//此模块演示了给窗体添加最大最小化按钮
'//**************************************************************************
'//以下声明API函数
'//查找窗口

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 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 Const GWL_STYLE = (-16)                     '窗口样式
Private Const WS_MAXIMIZEBOX = &H10000          '最大化按钮
Private Const WS_MINIMIZEBOX = &H20000           '最小化按钮
'//*******************************************************************************
'//                                               主程序
'//********************************************************************************

Private Sub UserForm_Initialize()
    Dim Hwnd As Long, Istype As Long
    '//查找窗口句柄
    Hwnd = FindWindow("ThunderDFrame", Me.Caption)
    '//取得窗口样式位
    Istype = GetWindowLong(Hwnd, GWL_STYLE)
    '//窗体样式位: 原样式和最大化、最小化按钮
    Istype = Istype Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX
    '//重设窗体样式位
    SetWindowLong Hwnd, GWL_STYLE, Istype
    '//重绘窗体标题栏
    DrawMenuBar Hwnd
End Sub

'/-----------------------------------------------------------------------------------

说明: 本范例是一个关于Excel窗体定制的运用,主要利用 API函数来为VBA的用户窗体添加了最大化和最小化按钮。文档中使用的API函数的具体说明见相关资料。

作者博客地址:http://www.excelfans.blog.sohu.com/


相关文章

同类最新