2013-02-07 40 views
0

我的Excel書中包含名爲myUserForm的用戶表單。 我想打開它,用數據填充並以編程方式按下按鈕。 我輸入數據的文本框有BeforeUpdate和AfterUpdate處理程序。excel vba,用戶表單和事件:可以接受事件的非模態用戶表單

如果我打電話Call UserForm2.Show,這些事件將會運行,但我似乎無法卸載窗體(呼叫Call UserForm2.Show暫停執行excel marco直到我手動關閉它)。

如果我打電話不要Call UserForm2.Show(或在無模式下調用它),數據填充很好,但Excel BeforeUpdate和AfterUpdate處理程序將被忽略。

示例代碼:

在模塊:

Public Function s(ByVal newValue As String) As String 
    'Call UserForm2.Show 
    UserForm2.TextBox1.Value = newValue 
    UserForm2.Repaint 
    s = UserForm2.TextBox1.Value 
    UserForm2.Button1_Click 
End Function 


Public Function s2() As String 
    s2 = s("newValue") 
End Function 

在用戶形式:

Public Sub Button1_Click() 
    Unload Me 
End Sub 

Public Sub TextBox1_AfterUpdate() 
    TextBox1.Value = TextBox1.Value + "y" 
End Sub 

回答

0

你想打開一個表格填充數據,然後在沒有用戶交互關閉它?爲什麼麻煩打開窗體。

除此之外,只需將卸載代碼移到表單加載事件的末尾或表單激活事件即可......雖然這可能不起作用,但值得一試,對不起,無法在PC上測試。