我有一个朋友在 Excel 中使用 VBA 项目。这个项目有很多表单,在使用电子表格时会弹出并执行各种功能。其中一些具有复杂的Form_Initialize
方法,这些方法依赖于已经存在的其他事物(当项目按预期使用时,这不是问题)。
我们正在尝试打印出应用程序中每个表单上每个控件的名称。我们的问题是该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()
)?
非常感谢任何帮助!