VBA 判断文本框Change事件是否为代码触发的解决思路
编写代码时,在使用TextBox1_Change事件时,需要判断该事件是由代码填充的,还是输入的情况。
如果使用“KeyXXX”等事件,在Win10下,使用非微软的输入法时,经常出错。比如,输入“王力”时,需要在文本框中显示的是“王力”,但通过代码参数传递的内容却是“王li”。
使用“Change”事件,则不存在这样的情况。
问题是,有时,需要使用代码向文本框中输入信息,这时,不想激活“Change”事件。
在VBA帮助信息中,及在网上搜索过程中,均没有发现可以判断“引起事件”的原因的解决之法。
于是,有了下述方法实现:
1.在相关控件的“Change”事件是,先判断该控件是否可用,即Enable=True?
2.如果可用,则执行相关的代码。
3.在需要使用代码向文本框中输入内容时,先将相关的文本框设置为不可用(Enable=F)
4.用代码输入信息。
5.输入结束后,将相关控件的Enable设置为True。
如果您看到这个随笔,且有更好的方法实现上述功能,请留言!多谢!