Excel精英培训网

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

原创:用Do循环+VBA.DoEvents创建自定义事件

[复制链接]
发表于 2012-4-24 10:10 | 显示全部楼层 |阅读模式
     前言:本文为兰色幻想原创,转截请注明转自“Excel精英培训”(http://www.excelpx.com)  
     Excel对象提供的事件有时满足不了我们的需要,比如想实现填充颜色事件、行列删除事件、工作表禁止改名事件、单元格上的move事件。遗憾的是,这些事都没有提供。我们希望有一双眼睛可以时刻监视着用户操作EXCEL的动作。今天我给大家介绍一种虽然不太完美,但很实用的方法。它就是DO循环+DoEvents方法。
     Do循环,可以实现没完没了循环操作。除非达到你设置的条件为止。
     DoEvents函数,可以实现把当前程序的控制权转交给系统。说白了就是在运行当前程序的时候,还可以正常运行其他程序。
     二者的结果可以实现什么效果呢?即通过DO循环时刻进行新旧判断。用 DoEvents转交控制权,即可以监控用户其他的操作。
    下面是“禁止工作表名称”改动事件的示例

  1. Option Explicit
  2. Public newname As String ‘保存新的工作表名称
  3. Public oldname As String  ’保存原来的工作表名称
  4. Dim mystop As Integer ‘开关
  5. Sub 工作簿禁止修改事件()
  6. oldname = ActiveSheet.Name ’工作表切换时初始化值
  7. newname = oldname  ‘初始化值
  8. Do
  9.     If newname <> oldname Then ’在循环中如果发现新旧工作表名称不一致
  10.            MsgBox "工作表名称不能修改"
  11.            ActiveSheet.Name = oldname ‘恢复工作表名称
  12.            newname = oldname
  13.     Else
  14.             newname = ActiveSheet.Name  
  15.     End If
  16.          VBA.DoEvents ‘转换控制权,可以进行其他程序运行或操作
  17.      Loop Until mystop = 1 ’当mytop等于1时停止监控
  18. End Sub

  19. Sub 停止() '通过改变量的值停止监控
  20.      mystop = 1
  21. End Sub

  22. Sub 启动()
  23.        mystop = 0 ’初始化值
  24.        工作簿禁止修改事件
  25. End Sub

复制代码

     示例文件 工作表禁止改名的事件.rar (8.12 KB, 下载次数: 168)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-4-24 10:17 | 显示全部楼层
回复

使用道具 举报

发表于 2012-4-24 10:18 | 显示全部楼层
就这功能-不允许改工作表名?不懂具体功能
回复

使用道具 举报

发表于 2012-4-24 10:20 | 显示全部楼层
很值得学习的代码....
回复

使用道具 举报

发表于 2012-4-24 10:22 | 显示全部楼层
要好好学习一下!
回复

使用道具 举报

发表于 2012-4-24 10:23 | 显示全部楼层
真是好东东,好好学
回复

使用道具 举报

发表于 2012-4-24 10:30 | 显示全部楼层
认真学习         
回复

使用道具 举报

发表于 2012-5-7 12:52 | 显示全部楼层
不小心点了启动2次,EXCEL就挂了
回复

使用道具 举报

发表于 2014-8-27 17:59 | 显示全部楼层
学习学习
回复

使用道具 举报

发表于 2014-8-27 17:59 | 显示全部楼层
校长辛苦了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-30 13:59 , Processed in 0.582301 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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