VBA palaiko dar vieną kilpos tipą programoje „Excel 2016“: kiekvieno objekto peržiūrą objektų rinkinyje. Kolekcija, kaip galbūt žinote, susideda iš kelių to paties tipo objektų. Pavyzdžiui, „Excel“ turi visų atidarytų darbaknygių rinkinį (rinkinys „Darbaknygiai“), o kiekvienoje darbaknygėje yra darbalapių rinkinys (kolekcija „Darbalapiai“).
Kai reikia peržiūrėti kiekvieną kolekcijos objektą, naudokite struktūrą Kiekvienam kitam. Šis pavyzdys peržiūri kiekvieną aktyvios darbaknygės darbalapį ir ištrina darbalapį, jei jis tuščias:
Sub DeleteEmptySheets()
Dim WkSht kaip darbalapis
Application.DisplayAlerts = Netiesa
Kiekvienam ActiveWorkbook.Worksheets WkSht
Jei WorksheetFunction.CountA(WkSht.Cells) = 0 Tada
WkSht.Delete
Pabaiga, jei
Kitas WkSht
Application.DisplayAlerts = Tiesa
Pabaigos sub
Šiame pavyzdyje kintamasis WkSht yra objekto kintamasis, vaizduojantis kiekvieną darbaknygės darbalapį. Kintamojo pavadinimas WkSht nieko ypatingo; galite naudoti bet kurį jums patinkantį kintamojo pavadinimą.
Kodas pereina kiekvieną darbalapį ir nustato tuščią lapą skaičiuodamas netuščius langelius. Jei šis skaičius lygus nuliui, lapas tuščias ir ištrinamas. Atkreipkite dėmesį, kad „DisplayAlerts“ nustatymas yra išjungtas, kol ciklas atlieka savo funkciją. Be šio teiginio „Excel“ rodo įspėjimą kiekvieną kartą, kai ruošiamasi ištrinti lapą.
Jei visi darbaknygės darbalapiai yra tušti, „Excel“ bandant ištrinti vienintelį lapą pateikiama klaida. Paprastai rašote kodą, kad išspręstumėte tą situaciją.
Štai dar vienas „Kiekvienam kitam“ pavyzdys. Ši procedūra naudoja kilpą, kad paslėptų visus aktyviosios darbaknygės darbalapius, išskyrus aktyvųjį lapą.
Sub HideSheets ()
Dim Sht kaip darbalapis
Kiekvienam Sht ActiveWorkbook.Worksheets
Jei Sht.Name <> ActiveSheet.Name Tada
Sht.Visible = xlSheetHidden
Pabaiga, jei
Kitas Sht
Pabaigos sub
„HideSheets“ procedūra patikrina lapo pavadinimą. Jei jis nesutampa su aktyvaus lapo pavadinimu, lapas yra paslėptas. Atkreipkite dėmesį, kad matoma ypatybė nėra Būlio reikšmė. Ši savybė iš tikrųjų gali įgyti bet kurią iš trijų reikšmių, o „Excel“ pateikia tris integruotas konstantas. Jei jus domina trečioji galimybė (xlVeryHidden), patikrinkite pagalbos sistemą.
Tai, kas paslepiama, galiausiai turi būti nepaslėpta, todėl čia yra makrokomanda, kuri rodo visus aktyvios darbaknygės darbalapius:
Sub UnhideSheets ()
Dim Sht kaip darbalapis
Kiekvienam Sht ActiveWorkbook.Worksheets
Sht.Visible = xlSheetVisible
Kitas Sht
Pabaigos sub
Nenuostabu, kad galite sukurti įdėtas For Every-Next kilpas. Procedūra „CountBold“ perkelia kiekvieną naudojamo diapazono langelį kiekvienoje atidarytoje darbaknygėje ir rodo paryškintu šriftu suformatuotų langelių skaičių:
Sub CountBold ()
Pritemdyta WBook kaip darbo knyga
Pritemdytas WSheet kaip darbalapis
Pritemdyti langelį kaip diapazoną
Dim Cnt As Long
Kiekvienai WBook In Workbooks
Kiekvienam WSheet WBook.Worksheets
Kiekvienam WSheet.UsedRange langeliui
Jei Cell.Font.Bold = True, tada Cnt = Cnt + 1
Kitas langelis
Kitas WSheet
Kita Wknyga
„MsgBox Cnt“ ir „rasta paryškintų langelių“
Pabaigos sub