VBA 判斷文本框Change事件是否為代碼觸發的解決思路


編寫代碼時,在使用TextBox1_Change事件時,需要判斷該事件是由代碼填充的,還是輸入的情況。

如果使用“KeyXXX”等事件,在Win10下,使用非微軟的輸入法時,經常出錯。比如,輸入“王力”時,需要在文本框中顯示的是“王力”,但通過代碼參數傳遞的內容卻是“王li”。

使用“Change”事件,則不存在這樣的情況。

問題是,有時,需要使用代碼向文本框中輸入信息,這時,不想激活“Change”事件。

在VBA幫助信息中,及在網上搜索過程中,均沒有發現可以判斷“引起事件”的原因的解決之法。

於是,有了下述方法實現:

1.在相關控件的“Change”事件是,先判斷該控件是否可用,即Enable=True?

2.如果可用,則執行相關的代碼。

3.在需要使用代碼向文本框中輸入內容時,先將相關的文本框設置為不可用(Enable=F)

4.用代碼輸入信息。

5.輸入結束后,將相關控件的Enable設置為True。

 

如果您看到這個隨筆,且有更好的方法實現上述功能,請留言!多謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM