|
前言:本文为兰色幻想原创,转截请注明转自“Excel精英培训”(http://www.excelpx.com)
Excel对象提供的事件有时满足不了我们的需要,比如想实现填充颜色事件、行列删除事件、工作表禁止改名事件、单元格上的move事件。遗憾的是,这些事都没有提供。我们希望有一双眼睛可以时刻监视着用户操作EXCEL的动作。今天我给大家介绍一种虽然不太完美,但很实用的方法。它就是DO循环+DoEvents方法。
Do循环,可以实现没完没了循环操作。除非达到你设置的条件为止。
DoEvents函数,可以实现把当前程序的控制权转交给系统。说白了就是在运行当前程序的时候,还可以正常运行其他程序。
二者的结果可以实现什么效果呢?即通过DO循环时刻进行新旧判断。用 DoEvents转交控制权,即可以监控用户其他的操作。
下面是“禁止工作表名称”改动事件的示例
- Option Explicit
- Public newname As String ‘保存新的工作表名称
- Public oldname As String ’保存原来的工作表名称
- Dim mystop As Integer ‘开关
- Sub 工作簿禁止修改事件()
- oldname = ActiveSheet.Name ’工作表切换时初始化值
- newname = oldname ‘初始化值
- Do
- If newname <> oldname Then ’在循环中如果发现新旧工作表名称不一致
- MsgBox "工作表名称不能修改"
- ActiveSheet.Name = oldname ‘恢复工作表名称
- newname = oldname
- Else
- newname = ActiveSheet.Name
- End If
- VBA.DoEvents ‘转换控制权,可以进行其他程序运行或操作
- Loop Until mystop = 1 ’当mytop等于1时停止监控
- End Sub
- Sub 停止() '通过改变量的值停止监控
- mystop = 1
- End Sub
- Sub 启动()
- mystop = 0 ’初始化值
- 工作簿禁止修改事件
- End Sub
复制代码
示例文件
工作表禁止改名的事件.rar
(8.12 KB, 下载次数: 168)
|
|