如何使用具有一组控件的类

我尝试在下面的链接中调整解决scheme,使文本框的集合只允许数字。 我没有得到任何的错误,但是这个类不适用于文本框。

Excel VBA用户窗体 – 当有东西发生变化时执行Sub

类模块

Public WithEvents TextGroup As MSForms.TextBox Public Property Set Control(tb As MSForms.TextBox) Set TextGroup = tb End Property Private Sub TextGroup_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 48 To 57 Case Else KeyAscii = 0 End Select End Sub 

用户窗体

 Dim tbCollection As Collection Private Sub UserForm_Initialize() Dim obj As clsTextBox Dim ctrl As Control Set tbCollection = New Collection tbCollection.Add Me.tbAC tbCollection.Add Me.tbCR tbCollection.Add Me.tbHP For Each ctrl In tbCollection Set obj = New clsTextBox Set obj.Control = ctrl Next End Sub 

您需要将obj对象放在集合中,而不是控件本身

未经testing:

 Dim tbCollection As Collection Private Sub UserForm_Initialize() Dim obj As clsTextBox Dim arr Dim ctrl Set tbCollection = New Collection arr = Array(Me.tbAC, Me.tbCR, Me.tbHP) '<< edit: no Set For Each ctrl in arr Set obj = New clsTextBox Set obj.Control = ctrl tbCollection.Add obj Next End Sub