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