VBA mbështet edhe një lloj tjetër looping në Excel 2016: lakimi nëpër çdo objekt në një koleksion objektesh. Një koleksion, siç mund ta dini, përbëhet nga një numër objektesh të të njëjtit lloj. Për shembull, Excel ka një koleksion të të gjithë librave të hapur të punës (koleksioni i Librave të punës) dhe çdo libër pune ka një koleksion të fletëve të punës (koleksioni i fletëve të punës).
Kur ju duhet të kaloni nëpër çdo objekt në një koleksion, përdorni strukturën For Every-Next. Shembulli i mëposhtëm kalon nëpër secilën fletë pune në librin aktiv të punës dhe fshin fletën e punës nëse është bosh:
Nën DeleteEmptySheets()
Dim WkSht As Fletë pune
Aplikimi.DisplayAlerts = False
Për çdo WkSht Në ActiveWorkbook.Fletët e punës
Nëse WorksheetFunction.CountA(WkSht.Cells) = 0 Pastaj
WkSht.Fshi
Fundi Nëse
Tjetra WkSht
Aplikimi.DisplayAlerts = E vërtetë
Fundi Nën
Në këtë shembull, ndryshorja WkSht është një ndryshore objekti që përfaqëson çdo fletë pune në librin e punës. Asgjë nuk është e veçantë për emrin e ndryshores WkSht; ju mund të përdorni çdo emër variabli që ju pëlqen.
Kodi kalon nëpër secilën fletë pune dhe përcakton një fletë boshe duke numëruar qelizat jo bosh. Nëse ky numër është zero, fleta është bosh dhe fshihet. Vini re se cilësimi i DisplayAlerts është i fikur ndërsa cikli po bën gjënë e tij. Pa këtë deklaratë, Excel shfaq një paralajmërim sa herë që një fletë do të fshihet.
Nëse të gjitha fletët e punës në librin e punës janë bosh, ju merrni një gabim kur Excel përpiqet të fshijë fletën e vetme. Normalisht, ju do të shkruani kod për të trajtuar atë situatë.
Këtu është një shembull tjetër Për Çdo-Next. Kjo procedurë përdor një lak për të fshehur të gjitha fletët e punës në librin aktiv të punës përveç fletës aktive.
Nën HideSheets ()
Dim Sht As Fletë pune
Për Çdo Sht Në Libër Pune Aktive.Fletët e punës
Nëse Sht.Name <> ActiveSheet.Emri Pastaj
Sht.Dukshme = xlSheetHidden
Fundi Nëse
Tjetra Sht
Fundi Nën
Procedura HideSheets kontrollon emrin e fletës. Nëse nuk është i njëjtë me emrin e fletës aktive, fleta fshihet. Vini re se vetia Visible nuk është Boolean. Kjo veti në fakt mund të marrë një nga tre vlerat, dhe Excel ofron tre konstante të integruara. Nëse jeni kurioz për mundësinë e tretë (xlVeryHidden), kontrolloni sistemin e Ndihmës.
Ajo që fshihet duhet përfundimisht të mos fshihet, kështu që këtu është një makro që zbulon të gjitha fletët e punës në librin aktiv të punës:
Nën UnhideSheets ()
Dim Sht As Fletë pune
Për Çdo Sht Në Libër Pune Aktive.Fletët e punës
Sht.Dukshme = xlSheetVisible
Tjetra Sht
Fundi Nën
Nuk është për t'u habitur që ju mund të krijoni sythe të mbivendosur For Every-Next. Procedura CountBold kalon nëpër çdo qelizë në diapazonin e përdorur në secilën fletë pune në çdo libër pune të hapur dhe shfaq një numër të numrit të qelizave që janë formatuar me shkronja të zeza:
Nën CountBold()
Dim WBook As Workbook
Fletë e zbehtë si fletë pune
Qeliza e zbehtë si varg
Dim Cnt Për aq kohë sa
Për çdo WBook në Librat e Punës
Për çdo fletë pune në WBook.Fletët e punës
Për çdo qelizë në WSheet.UsedRange
Nëse Cell.Font.Bold = E vërtetë, atëherë Cnt = Cnt + 1
Qeliza tjetër
Fletë e ardhshme WW
WBook tjetër
MsgBox Cnt & "qelizat e theksuara u gjetën"
Fundi Nën