Video: String Theory Explained – What is The True Nature of Reality? 2024
VBA støtter ennå en annen type looping i Excel 2016: looping gjennom hvert objekt i en samling av objekter. En samling, som du kanskje vet, består av en rekke objekter av samme type. Eksempelvis har Excel en samling av alle åpne arbeidsbøker (samlingen i arbeidsbøker), og hver arbeidsbok har en samling regneark (regnearksamlingen).
Når du trenger å løse gjennom hvert objekt i en samling, bruk strukturen For hver-neste. Følgende eksempel løper gjennom hvert regneark i den aktive arbeidsboken, og sletter regnearket hvis det er tomt:
Sub DeleteEmptySheets () Dim WkSht som regnearkprogram. DisplayAlerts = False For Each WkSht I ActiveWorkbook. Regneark hvis regnearksfunksjon. CountA (WkSht. Cells) = 0 Deretter WkSht. Slett slutt hvis neste WkSht-applikasjon. DisplayAlerts = True End Sub
I dette eksemplet er variabelen WkSht en objektvariabel som representerer hvert regneark i arbeidsboken. Ingenting er spesielt med det variable navnet WkSht; Du kan bruke et variabelt navn som du liker.
Koden løper gjennom hvert regneark og bestemmer et tomt ark ved å telle nonblank-cellene. Hvis denne tellingen er null, er arket tomt, og det er slettet. Legg merke til at DisplayAlerts-innstillingen er slått av mens sløyfen gjør det. Uten dette erklærer Excel en advarsel hver gang et ark skal slettes.
Hvis alle regnearkene i arbeidsboken er tomme, får du en feil når Excel forsøker å slette det eneste arket. Normalt vil du skrive kode for å håndtere denne situasjonen.
Her er et annet for hvert neste eksempel. Denne prosedyren bruker en sløyfe for å skjule alle regneark i den aktive arbeidsboken, bortsett fra det aktive arket.
Sub HideSheets () Dim Sht som regneark for hver side i ActiveWorkbook. Regneark hvis sht. Navn ActiveSheet. Navn deretter Sht. Synlig = xlSheetHidden End Hvis Next Sht End Sub
Skjul-skjemaprosedyren kontrollerer arknavnet. Hvis det ikke er det samme som det aktive arkets navn, er arket skjult. Legg merke til at Synlig egenskap ikke er boolsk. Denne egenskapen kan faktisk ta på noen av tre verdiene, og Excel har tre innebygde konstanter. Hvis du er nysgjerrig på den tredje muligheten (xlVeryHidden), kan du sjekke hjelpesystemet.
Det som blir skjult, må til slutt bli unhidden, så her er en makro som fjerner alle regnearkene i den aktive arbeidsboken:
Sub UnhideSheets () Dim Sht som regneark for hver side i ActiveWorkbook. Regneark Sht.Synlig = xlSheetVisible Next Sht End Sub
Ikke overraskende, kan du opprette nestede for hver-neste løkker. CountBold-prosedyren løper gjennom hver celle i det brukte området på hvert regneark i hver åpen arbeidsbok og viser en telling av antall celler som er formatert som fet:
Sub CountBold () Dim WBook som arbeidsbok Dim WSheet som regneark Dim Cell Som Range Dim Cnt så lenge for hver WBook i arbeidsbøker for hver WSheet i WBook. Regneark for hver celle i WSheet. UsedRange If Cell. Font. Bold = True Da Cnt = Cnt + 1 Neste Celle Neste WSheet Neste WBook MsgBox Cnt & "Fetceller funnet" End Sub