分享

跟烟花入门VBA之37:Workbook对象(五)

 fzchenwl 2015-04-01

 Workbook对象的属性,方法基本告一段落,今天讲讲Workbook对象的事件,这也是我们讲的第一个有事件的对象。

  一、事件代码的写入位置就有规定的。

  工作簿事件的代码只能写在该VBA工程的Thisworkbook对象的代码窗口中。

  

2013-12-1 23:56 上传

下载附件 (37.17 KB)

  二、事件代码的过程已经有定义好了,不需要手工再录入。

  在代码窗口的顶端有两个下拉列表

  左边的是对象列表,下拉后列表中有通用Workbook,选Workbook

  右边的是过程/事件列表

  当在左边的对象列表中选择Workbook对象后,点击右边的下拉列表后显示的全是Workbook的事件过程。

  在事件列表中选择任意一个事件后,过程声明就会添加在代码窗口中了,过程名称,过程参数(有的话)全都定义好了。

  

2013-12-1 23:56 上传

下载附件 (45.27 KB)

  我们接下来逐个事件进行分析


  Workbook.Activate 事件

  激活工作簿时发生此事件。

  注意:新建窗口时不发生此事件。

  切换两个显示同一工作簿的窗口时,将发生 WindowActivate 事件,但不发生工作簿的 Activate 事件。

  示例:

  Private Sub Workbook_Activate()

   MsgBox '工作簿 ' & ThisWorkbook.Name & '激活了'

  End Sub

  ‘新建一个工作簿,然后再切换回来,就可以看到一个消息框。


  Workbook.Deactivate 事件

  工作簿被停用时发生此事件。

  当一个工作簿从活动工作簿成为非活动工作簿时事件触发。

  说通俗点,就是激活另外一个工作簿对象时,原来的工作簿就会触发Deactivate事件

  Private Sub Workbook_Deactivate()

   Thisworkbook.save

  End Sub

  ’工作簿对象停用时保存,如果是新建的文件的话,这里推荐用saveas方法

  至于如何检测到是新建的工作簿,之前讲过的path属性就能实现。

  在Thisworkbook对象中,可以直接用me代码Thisworkbook

  面的thisworkbook.save写成me.save也行。


  
Workbook.BeforeClose 事件

  在关闭工作簿之前,先产生此事件。
  如果该工作簿已经更改过,则本事件在询问用户是否保存更改之前产生。

  语法:BeforeClose(Cancel)

  Cancel参数是必须的,当事件发生时False,如果将此参数设置为True,则停止关闭操作。

  Private Sub Workbook_BeforeClose(Cancel asBoolean)

   If Me.Saved = False Then Me.Save

  End Sub

  ‘如果工作簿没有保存,则执行save方法保存工作簿


  Workbook.BeforeSave 事件

  保存工作簿之前发生此事件。

  语法:BeforeSave(SaveAsUI, Cancel)

  SaveAsUI 必选 Boolean 如果将显示“另存为”对话框,则为 True

  Cancel 必选 Boolean 当事件发生时为 False。如果该事件过程将此参数设置为 True,则该过程完成后将不保存工作簿。

  示例:

  Private Sub Workbook_BeforeSave(ByValSaveAsUI As Boolean, _

   Cancel as Boolean)

      a= MsgBox('是否保存工作簿?', vbYesNo)

   If a = vbNo Then Cancel = True

  End Sub

  ‘在保存工作簿之前询问用户是否保存。


  Workbook.BeforePrint 事件

  在打印指定工作簿(或者其中的任何内容)之前,发生此事件。

  语法:BeforePrint(Cancel)

  范例:

  Private Sub Workbook_BeforePrint(Cancel AsBoolean)

   If InputBox(prompt:='请输入打印密码:') <> '123456' Then

    Cancel = True

    MsgBox '密码不对,结束打印!', vbCritical + vbOKOnly

    Exit Sub

   End If

   MsgBox '点击 确认,打印开始'

  End Sub

  '打印前先进行密码校验,密码正确后方能打印

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多