首发于 VBA学习笔记(完结)
VBA学习笔记54:窗体事件程序

VBA学习笔记54:窗体事件程序

学习资源:《Excel VBA从入门到进阶》第54集 by兰色幻想


一、概述

窗体事件,是作用于窗体上的动作引发的程序的自动运行。

1. 窗体加载事件:当窗体出现之前运行的程序

作用:可在窗体出现前先运行一些读取数据放到窗体中、出现某些提示等。

2. 窗体关闭前的事件

Cancel 值为>0的值时禁止关闭动作的发生。通常因为不希望用户使用右上角的“X”、或者使用“控制”菜单中的“关闭”命令,所以才使用这句代码。希望用户去完成某些条件才关闭窗体。

CloseMode 关闭的模式:

后两种仅用于Visual Basic 5.0

3. 窗体关闭后的事件(较少用)

4. 窗体活动和非活动事件

当对象成为活动窗口时, Activate事件发生。当对象不再是活动窗口时,停用事件发生。

当切换到其他的程序时,窗体就会接收到一个Deactivate事件:当窗体重新获得输入焦点的时候,就会接收到一个Activate事件。如果通过设置窗体的Visible属性为False或者使用窗体的Hide方法哲时将窗体变为不可见,同样的事件次序就会发生。(举例见帮助文档——下方链接,似乎使用也不多,就不举例了)

5. 窗体的单击事件

上面第二点,我们使用了窗体关闭前的事件,禁止用户使用用户使用右上角的“X”关闭窗体,这里我们使用点击事件来关闭窗体,只要点击窗体就关闭窗体。

Private Sub UserForm_Click()
 Unload Me '退出窗体
End Sub

6. 键盘事件

① 按下键时KeyDown(最常用)

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 65 And Shift = 2 Then   '判断是否按下ctrl+a组合键,并返回提示。
  MsgBox "你按下了ctrl+a组合键"
End If
End Sub
  • keycode是指按下键的键标号,一键一标号。(太多了,使用时可百度,不在此列出,或通过事件程序,msgbox keycode,按下按键就反馈它的keycode)
  • 这里的shift是泛指的名称,包括三种按键:按Shift返回1,按ctrl返回2,Atl返回4。

② 按下键后起来时KeyUp

Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 MsgBox "KeyCode:" & KeyCode
End Sub

③按下键时KeyPress

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   MsgBox "KeyAscii:" & KeyAscii
End Sub
  • KeyAscii是键盘输入后传递给程序的ASCII码,受大小字写的影响,一个键也会有两个码,且它无法监控方向键。

键盘事件的顺序是keydown→keypress→keyup,三者主要的区别是触发程序发生的时间有所不同。

7. 鼠标事件

Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   If Button = 1 And Shift = 3 Then
     MsgBox "你在坐标为x:" & X & "  Y:" & Y & " 的位置点击了鼠标左键,并且按下了ctrl+shift组合键"
   End If
End Sub
  • 鼠标button 值按左键返回1,按右键返回2,按中键返回4
  • shift 按Shift返回1,按ctrl返回2,shift+ctrl返回3,Atl按回4
  • X,Y 是指点击的位置,坐标值。

同样,也有鼠标左键按下起来时MouseUp。

Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

例:① 鼠标在窗体上移动,如果按下shift键的同时,鼠标移到窗体上,按钮变回原样。

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) '鼠标移动时
   If Shift = 1 Then
      Me.CommandButton1.BackColor = &H8000000F
   End If
End Sub

② 但按住shift键鼠标移动到按钮,按钮就会变红色。

 Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 If Shift = 1 Then
  CommandButton1.BackColor = &H8080FF
 End If
End Sub
按住shift键移动鼠标,移动到按钮上变色,离开按钮就恢复原样。

民权资讯网seo网络外包周易取单位名称优惠券设计网站d周公解梦周六股票可以交易吗设计网站设计学习免费用生辰八字算寿命周易命理预测免费周易批八字看名字未知之谜十四画康熙字典起名用字双胎男小孩起名大全网站交易平台建设教学关于平面设计网站premiere官方下载房地产起名字推荐株洲专业建设网站公司起孩子名字起名大全男孩取名网站设计公司官网澳门大学怎么样刘洁艺术签名鼠孩子起名大全酒吧设计网站陈伟霆演的电视剧周公解梦得到钱商丘58鬼故事公交车11路淮北算命的地方解梦周公解梦大全集少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

民权资讯网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化