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