RSS

Gennemløb af kontrolelementer på en formular

Når man programmerer i Excel VBA er formularer (Userforms) et nyttigt værktøj til at få input fra brugeren. Når brugeren klikker OK for at lukke formularen, er det som regel nødvendigt at kontrollere alle input. Hvis der er mange kontrolelementer på formularen, kan det være et stort arbejde, og mange bruger at kontrollere alle kontrolelementerne ét for ét.

Ofte er det meget nemmere at gennemløbe samtlige kontrolelementer med en løkke og så tage tilpasset aktion, alt efter typen af kontrolelement og brugerens input.

Det kan man gøre ved at benytte sig af, at alle kontrolelementer er medlemmer af formularens "kontrolsamling". Når man bruger en løkke til gennemløb, kan det være vigtigt at have styr på rækkefølgen, og den styres af rækkefølgen, hvormed man indsatte sine kontrolelementer.

"Tabindex" bestemmer rækkefølgen for, hvilket kontrolelement der får fokus, når man trykker på tabulatortasten. "Tabindex" kan ses og ændres i det enkelte kontrolelements properties vindue.

Her følger et eksempel på gennemløb, som udløses, når brugeren klikker på OK-knappen. Et regneark med flere konkrete eksempler på gennemløb af kontrolelementer, kan downloades her. Regnearket demonstrerer også, hvordan man kan skelne mellem talværdier og tekst, som er indsat i tekstbokse.


Private Sub CommandButton1_Click()

Dim cCtl As Control

On Error GoTo ErrorHandle

'Formularens kontrolelementer gennemløbes.
'Rækkefølgen bestemmes af kontrolelementernes "Tabindex"
For Each cCtl In Me.Controls
   'Hvis det er en checkbox
   If TypeOf cCtl Is MSForms.CheckBox Then
      If cCtl.Value = True Then
         'Aktion
      End If
   End If
   'Hvis det er en tekstbox
   If TypeOf cCtl Is MSForms.TextBox Then
      'Aktion
   End If
   'Hvis det er en optionbutton
   If TypeOf cCtl Is MSForms.OptionButton Then
      'Aktion
   End If
   'Osv.
Next

Exit Sub
ErrorHandle:
'Fejlbehandling, f.eks.:
MsgBox Err.Description
End Sub

Relateret