如何在VBA中引用动态创建的控件?

时间:2014-01-31 16:54:29

标签: excel vba dynamic reference controls

我已经在StackOverflow上找到了我需要的答案数月(谢谢大家!)但到目前为止我的搜索条件并没有找到我这次需要的结果...因此,我的第一篇文章在这里...

我有一个包含两个UserForms的Excel文件:

  • 第一个用于输入某些发票数据,然后以可以上传到我们的专有会计系统的格式导出该数据。
  • 第二个用于发布针对这些发票的付款数据,然后类似地以可以上传到我们的会计系统的格式导出数据。

必须在Userform_Initialize中动态创建第二个表单,因为所需的付款数量(以及创建的TextBox和Label控件的数量)会根据发票的大小而有所不同。我已经完成了创建第二个表单的代码并且运行良好,但是我想添加一些在用户更改这些动态创建的控件时触发的功能。

我使用给定控件的_Change()过程以其他形式完成此操作(例如,当我想在输入美元金额后移动到下一个框时,我会在其他地方使用_Change()到SetFocus。值在小数点后有两位数)。所以我的问题是:如何在表单初始化之前为尚未存在的控件建立_Change()样式的过程?有没有办法设置一个“全局”_Change()过程,我可以用它循环文本框并根据动态名称使用if / then / else语句?

任何提示都将不胜感激!

1 个答案:

答案 0 :(得分:0)

当我使用动态表单时,我喜欢创建对象数组来存储相关信息,以便我可以通过“名称”快速轻松地引用对象。