打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA 窗体之禁用窗体关闭按钮
注意: 本文适用于 Excel 2000 及其以后版本(包含 64 位 Office )

 

我们前面讲了怎样去除 VBA 窗体的关闭按钮,其实个人感觉没有这个关闭按钮会使整个窗体感觉有点怪,但有时候又想让他不可用,变得不可点击,那该怎么实现呢? 好,我们马上就来试一试看看。

 

   

1文件名称1下载链接
1禁用窗体关闭按钮.ziphttp://pan.baidu.com/s/1ntG6Odj
 

 

操作如下:

  • 在Excel 的VBE窗口中插入一个用户窗体,将其命名为 frmNotEnabledCloseIcon。然后再添加一个模块。在窗体和模块中添加后面所列代码。
  • 在工作薄中的工作表中添加一窗体按钮控件,指定其设置宏 ShowNotEnabledCloseIconForm, 其供示范之用.

  

具体代码:

  

"frmNotEnabledCloseIcon" 窗体代码

Option Explicit'****************************************'---此模块演示了禁用窗体关闭按钮---'****************************************'以下声明API函数#If Win64 Then '64位    '查找窗口    Private Declare PtrSafe Function FindWindow _        Lib "user32" _        Alias "FindWindowA" ( _            ByVal lpClassName As String, _            ByVal lpWindowName As String) _    As LongPtr    '取得窗体系统菜单    Private Declare PtrSafe Function GetSystemMenu _        Lib "user32" ( _            ByVal hwnd As LongPtr, _            ByVal bRevert As Long) _    As LongPtr    '删除菜单项    Private Declare PtrSafe Function DeleteMenu _        Lib "user32" ( _            ByVal hMenu As LongPtr, _            ByVal nPosition As Long, _            ByVal wFlags As Long) _    As Long    '重绘窗体标题栏    Private Declare PtrSafe Function DrawMenuBar _        Lib "user32" ( _            ByVal hwnd As LongPtr) _    As Long#Else '32位    '查找窗口    Private Declare Function FindWindow _        Lib "User32" _        Alias "FindWindowA" ( _            ByVal lpClassName As String, _            ByVal lpWindowName As String) _    As Long    '取得窗体系统菜单    Private Declare Function GetSystemMenu _        Lib "User32" ( _            ByVal Hwnd As Long, _            ByVal bRevert As Long) _    As Long    '删除菜单项    Private Declare Function DeleteMenu _        Lib "User32" ( _            ByVal HMenu As Long, _            ByVal nPosition As Long, _            ByVal wFlags As Long) _    As Long    '重绘窗体标题栏    Private Declare Function DrawMenuBar _        Lib "User32" ( _            ByVal Hwnd As Long) _    As Long#End If'以下定义常数Private Const MF_BYCOMMAND = &H0&Private Const SC_CLOSE = &HF060'以下下定义变量#If Win64 Then '64位    Private FHwnd As LongPtr    Private hMenu As LongPtr#Else    Private FHwnd As Long    Private hMenu As Long#End If'关闭按钮点击Private Sub BtCancel_Click()    Unload MeEnd Sub'恢复按钮点击Private Sub BtResume_Click()    '恢复原菜单    hMenu = GetSystemMenu(FHwnd, 1)    '重绘窗体标题栏    DrawMenuBar FHwndEnd Sub'**************************************'---------------主程序-----------------'**************************************Private Sub UserForm_Initialize()    '查找窗口句柄    FHwnd = FindWindow("ThunderDFrame", Me.Caption)    '取得窗体系统菜单    hMenu = GetSystemMenu(FHwnd, 0)    '删除系统菜单中关闭菜单    DeleteMenu hMenu, SC_CLOSE, MF_BYCOMMAND    '重绘窗体标题栏    DrawMenuBar FHwndEnd Sub

 

"mdNotEnabledCloseIcon" 模块代码

Option Explicit'此过程为工作表内按钮调用Sub ShowNotEnabledCloseIconForm()    frmNotEnabledCloseIcon.ShowEnd Sub
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何屏蔽掉窗体中的关闭按钮X?
Excel窗体API应用技巧
VBA实用小程序04:在用户窗体标题栏添加最大化和最小化按钮
如何取消窗体的关闭按钮
VB关于webbrowser相关操作大全
VBA常用代码解析(第四十一讲)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服