我有一個朋友在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