VBA 用户窗体的认识(二)

EXCEL VBA 专栏收录该内容
36 篇文章 19 订阅

今天继续讲用户窗体啦~

一、控件事件

昨天通过小例子,认识了按钮的点击事件(CommandButton1_Click),除此之外,还有部分控件常用事件。添加完控件后,双击一下,在上面下拉就可以查看到事件啦。

1.、UserForm的事件

① Initialize:初始化事件

② Activate:显示用户窗体时发生

③Deactivate:窗体非激活的时候发生,但是隐藏了不会发生

④QueryClose:卸载用户窗体之前发生

⑤Terminate:卸载用户窗体之后发生

2.、SpinButton的事件

这个按钮是数值调节按钮

① 鼠标可以触发的事件:

Enter、Change、SpinUp

② 键盘触发的事件

Enter、KeyUp(释放Tab时触发)、KeyDown、Change、SpinUp(SpinDown)

③ 通过代码触发

 

SpinButton就俩上下的箭头,怎么用呢?主要是和其他的控件配合一起使用啦,比如说放在文本框边上,控制文本框的数值大小:

这样写即可在点击上箭头的时候进行加1,下箭头的时候进行减1操作:

Private Sub SpinButton1_Change()
    Me.TextBox1.Text = Me.SpinButton1.Value
End Sub

但是这样还是粗糙了点,比如用户输入了100,再点加就是101,怎么实现呢?也很简单啦:

Private Sub TextBox1_Change()
    Me.SpinButton1.Value = Me.TextBox1.Text
End Sub

此处就不加判断用户输入内容是不是字符串啦~

二、自定义“工具箱”

1.右键有惊喜

对着工具箱上的“控件”二字点一下右键,会发现有上面这些内容。

对着工具栏点击右键,就会出现上面这些东西。

 

2.简单使用技巧

比如刚才提到的,一个SpinButton搭一个TextBox,如果经常需要用到,咱们只需要这样操作即可,如果遇到很复杂的控件组合,直接这样拖拽留作备用是不是很方便呢:

三、创建用户窗体模板

上面的自定义控件比较方便,如果还需要直接保存整个UserForm咋办呢?

点一下UserForm——点击VBE左上角的文件——点击导出文件。然后就导出了,下次要用的话同理

点击VBE左上角的文件——点击导入文件就可以啦

四、和昨天一样,来个简单的例子

1.做一个列表框,用户点击选择后,执行不同的过程或者程序:

① 先在窗体的初始化中加入列表框的选项

Private Sub UserForm_Initialize()
    With Me.ListBox1
        .AddItem "1号选择"
        .AddItem "2号选择"
        .AddItem "3号选择"
        .AddItem "4号选择"
        .AddItem "5号选择"
    End With
End Sub

② 点击确定后,执行不同的程序

Private Sub CommandButton1_Click()
    Dim str As String
    Select Case Me.ListBox1.ListIndex
        Case 0: sub1
        Case 1: sub2
        Case 2: sub3
        Case 3: sub4
        Case 4: sub5
    End Select
End Sub

③ 创建上面的sub1-sub5,用来执行就可以啦。

2.选择单元格区域

之前在学到 InputBox 时,也有输入单元格区域的方法:

str = Application.InputBox(prompt:="请输入单元格区域", Type:=8)

在用户窗体中,可以借助RefEdit来实现,比上面的稍微还好看些,框框边上有个小按钮,运行后点击小按钮,然后对着sheet上的单元格框就可以了。

需要注意的是,RefEdit返回的值是字符型,所以使用的话这样操作:

    Dim myRng As Range
    Set myRng = Range(Me.RefEdit1.Text)

3.搞个欢迎界面

比如打开工作表有个欢迎页面UserForm1,倒计时2秒后自动关闭,弹出工作框UserForm2:

① 在Workbook_Open事件中写上UserForm1.Show

Private Sub Workbook_Open()
    UserForm1.Show
End Sub

② 在欢迎界面UserForm1上写上:

Private Sub UserForm_Activate()
    If Application.Wait(Now + TimeValue("0:00:2")) Then
        killForm
    End If
End Sub

Private Sub killForm()
    Unload Me
    UserForm2.Show
End Sub

OK!

  • 1
    点赞
  • 0
    评论
  • 11
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

YeXueQing2020

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值