
本文于2023年9月30日首发于本人同名公众号,更多文章案例请搜索关注!
内容提要
考场座位安排
用户窗体
类模块设置TextBox的Change事件
大家好,我是冷水泡茶,昨天我们分享了一个案例【Excel VBA【案例分享】考场座位安排:考场人数、每排人数均可调整】。我们列了3种输入参数的方式,其中第二条,使用用户窗体的方式,当时说估计当天不可能完成,遂改用第三种,在工作表中输入参数的方式。
虽说已完成当天发文的任务,但总感觉好象有什么事没有完成,总想着要是采用用户窗体的方式该怎么做呢?毕竟昨天做了一点,感觉就此放弃有点可惜,精力不是白花了嘛?
思来想去,终于还是决定试试。还好,终于做完了,分享给大家:

基本思路与实现过程
1、设置用户窗体UserForm1,添加必要的按钮。

2、考场(Label)、人数(TextBox)、每排人数(TextBox),通过代码动态添加。
3、我们增加一个类模块,用来设置“人数”这个文本框的Change事件。之所以要这样做,是因为文本框的数量是不确定的,也就是说考场的数量是不确定的。
我们可以直接添加若干个文本框,用来输入人数,但是,添加多少个合适呢?多了的话,用不到,空在那里也不好看,少了吧,那又不好扩展。所以,我们要采用动态添加的方式,需要一个就添加一个,这样感觉“高大上”了许多。
关于类模块我们前面分享过【Excel VBA 动态添加TextBox控件设置Change事件,这种方法很多人没想到!】、【Excel VBA 类模块实现动态添加的TextBox的Change事件完整代码】,今天我们就直接套用,当然,TextBox的Change事件代码是完全重写的。
4、窗体启动时,首先添加一组参数输入框:

5、如果需要添加考场的,我们点“增行”按钮:

只要有剩余人数,可以一直添加,前提是前面的考场都安排了人。这里窗体的大小随着考场的增加自动扩展。
这里关键是找到一个参照物,然后根据它的Top,Height的值来设置其他控件的Top值、窗体的高度等。
6、参数录入好以后,我们点确定进行考场安排。主要代码参照昨天的案例。把arrArng这个参数数组改为从用户窗体上的TextBox控件中取值。
7、完整代码放第二条吧,还是比较多的。
总结
1、动态添加控件,利用类模块来设置控件的事件。
2、用户窗体大小、控件位置动态调整。
~~~~~~End~~~~~~
喜欢就点个赞、点在看、留言评论、分享一下呗!感谢支持!