Excel中如何使用VBA的选择语句Select但却不触发SelectionChange事件

■问题背景:我在Excel中做了一个类似选择题一样的东西,选项直接放在单元格里,点击时用Target.row、Target.column判断点击了哪个选项.在点击了一个选项后,需要把当前单元格统一设置为一个其他的格(比如A1),目的在于防止两次选择统一选项的问题(比如两次都选A,若不移到其他单元格,则无法触发SelectionChange事件).如:
SelectionChange
If Target.row=4 and Target.column=4 then '命中选项A

***
Range("A1").Select

Endif

If Target.row=5 and Target.column=4 then '命中选项B
***

***

Endsub
■问题描述:在SelectionChange事件中,可能有一些执行时间较长的语句.在使用鼠标选中单元格时,希望该事件是正常触发的.但用VBA转移当前单元格,如Range("A1").Select时,希望不要将其列入SelectionChange事件.

【那么,如何使用Select语句却不触发SelectionChange事件,或者有其他方法,能够解决两次选择同一选项的问题】

在代码最开始增加一句:
Application.EnableEvents = False

代码结束前增加
Application.EnableEvents = True

关于此处用到的EnableEvents的相关知识:
Application.EnableEvents=False
操作代码
Application.EnableEvents=True
这样可以屏蔽事件程序的暂时运行,以达到不会反复触发事件程序,造成死循环
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-08

你可以使用 双击 触发事件函数

步骤

    双击触发函数

    函数中取消双击效果

     

    函数中执行需要的函数功能

第2个回答  2014-02-08
Application.EnableEvents = False

..........
[A1].Select

Application.EnableEvents = True

本回答被提问者采纳