分享

Excel VBA(03)各种事件

 天上飞鸡 2020-07-27

工作表事件

  • vba 事件的概念和 js 中的时间的概念是相似的,就是一定的操作会自动触发相应的代码逻辑
  • 工作表时间就是针对 worksheet 的,对工作表进行一定的操作可以触发我们自己编写的逻辑代码,而不用手动运行
  • 下面的图片中第一个下拉框一定要选中 worksheet ,这样我们就可以在后面的下拉框中选择相应的工作表事件,然后在自动生成的sub 中进行代码逻辑的编写
    在这里插入图片描述
  • 常用工作表事件总结
    在这里插入图片描述

工作簿事件

  • 工作簿事件基本也没啥可说的就是作用的对象不同而已
    在这里插入图片描述
    在这里插入图片描述

文件备份代码

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim wb As Workbook
    Set wb = ThisWorkbook
    wb.SaveCopyAs wb.Path & "\" & Format(Now(), "yyyymmddhhmmss") & ".xlsm"
End Sub

程序事件

  • 程序事件的话对所有的工作簿都是有效的
  • 一个工作簿中程序事件的代码一般是放在工作簿对象下,而不是工作表
  • 一个工作簿中编写相应的 excel 程序后,excel 打开的工作簿都会有相应的事件的响应

一、程序事件的编写

1、基本步骤

  • 备注的两条代码是程序事件编写的前提,很重要的
'这里的声明很重要
Public WithEvents app As Excel.Application

Private Sub app_NewWorkbook(ByVal Wb As Workbook)
    MsgBox "正在新建工作簿"
End Sub


Private Sub app_WorkbookNewSheet(ByVal Wb As Workbook, ByVal Sh As Object)
    MsgBox "你正在新建工作表" & Wb.Name & ":" & Sh.Name
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    MsgBox " cant close"
'    Cancel = True
End Sub

Private Sub Workbook_Open()
	'这里的赋值也是很关键的一步,一般就是在这个工作簿事件中进行赋值的
    Set app = Excel.Application
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    MsgBox "正在切换工作表"
End Sub
  • 然后就是在下拉框中选择我们定义的 app 进行程序事件代码编写
    在这里插入图片描述

2、常见的程序事件

在这里插入图片描述
在这里插入图片描述

图片来自博文:https://www.cnblogs.com/lidapengwww/p/12580225.html

3、注意事项

  • 事件引起的操作本身也可能再次引发事件,这样程序就会存于一个死循环,解决的方法就是在事件的响应代码最前面关闭事件(enableEvents= false),处理完成之后再开启事件

4、excel 中的表单控件和 AX 控件的区别

  • 表单控件使用和功能更加简单直接插入控件指定相应的宏就能使用了
  • AX 控件没有指定宏的选项,但是可以编写更强大的代码,支持事件的响应也更多
  • AX 控件中的单选按钮如果要实现分组互斥的话就需要将一组的groupname属性设置为一样的,默认按sheet进行分组也就是一个工作表只有一个单选按钮能被选中

二、加载宏的使用

  • 加载宏的意义是通用代码的重复使用,所以编写的时候尽量不要依赖具体的对象进行编写

1、保存加载宏

  • 如果想单独打开一个未编写程序事件程序的工作簿,还想让它能够使用其他文件中编写的程序事件的话,就需要进行以下的操作
    在这里插入图片描述

2、打开加载宏

在这里插入图片描述

3、添加快捷按钮

在这里插入图片描述

4、删除加载宏

  • 删除之前先要去掉加载宏的勾选
  • 去掉之后去保存加载宏的界面就可以看到以前保存的加载宏文件就可以删除了

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多