
本文于2023年7月9日首发于本人同名其他平台,更多文章案例请搜索关注!
☆本期内容概要☆
VBA 动态添加控件
类模块设置TextBox控件Change事件
大家好,我是冷水泡茶,最近我在做“电子发票登记管理系统(Access版)”,我是将读取的发票信息显示到ListView中,但由于读取的信息不是100%准确,所以需要对Listview的Item进行修改。
那么,问题来了,Listview不支持直接修改,在我们前面分享过的收费管理系统中,我们采用的是Inkedit控件+API函数,但代码过于复杂,而且还有一点点兼容性问题。
所在,我们采用一个简单的方法,点击一条Listitem记录,将其内容显示到Textbox中,修改TextBox,再更新到Listview。
当然,修改Listview不是今天的重点,我们以后再聊。
在修改TextBox内容时,有三个项目是有关联的,“金额”、“税额”、“价税合计”。“金额”、“税额”变了,“价税合计”必须跟着自动改变。
要实现这样的功能,很多朋友是不是觉得很简单,TextBox有Change事件嘛。但问题是,我这些TextBox控件,是使用代码动态添加的,跟ListView的表头是一致的,没办法直接设置它们的Change事件(我试了好多办法都没有成功)。我也不是没有想过直接添加对应ListView表头的TextBox控件,但由于字段太多,位置设置也比较麻烦,并且如果后期字段发生改变代码也得修改,终于还是没有这样做。
于是,我想起来我们分享过的日期控件中使用类模块的方法,觉得应该可行,接下来也少不得咨询咨询AI。
经过一番修改测试,通过“类模块”完美实现我想要的功能。我觉得也许对大家有用,就把这一块功能单独抽出来分享给大家:

这里有几点说明:
1、输入金额、税额,价税合计自动改变。
2、价税合计不能修改,有两层含义:
(1)当输入完税额,回车后会跳到价税合计,这时,它是可编辑的,但你会发现不管你输入什么,它的数额总是等于金额+税额,看上去是不变的,实际上是有代码在控件它变了以后,再重新计算等于金额+税额。
(2)当我们用鼠标点击价税合计的时候,发现它是不可编辑的,当然,它也只是“看上去”不可编辑,实际上我们点击的不是TextBox控件,而是一个覆盖其上的透明标签,防止TextBox被修改。
完整代码详见下篇文章。
好,今天就到这吧。欢迎点赞、留言、分享,谢谢大家,我们下期再会。