/ / Loop through Controls i Excel VBA

Loop through Controls i Excel VBA

Med bara några rader av kod kan vi enkelt loop genom kontroller på en Excel VBA Userform. Användarformen vi ska skapa ser ut som följer:

Loop through Controls i Excel VBA

För att skapa detta användarformulär, utför följande steg.

1. Öppna Visual Basic Editor. Om Project Explorer inte är synligt klickar du på Visa, Project Explorer.

2. Klicka på Insert, Userform. Om Verktygslådan inte visas automatiskt klickar du på Visa, Verktygslåda. Din skärm bör ställas in enligt nedan.

Userform Screen Setup i Excel VBA

3. Lägg till etiketten, kryssrutorna (först överst, den andra under den första och så vidare) och kommandoknappen. När detta har slutförts ska resultatet överensstämma med bilden av användarformen som visats tidigare. Skapa till exempel en kryssrutekontroll genom att klicka på kryssrutan från Verktygslådan. Därefter kan du dra en kryssruta i Userform.

4. Du kan ändra namn och bildtexter på kontrollerna. Namnen används i Excel VBA-koden. Bildtext är de som visas på din skärm. Det är bra att ändra namnen på kontrollerna, men det är inte nödvändigt här eftersom vi bara har några kontroller i det här exemplet. För att ändra bildtexten i användarformat, etikett, kryssrutor och kommandoknapp, klicka på Visa, Egenskaper fönstret och klicka på varje kontroll.

5. För att visa användarformen, placera en kommandoknapp på ditt arbetsblad och lägg till följande kodrad:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Vi har nu skapat den första delen av Userform. Även om det ser snyggt ut, kommer ingenting att hända ännu när vi klickar på Rensa-knappen.

6. Öppna Visual Basic Editor.

7. Dubbelklicka på UserForm1 i Project Explorer.

8. Dubbelklicka på Rensa-knappen.

9. Lägg till följande kodlinjer:

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

Förklaring: Excel VBA loopar genom alla kontroller på Userform. Typnamn-funktionen används för att filtrera bort kryssrutan kontroller. Om en kryssruta kontroll avmarkerar Excel VBA kryssrutan. Kontr är slumpmässigt vald här, du kan använda något namn. Kom ihåg att hänvisa till detta namn i resten av koden.

Resultat när du klickar på Rensa-knappen:

Loop through Controls Resultat

Läs också: