VBA podpira še eno vrsto zanke v Excelu 2016: zanke skozi vsak predmet v zbirki predmetov. Kot morda veste, je zbirka sestavljena iz več predmetov iste vrste. Excel ima na primer zbirko vseh odprtih delovnih zvezkov (zbirka Delovni zvezki) in vsak delovni zvezek ima zbirko delovnih listov (zbirka Delovni listi).
Ko se morate pomakniti skozi vsak predmet v zbirki, uporabite strukturo Za vsako naslednjo. Naslednji primer se vrti po vsakem delovnem listu v aktivnem delovnem zvezku in izbriše delovni list, če je prazen:
Sub DeleteEmptySheets()
Dim WkSht kot delovni list
Application.DisplayAlerts = False
Za vsak WkSht v ActiveWorkbook.Worksheets
Če je WorksheetFunction.CountA(WkSht.Cells) = 0 Potem
WkSht.Delete
Konec Če
Naslednji WkSht
Application.DisplayAlerts = True
Končni sub
V tem primeru je spremenljivka WkSht spremenljivka objekta, ki predstavlja vsak delovni list v delovnem zvezku. Nič ni posebnega glede imena spremenljivke WkSht; lahko uporabite katero koli ime spremenljivke, ki vam je všeč.
Koda se vrti skozi vsak delovni list in s štetjem nepraznih celic določi prazen list. Če je to število nič, je list prazen in izbrisan. Upoštevajte, da je nastavitev DisplayAlerts izklopljena, medtem ko zanka opravlja svoje. Brez te izjave Excel prikaže opozorilo vsakič, ko bo list kmalu izbrisan.
Če so vsi delovni listi v delovnem zvezku prazni, se prikaže napaka, ko Excel poskuša izbrisati edini list. Običajno bi napisali kodo za reševanje te situacije.
Tukaj je še en primer za vsako naslednjo. Ta postopek uporablja zanko za skrivanje vseh delovnih listov v aktivnem delovnem zvezku, razen aktivnega lista.
Sub HideSheets()
Dim Sht kot delovni list
Za vsak Sht v ActiveWorkbook.Delovni listi
Če Sht.Name <> ActiveSheet.Name Then
Sht.Visible = xlSheetHidden
Konec Če
Naslednji Sht
Končni sub
Postopek HideSheets preveri ime lista. Če ni enako imenu aktivnega lista, je list skrit. Upoštevajte, da lastnost Visible ni logična. Ta lastnost lahko dejansko prevzame katero koli od treh vrednosti, Excel pa ponuja tri vgrajene konstante. Če vas zanima tretja možnost (xlVeryHidden), preverite sistem pomoči.
Kar se skrije, se mora sčasoma razkriti, zato je tu makro, ki razkrije vse delovne liste v aktivnem delovnem zvezku:
Podrazkrij liste()
Dim Sht kot delovni list
Za vsak Sht v ActiveWorkbook.Delovni listi
Sht.Visible = xlSheetVisible
Naslednji Sht
Končni sub
Ni presenetljivo, da lahko ustvarite ugnezdene zanke For Every-Next. Postopek CountBold se vrti skozi vsako celico v uporabljenem obsegu na vsakem delovnem listu v vsakem odprtem delovnem zvezku in prikaže število celic, ki so oblikovane krepko:
Sub CountBold ()
Dim WBook kot delovni zvezek
Zatemni WSheet kot delovni list
Dim Cell As Range
Dim Cnt As Long
Za vsako delovno knjigo v delovnih zvezkih
Za vsak WSheet v WBook.Worksheets
Za vsako celico v WSheet.UsedRange
Če je Cell.Font.Bold = True, potem je Cnt = Cnt + 1
Naslednja celica
Naslednji WSheet
Naslednja knjiga
MsgBox Cnt & “ najdene krepke celice”
Končni sub