2009-05-20 47 views
0

在我創建了一個簡單的用戶窗體我的Outlook VBA宏 - 我可以使窗體使用此代碼可見:用戶窗體在Outlook中沒有響應(無法關閉,點擊按鈕不會觸發事件)

 
VBA.UserForms.Add (PasswordForm.Name) 
PasswordForm.Show (Modal) 

...和UserForm_Initialize()事實上確實發生了火災。但點擊表單上的「提交」按鈕什麼也不做 - 事件(通過雙擊設計器中的按鈕自動創建)不會觸發。此外,用戶窗體在窗口右上角有一個紅色的X,但點擊這個窗體不會做任何事情(表單不會關閉或退出)。

任何想法我可能做錯了什麼?我對VBA很陌生。

+0

您是否嘗試過在「UserForm_Initialize()」中設置斷點並逐句通過調試器中的代碼?順便說一句,你可以刪除「VBA.UserForms.Add」,它是完全多餘的。 – Tomalak 2009-05-20 05:34:09

+0

是的,這就是我確認UserForm_Initialize()事件確實觸發的方式。問題是SubmitButton_Click() - 那裏的斷點從來沒有被擊中。 – MGOwen 2009-05-21 00:15:47

+0

並感謝有關VBA的提示.UserForms.Add – MGOwen 2009-05-21 01:01:48

回答

0

OK,解決了:我改變了:

PasswordForm.Show (Modal) 

PasswordForm.Show 

,它現在的作品,但我不得不改變它的工作原理有點方式以適應事實表單將不再是模態(我認爲無論如何這是更好的解決方案,模式可能會讓用戶惱火,只是我必須檢查他們是否提交了表單等)。

謝謝大家的建議。

1

有時VBA中的控件與其事件分離。這可能是因爲您重命名了控件或因爲您意外重命名了事件過程(儘管由於其他原因很少發生)。另外,如果您在運行表單之前忘記「編譯」,則可能在導致問題的表單上出現錯誤。

最簡單的雙重檢查方法是在設計視圖中打開窗體,選擇有問題的按鈕並按F7。如果創建了一個新程序,請複製粘貼代碼,然後將舊代碼複製/粘貼到其中,然後刪除舊代碼。

完成之後,進入「調試」菜單並單擊「編譯」。如果檢測到任何錯誤,請糾正它們,再次單擊「編譯」。重複,直到它編譯沒有投訴。然後嘗試再次運行您的表單。

0

在辦公室03/07,如果您想確保它顯示模式,請將窗體的.ShowModal行爲設置爲「True」。我在試圖在表演活動期間製作表格模式時遇到了問題。

相關問題