VBA atbalsta vēl vienu cilpas veidu programmā Excel 2016: cilpas caur katru objektu objektu kolekcijā. Kolekcija, kā jūs, iespējams, zināt, sastāv no vairākiem viena veida objektiem. Piemēram, programmā Excel ir visu atvērto darbgrāmatu kolekcija (kolekcija Darbgrāmatas), un katrai darbgrāmatai ir darblapu kolekcija (darblapu kolekcija).
Ja jums ir jāpārskata katrs kolekcijas objekts, izmantojiet struktūru Katram nākamajam. Tālāk sniegtajā piemērā tiek veikta cilpa caur katru darblapu aktīvajā darbgrāmatā un dzēš darblapu, ja tā ir tukša:
Sub DeleteEmptySheets()
Dim WkSht kā darblapa
Application.DisplayAlerts = False
Katrai darba lapai ActiveWorkbook.Worksheets
Ja WorksheetFunction.CountA(WkSht.Cells) = 0 Tad
WkSht.Delete
Beigas Ja
Nākamais WkSht
Application.DisplayAlerts = True
Beigu apakš
Šajā piemērā mainīgais WkSht ir objekta mainīgais, kas apzīmē katru darbgrāmatas darblapu. Mainīgā nosaukumā WkSht nekas nav īpašs; varat izmantot jebkuru mainīgā nosaukumu, kas jums patīk.
Kods iziet cauri katrai darblapai un nosaka tukšu lapu, saskaitot netukšās šūnas. Ja šis skaitlis ir nulle, lapa ir tukša un tiek dzēsta. Ievērojiet, ka DisplayAlerts iestatījums ir izslēgts, kamēr cilpa veic savu darbību. Bez šī paziņojuma programmā Excel tiek parādīts brīdinājums katru reizi, kad lapa tiks dzēsta.
Ja visas darbgrāmatas darblapas ir tukšas, tiek parādīts kļūdas ziņojums, kad programma Excel mēģina dzēst vienīgo lapu. Parasti jums ir jāraksta kods, lai risinātu šo situāciju.
Šeit ir vēl viens piemērs katram nākamajam. Šajā procedūrā tiek izmantota cilpa, lai paslēptu visas darblapas aktīvajā darbgrāmatā, izņemot aktīvo lapu.
Paslēptās lapas ()
Dim Sht kā darblapa
Katram Sht In ActiveWorkbook.Worksheets
Ja Sht.Name <> ActiveSheet.Name Tad
Sht.Visible = xlSheetHidden
Beigas Ja
Nākamais Sht
Beigu apakš
Procedūra HideSheets pārbauda lapas nosaukumu. Ja tas nav tas pats, kas aktīvās lapas nosaukums, lapa tiek paslēpta. Ņemiet vērā, ka rekvizīts Visible nav Būla vērtība. Šis rekvizīts faktiski var iegūt jebkuru no trim vērtībām, un Excel nodrošina trīs iebūvētās konstantes. Ja jūs interesē trešā iespēja (xlVeryHidden), pārbaudiet palīdzības sistēmu.
Tas, kas tiek paslēpts, galu galā ir jāparāda, tāpēc šeit ir makro, kas parāda visas darblapas aktīvajā darbgrāmatā:
Pakārtot ParādītSheets()
Dim Sht kā darblapa
Katram Sht In ActiveWorkbook.Worksheets
Sht.Visible = xlSheetVisible
Nākamais Sht
Beigu apakš
Nav pārsteidzoši, ka varat izveidot ligzdotas cilpas For Every-Next. Procedūra CountBold iziet cauri katrai šūnai izmantotajā diapazonā katrā darblapā katrā atvērtajā darbgrāmatā un parāda to šūnu skaitu, kas ir formatētas treknrakstā:
Sub CountBold()
Dim WBook kā darbgrāmata
Dim WSheet kā darblapu
Dim Cell As Range
Dim Cnt Tik ilgi
Katrai WBook In Workbooks
Katrai WSheet WBook.Worksheets
Katrai šūnai WSheet.UsedRange
Ja Cell.Font.Bold = True, tad Cnt = Cnt + 1
Nākamā šūna
Nākamā WSheet
Nākamā WBook
MsgBox Cnt & “Atrastas treknraksta šūnas”
Beigu apakš