我正在使用大量鏈接的數據輸入表單在Excel中編寫解決方案。到他之間移動的形式序列中,用戶可以點擊「前一個」或者「下一個按鈕,當前窗體卸載,而新的裝載和打開。強制從內存中卸載表格
Sub NextForm(curForm As MSForms.UserForm, strFormName As String)
Dim intCurPos As Integer
Dim strNewForm As String
Dim newForm As Object
intCurPos = WorksheetFunction.Match(strFormName, Range("SYS.formlist"), 0)
If intCurPos = WorksheetFunction.CountA(Range("SYS.formlist")) Then
Debug.Print "No"
Else
Unload curForm
strNewForm = WorksheetFunction.Index(Range("SYS.formlist"), intCurPos + 1)
Set newForm = VBA.UserForms.Add(strNewForm)
newForm.Show
End Sub
代碼原樣允許新的形式是通過編輯範圍「SYS.formlist」隨時添加到序列中
我注意到的一個問題是,即使當前窗體被卸載後,它仍然保留在VBA.Userforms集合中。假設這是因爲此代碼已從該用戶表單調用。
是否有辦法強制從VBA中刪除該表單。用戶表單集合?發生的是如果用戶向前移動然後移回,表單的兩個副本出現在內存中,而且excel會拋出關於兩個正在打開的模式表單的異常。
乾杯, 尼克
這並不工作,但你激發了我的解決方案。問題是我將該表單作爲MSForms.UserForm類型傳遞給sub。這隻提供了表單屬性的子集,因此不會傳遞實際的表單對象,而是它的副本。 對於MSForms.Userform,.name屬性不存在,因此您的解決方案無法正常工作,但通過將變量類型更改爲Variant,我可以正確卸載該表單。所以謝謝你讓我走上正確的道路。 – 2010-10-27 03:00:47