Vilken kryssruta har ändrat status?


I exemplet demonstreras hur vi kan arbeta med en objektsamling (här en samling av kryssrytor) i ett formulär där vi fångar upp ändringar i objektens status.

I MS Visual Basic / Visual Basic.Net kan vi skapa objektmatriser (s k controls-array) direkt i koden vilket inte är möjligt i MS Excel.

I exemplet används därför en klassmodul för att skapa en objektklass bestående av kryssrutor (s k Checkboxes). 
 

Följande procedurer skapas i formulärets modul:

Option Explicit

'Här skapas en ny instans av objektklassen och deklareras som en matris.

Private cBox(1 To 3) As New clsBox

 
Private
Sub CommandButton1_Click()

   Unload Me

End Sub


Private
Sub UserForm_Initialize()

   Dim i As Long

   'Här läggs varje önskad objekt till den skapade objektklassen.

   For i = 1 To 3

      Set cBox(i).cBox = Me.Controls("Checkbox" & i)

   Next i

 End Sub

 

Följande procedurer skapas i en klassmodul och klassmodulen namnges till ClsBox:

Option Explicit

 Public WithEvents cBox As MSForms.CheckBox

 
Private
Sub cBox_Change()

   MsgBox cBox.Name & " har ändrat status till : " & cBox.Value

End Sub

 

Private Sub Class_Initialize()

End Sub


Private
Sub Class_Terminate()

End Sub