Skapa control-arrayer
Till skillnad mot MS Visual Basic 5.0/6.0 kan vi inte med automatik skapa control-arrayer i Excel, dvs vektorer med kontrollobjekt i formulär utan det måste ske med egenskapade procedurer.
I detta tips visas hur vi kan göra det och tipset lämpar sig väl om vi t ex har flera textrutor där vi vill ha kontroll av indata (se Kontroll av indata i textrutor), dvs genom att använda oss av control-arrayer minskar mängden kod avsevärt då vi kan skriva ett fåtal procedurer för flera formulärobjekt.Exemplet utgår från att det finns två knappobjekt i ett formulär och att vi har lagt till en klassmodul till VBA-projektet samt döpt denna modul till clsButtons.
'Följande placeras i klassmodulen clsButton.
'© 2004 Alla rättigheter XL-Dennis
Option Explicit
'WithEvents innebär att CmbGroup objekten kommer att reagera på
'händelsen Click för ett knappobjekt.
Public WithEvents CmbGroup As MSForms.CommandButton
Private Sub CmbGroup_Click()
'Ett meddelande om vilken knapp som användaren tryckte på visas.
MsgBox CmbGroup.Caption
End Sub
Följande placeras i formulärets klassmodul.
Option Explicit
'Deklarera en array som ett nytt klassobjekt av clsButtons.
Dim cmbButtons(1 To 2) As New clsButtons
Private Sub UserForm_Initialize()
Dim i As Long
'Tilldelar arrayen knapp-kontrollerna i formuläret.
For i = 1 To 2
Set cmbButtons(i).CmbGroup = Me.Controls("CommandButton" & i)
Next i
End Sub