今天继续讲讲用户窗体的操作啦
一、禁用关闭按钮
先认识一下QueryClose 关闭前执行事件:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
这个事件是在用户窗体关闭之前发生。
第一个参数Cancel :默认是0,除了0之外的任何数都会停止QueryClose事件;
第二个参数CloseMode:有以下四个参数。这个参数的意思是关闭这个程序的方式有哪些,比如说用户点了右上角的X,或者是用任务管理器关的,或者是调用Unload关的等等
常量 | 值 | 说明 |
vbFormControlMenu | 0 | 用户已经从设计器上的“控件”菜单中选择了“关闭”命令,或是单击了“关闭”按钮。 |
vbFormCode | 1 | 代码中调用Unload语句。 |
vbAppWindows | 2 | 当前窗口操作环境对话正在结束。 |
vbAppTaskManager | 3 | “任务管理器”窗口正在关闭应用程序。 |
根据上述内容,假设有下面这个窗口:我们要禁用关闭按钮的话,让用户点了X啥也不发生,点了退出按钮才关闭:
也就是当QueryClose的CloseMode的参数值返回0时(也就是用户点了X关闭),把第一个参数Cancel 改为除了0之外的其他任何数让关闭事件取消
Option Explicit
Private Sub CommandButton2_Click()
'退出按钮的点击事件
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
'随便设置一个0以外的数字都可以
Cancel = 10086
End If
End Sub
如果为了防止用户按Ctrl+K停止运行宏,可以在前面加一句
Application.EnableCancelKey = xlDisabled
二、改变窗体大小
这里要说的是指动态调整大小哈,比如我想要实现这样的效果:
怎么办捏,代码如下,CommandButton3就是那个“更多”的按钮:
Private Sub CommandButton3_Click()
If flag Then
Me.CommandButton3.Caption = "更多▽"
Me.Height = 170
flag = 0
Else
Me.CommandButton3.Caption = "更多△"
Me.Height = 220
flag = 1
End If
End Sub
Private Sub UserForm_Initialize()
Me.CommandButton3.Caption = "更多▽"
Me.Height = 170
End Sub
三、使用缩放和滚动条
使用下面代码,就可以实现拖拽后对工作表的窗口放大缩小啦
Private Sub ScrollBar1_Change()
With ActiveWindow
.Zoom = Me.ScrollBar1.Value
Me.Label1.Caption = .Zoom & "%"
End With
End Sub
Private Sub UserForm_Initialize()
Me.Label1.Caption = ActiveWindow.Zoom & "%"
With Me.ScrollBar1
.Min = 10
.Max = 400
.SmallChange = 1
.LargeChange = 10
.Value = ActiveWindow.Zoom
End With
End Sub
因为列表框的内容着实有点多,这两天加班又很多,明天周五着重更新列表框的全部功能~