我有一个朋友在Excel中使用VBA项目。这个项目有很多表单弹出,并在电子表格被使用时执行各种功能。其中一些有复杂的Form_Initialize
方法依赖于其他已经存在的东西(当项目按预期使用时,这不是问题)。访问没有窗体实例的VBA用户窗体控件
我们试图在应用程序内的每个表单上打印出每个控件的名称。我们的问题是VBA.UserForms
集合只包含已经实例化的表单,我们不能在没有执行它们的Form_Initialize
方法的情况下实例化所有表单。
例如:
For Each f In VBA.UserForms
Debug.Print f.Name
Debug.Print "----------------------"
For Each c In f.Controls
Debug.Print c.Name
Next c
Next f
什么都不做,如果没有形式已经使用/加载。此代码:
For Each c in frmConfig.Controls
Debug.Print c.Name
Next c
首先执行frmConfig.Form_Initialize()
,然后通过形式印刷自己的名字上的控制回路。这个崩溃,因为在这个表单可用之前需要发生的事情还没有发生。
是否有可能获得窗体上的控件的名称没有实例化窗体(避免执行frmConfig.Form_Initialize()
)?
任何帮助非常感谢!
+ 1美丽的问题..迫使我思考了一段时间:) – 2013-04-04 11:39:58
你有没有想过具有第二(可选)构造函数初始化? – 2013-04-04 11:40:20
@mehow:是的,这已经被考虑过了,但是这是我们想要做的一次性工作,将ctor逻辑转换为不同的函数几乎与在设计视图中打开表单并记下所有控件名称一样耗时手动... – 2013-04-04 11:48:44