2016-09-04 25 views
0

我在VBE中有12個文本框(每年1個月)有一個用戶窗體。還有一個額外的文本框應該顯示前12個框中每個框中的值的總和,當其他文本框中的值更改時更新和重新計算它自己。使用Class和WithEvents檢測文本框中的更改

有人幫助實施解決這個問題的解決方案非常感謝。

VBA: Detect changes in any textbox of the userform

但是我不確定要放什麼東西在事件部分下面的類:

我想實現的代碼是從後在服用。

注:這是我第一次嘗試使用類,所以我只是在學習。

+0

什麼?沒有提供任何有用的信息?上傳您的最新代碼嘗試,您的用戶 - 來自,我們可以幫助您的東西 –

+0

謝謝Shai Rado。我編輯了這篇文章並添加了更多信息。希望你可以提供這些額外的信息。 – Albert

回答

0

如果Class1是你的類模塊的名稱,如果你希望所有文本框值的總和是在TextBox13然後Userform1在您的用戶窗體的名稱,

Class1模塊插入

Private WithEvents txtbox As MSForms.TextBox 
Dim ctlr As Control 
Public sum As Integer 

Public Property Set TextBox(ByVal t As MSForms.TextBox) 
    Set txtbox = t 
End Property 

Private Sub txtbox_Change() 
    sum = 0 
    For Each ctlr In UserForm1.Controls 
     sum = sum + Val(ctlr) 
    Next ctlr 
    UserForm1.TextBox13 = sum - Val(UserForm1.TextBox13) 
End Sub 

,並在UserForm1模塊插入

Private myEventHandlers As Collection 

Private Sub UserForm_Initialize() 
    Dim txtbox As Class1 

    Set myEventHandlers = New Collection 

    Dim c As Control 
    For Each c In Me.Controls 
     If TypeName(c) = "TextBox" Then 
      Set txtbox = New Class1 

      Set txtbox.TextBox = c 

      myEventHandlers.Add txtbox 
     End If 
    Next c 
End Sub 
+0

謝謝@ArunThomas。我期望有一個事件過程檢測任何文本框中的更改,而不是像您的帖子所示的那樣檢測單獨的更改。我編輯了這篇文章並添加了一些相關信息。 – Albert

+0

看到我更新的答案,代碼測試和爲我工作 –

+0

完美的解決方案@ArunThomas。非常感激。 – Albert

相關問題