/ / Loop through Controls i Excel VBA

Loop through Controls i Excel VBA

Med bare noen få linjer med kode kan vi enkelt loop gjennom kontroller på en Excel VBA Userform. Brukerformen vi skal lage, ser ut som følger:

Loop through Controls i Excel VBA

For å opprette denne brukerformen, utfør følgende trinn.

1. Åpne Visual Basic Editor. Hvis Project Explorer ikke er synlig, klikker du på Vis, Project Explorer.

2. Klikk på Sett inn, Brukerform. Hvis Verktøykassen ikke vises automatisk, klikker du på Vis, Verktøykasse. Skjermen din bør settes opp som nedenfor.

Userform Screen Setup i Excel VBA

3. Legg til etiketten, merk av i boksene (først øverst, den andre under den første og så videre) og kommandoknappen. Når dette er fullført, bør resultatet være i tråd med bildet av brukerformen som ble vist tidligere. For eksempel, opprett en avmerkingsbokskontroll ved å klikke på Avkrysningsboks fra Verktøykassen. Deretter kan du trekke en avkrysningsboks på Brukerform.

4. Du kan endre navnene og bildeteksten til kontrollene. Navnene brukes i Excel VBA-koden. Undertekster er de som vises på skjermen. Det er god praksis å endre navnene på kontrollene, men det er ikke nødvendig her fordi vi bare har noen få kontroller i dette eksemplet. For å endre bildeteksten til brukerformat, etikett, avmerkingsbokser og kommandoknapp, klikk Vis, Egenskaper Vindu og klikk på hver kontroll.

5. For å vise brukerformatet, legg en kommandoknapp på regnearket og legg til følgende kodelinje:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Vi har nå opprettet den første delen av brukerformen. Selv om det ser pent ut, vil ingenting skje ennå når vi klikker på Clear-knappen.

6. Åpne Visual Basic Editor.

7. Dobbeltklikk på UserForm1 i Project Explorer.

8. Dobbeltklikk på Tøm-knappen.

9. Legg til følgende kodelinjer:

Private Sub CommandButton1_Click()

Dim contr As control

For Each contr In UserForm1.Controls
    If TypeName(contr) = "CheckBox" Then
        contr.Value = False
    End If
Next

End Sub

Forklaring: Excel VBA løkker gjennom alle kontroller på Userform. TypeName-funksjonen brukes til å filtrere ut avmerkingsboksene. Hvis en avkrysningsbokskontroll fjerner, fjerner Excel VBA avkrysningsruten. Kontr er tilfeldig valgt her, du kan bruke noe navn. Husk å henvise til dette navnet i resten av koden din.

Resultat når du klikker på tøm-knappen:

Loop through Controls Result

Les også: