【VBA研究】如何防止用户关闭窗体

iamlaosong文

VBA开发中经常用到窗体,这样界面可以做的漂亮一点,我们甚至可以关闭Excel应用窗口,只保留我们自己的窗口,只需要启动时增加关闭应用显示语句。虽然Excel应用窗口不显示,但不影响工作表的使用,依然可以在工作表中读写数据。启动窗体语句如下:

Private Sub Workbook_Open()
    Application.Visible = False
    UserForm1.Show
End Sub

显示自己的窗口后,一般不希望用户点击“X”直接关闭窗体,而是希望用户点击指定的按钮关闭,因为常常需要在关闭系统请做一些数据处理。

当用户点击“X”直接关闭窗体时,会激发UserForm_QueryClose事件,可以在这个事件中阻止窗体关闭,代码如下:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
         If CloseMode = 0 Then Cancel = 1
End Sub

Closemode的值为0(vbFormControlMenu)表示用户在 UserForm上选择“控制”菜单中的“关闭”命令。----就是点击右上角的叉的情况。

Closemode的值为1(VbFormCode)表示由代码调用 Unload 语句关闭窗体。----知道 userform.show么?有show方法也有卸载窗口的unload语句,在用unload userform1来卸载窗口的时候 closemode的值为1。

此外,Closemode的值还有2(vbAppWindows)当前窗口操作环境对话正在结束;3(vbAppTaskManager)“任务管理器”窗口正在关闭应用程序;4(vbFormMDIForm)一个MDI子窗体因为MDI窗体正在关闭而关闭。

Cancel 参数是个Integer值(整数值),在VBA里面0值表示False 非零值表示True,当Cancel值为True的时候表示当前关闭操作被终止,也就是说窗口是不被允许关闭的。

注意:Cancel=True表示不允许用户关闭。


  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值