It can be useful to create generic controls of similar properties. For example, if a project has 10 textboxes on different forms that need to accept numeric input only, instead of repeating the same code in every textbox, you can create a class called clsGeneric and declare the control using WithEvents. You can then trap the events in one place.
Create a collection of the clsGeneric class and keep adding controls to the collection. When you end the app, set the Collection object to Nothing. You can use control arrays, but if you’re using them across the forms, you don’t have to repeat the code:
' --- Save the following code in clsGeneric.clsOption ExplicitPublic WithEvents txtAny As TextBoxPrivate Sub txtAny_GotFocus() If Len(Trim$(txtAny)) > 0 Then txtAny.SelStart = 0 txtAny.SelLength = Len(txtAny) End IfEnd Sub' -- Save the following code in clsGenerics.clsOption ExplicitPrivate mColGenerics As New CollectionPublic Function Add(ByVal txtAny As TextBox, Optional _ ByVal Key As String = "") As clsGeneric Dim clsAny As New clsGeneric Set clsAny.txtAny = txtAny If Key = "" Then mColGenerics.Add clsAny Else mColGenerics.Add clsAny, Key End If Set Add = clsAny ' Return a reference to the new textboxEnd FunctionPublic Function Count() As Long Count = mColGenerics.CountEnd FunctionPublic Sub Delete(ByVal Index As Variant) mColGenerics.Remove IndexEnd SubPublic Function Item(ByVal Index As Variant) As clsGeneric Set Item = mColGenerics.Item(Index)End FunctionPublic Function NewEnum() As IUnknown Set NewEnum = mColGenerics.[_NewEnum]End Function' -- In any form or global module where you want to have ' -- this generic textboxesPrivate clsTexts As New clsGenerics' In form load add the controls to the collection like this. clsTexts.Add Text1 clsTexts.Add Text2 clsTexts.Add Text3' You can even declare clsTexts globally and keep adding ' controls in whatever forms needed.