我在VBE中有一个带有12个文本框的用户窗体(一年中每个月有1个)。还有一个额外的文本框,可以显示前12个框中每个框中的值的总和,随着其他文本框中的值的变化,更新和重新计算自己。
非常感谢帮助实施此问题的解决方案。
我试图实现的代码取自以下帖子:
VBA: Detect changes in any textbox of the userform
但是我不确定在课堂下面的活动部分放什么。
注意:这是我第一次尝试使用课程,所以我只是在学习。
答案 0 :(得分:1)
如果Class1
是您的类模块的名称,Userform1
您的用户表单的名称,如果您希望所有文本框值的总和在TextBox13
,那么,
在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