Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4306|回复: 6

[分享] 【烟花原创】VBA零基础之第38篇 Workbook对象(五)

[复制链接]
发表于 2013-12-2 00:02 | 显示全部楼层 |阅读模式
本帖最后由 hwc2ycy 于 2013-12-4 21:12 编辑

  Workbook对象的属性,方法基本告一段落,今天讲讲Workbook对象的事件,这也是我们讲的第一个有事件的对象。
  一、事件代码的写入位置就有规定的。
  工作簿事件的代码只能写在该VBA工程的Thisworkbook对象的代码窗口中。
   38-1.jpg
  二、事件代码的过程已经有定义好了,不需要手工再录入。
  在代码窗口的顶端有两个下拉列表
  左边的是对象列表,下拉后列表中有通用Workbook,选Workbook
  右边的是过程/事件列表
  当在左边的对象列表中选择Workbook对象后,点击右边的下拉列表后显示的全是Workbook的事件过程。
  在事件列表中选择任意一个事件后,过程声明就会添加在代码窗口中了,过程名称,过程参数(有的话)全都定义好了。
   38-2.jpg
  我们接下来逐个事件进行分析

  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
  '打印前先进行密码校验,密码正确后方能打印


评分

参与人数 1 +15 收起 理由
云影 + 15 很给力!

查看全部评分

发表于 2013-12-15 08:53 | 显示全部楼层
回复

使用道具 举报

发表于 2013-12-30 10:45 | 显示全部楼层
回复

使用道具 举报

发表于 2014-4-20 16:14 | 显示全部楼层
{:1112:}
回复

使用道具 举报

发表于 2014-6-16 15:17 | 显示全部楼层
{:35:}
回复

使用道具 举报

发表于 2014-6-18 11:15 | 显示全部楼层
回复

使用道具 举报

发表于 2014-6-18 22:46 | 显示全部楼层
开始接触工作簿事件,谢谢分享,标记,三十八
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 18:16 , Processed in 0.265016 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表