Tai yra pagrindinis darbo su skaičiuoklėmis / darbalapiais programoje „Excel“ vadovas.
Šio vadovo apačioje sukūrėme bendrų komandų, skirtų dirbti su lapais, apgaulingą lapą.
Lakštai vs. Darbo lapai
Naudojant VBA, yra du būdai pateikti nuorodas į lakštus. Pirmasis yra su „Sheets“ objektu:
1 | Skaičiuoklės („Sheet1“). Aktyvinti |
Kitas yra su darbalapių objektu:
1 | Darbo lapai („Sheet1“). Aktyvinti |
99% atvejų šie du objektai yra identiški. Tiesą sakant, jei internete ieškojote VBA kodo pavyzdžių, tikriausiai matėte abu naudojamus objektus. Štai koks skirtumas:
Lakštų kolekcijoje yra darbalapiai IR diagramų lapai.
Taigi naudokite skaičiuokles, jei norite įtraukti įprastus darbalapius IR diagramų lapus. Jei norite neįtraukti diagramų lapų, naudokite darbalapius. Likusioje šio vadovo dalyje pakaitomis naudosime lakštus ir darbalapius.
Nuorodos lapai
Yra keli skirtingi lapų nuorodų būdai:
- „ActiveSheet“
- Lapo skirtuko pavadinimas
- Lapo indekso numeris
- Lapo kodo pavadinimas
„ActiveSheet“
„ActiveSheet“ yra šiuo metu aktyvus lapas. Kitaip tariant, jei pristabdėte kodą ir pažvelgėte į „Excel“, matomas lapas. Žemiau pateiktame kodo pavyzdyje bus rodomas pranešimų laukelis su „ActiveSheet“ pavadinimu.
1 | „MsgBox ActiveSheet.Name“ |
Lapo pavadinimas
Tikriausiai esate labiausiai susipažinęs su Skaičiuoklių nuoroda pagal jų skirtuko pavadinimą:
1 | Skaičiuoklės („TabName“). Suaktyvinkite |
Lapo indekso numeris
Lapų indekso numeris yra lapo padėtis darbo knygoje. 1 yra pirmasis lapas. 2 yra antras lapas ir tt:
1 | Lakštai (1). Aktyvinti |
Lapo rodyklės numeris - paskutinis lapas darbaknygėje
Norėdami nurodyti paskutinį darbaknygės lapą, naudokite Skaičiuoklės. Skaičiuoti, kad gautumėte paskutinį rodyklės numerį:
1 | Skaičiuoklės („Sheets.Count“). Aktyvinti |
Lapas „Kodo pavadinimas“
Lapo kodo pavadinimas yra objekto pavadinimas VBA:
1 | CodeName. Aktyvinti |
Nuorodos lapai kitose darbaknygėse
Taip pat nesunku pateikti nuorodas į Skaičiuokles kitose darbaknygėse. Norėdami tai padaryti, turite naudoti darbo knygų objektą:
1 | Darbaknygės („VBA_Examples.xlsm“). Darbo lapai („Sheet1“). Aktyvinti |
Svarbu: Darbo knyga turi būti atidaryta, kad galėtumėte pateikti nuorodą į Skaičiuokles.
Aktyvinti prieš pasirinkdami lapą
Kitame straipsnyje aptariame viską apie lapų aktyvavimą ir pasirinkimą. Trumpa versija yra tokia:
Kai suaktyvinate lapą, jis tampa „ActiveSheet“. Tai lapas, kurį pamatytumėte, jei pažvelgtumėte į „Excel“ programą. Vienu metu gali būti aktyvuojamas tik vienas lapas.
Suaktyvinkite lapą
1 | Skaičiuoklės („Sheet1“). Aktyvinti |
Kai pasirenkate lapą, jis taip pat tampa „ActiveSheet“. Tačiau vienu metu galite pasirinkti kelis lapus. Kai vienu metu pasirenkami keli lapai, „viršutinis“ lapas yra „ActiveSheet“. Tačiau galite perjungti „ActiveSheet“ pasirinktuose lapuose.
Pasirinkite lapą
1 | Skaičiuoklės („Sheet1“). Pasirinkite |
Pasirinkite kelis lapus
Norėdami pasirinkti kelis lapus vienu metu, naudokite masyvą:
1 | Darbo lapai (masyvas („Sheet2“, „Sheet3“)). Pasirinkite |
Darbo lapo kintamasis
Priskyrus darbalapį kintamajam, galite nurodyti darbalapį pagal jo kintamojo pavadinimą. Tai gali sutaupyti daug rašymo ir palengvinti jūsų kodo skaitymą. Taip pat yra daug kitų priežasčių, dėl kurių galbūt norėsite naudoti kintamuosius.
Norėdami deklaruoti darbalapio kintamąjį:
1 | Pritemdyti ws kaip darbalapį |
Priskirti darbalapį kintamajam:
1 | Nustatykite ws = Sheets ("Sheet1") |
Dabar galite nurodyti darbalapio kintamąjį savo kode:
1 | ws. Aktyvinti |
Peržiūrėkite visus darbo knygos lapus
Darbo lapo kintamieji yra būtini, kai norite peržiūrėti visus darbaknygės darbalapius. Lengviausias būdas tai padaryti:
12345 | Pritemdyti ws kaip darbalapįUž kiekvieną ws darbalapiuoseMsgBox ws.nameKitas ws |
Šis kodas perkelia visus darbaknygės darbalapius, pranešimų laukelyje rodydamas kiekvieno darbalapio pavadinimą. Kreipimasis į visus darbaknygės lapus yra labai naudingas, kai vienu metu užrakinamas / atrakinamas arba slepiamas / rodomas keli darbalapiai.
Darbo lapo apsauga
Darbo knygos apsauga
Apsauga nuo darbaknygės blokuoja darbaknygę nuo struktūrinių pakeitimų, tokių kaip darbalapių pridėjimas, trynimas, perkėlimas ar slėpimas.
Apsaugą nuo darbaknygės galite įjungti naudodami VBA:
1 | ActiveWorkbook.Protect Password: = "Slaptažodis" |
arba išjunkite darbaknygės apsaugą:
1 | ActiveWorkbook.UnProtect Slaptažodis: = "Slaptažodis" |
Pastaba: Taip pat galite apsaugoti / panaikinti apsaugą be slaptažodžio, praleisdami slaptažodį:
1 | ActiveWorkbook.Protect |
Darbo lapo apsauga
Apsauga nuo darbalapio lygio neleidžia keisti atskirų darbalapių.
Apsaugoti darbalapį
1 | Darbo lapai („Sheet1“). Apsaugokite „Slaptažodį“ |
Panaikinti darbalapio apsaugą
1 | Darbo lapai („Sheet1“). Panaikinkite „Slaptažodžio“ apsaugą |
Apsaugojant darbalapius yra įvairių variantų (leisti keisti formatavimą, leisti vartotojui įterpti eilutes ir pan.) Rekomenduojame naudoti makrokomandų įrašymo įrenginį norimiems nustatymams įrašyti.
Čia išsamiau aptariame darbalapio apsaugą.
Darbo lapo matoma nuosavybė
Galbūt jau žinote, kad darbalapiai gali būti paslėpti:
Iš tikrųjų yra trys darbalapio matomumo nustatymai: matomas, paslėptas ir Labai paslėpta.Paslėptus lapus gali paslėpti bet kuris įprastas „Excel“ vartotojas - dešiniuoju pelės klavišu spustelėdami darbalapio skirtuko sritį (parodyta aukščiau). „VeryHidden“ lapus galima slėpti tik naudojant VBA kodą arba naudojant VBA redaktorių. Norėdami paslėpti / parodyti darbalapius, naudokite šiuos kodo pavyzdžius:
Rodyti darbalapį
1 | Darbo lapai („Sheet1“). Visible = xlSheetVisible |
Slėpti darbalapį
1 | Darbo lapai („Sheet1“). Látható = xlSheetHidden |
Labai slėpti darbalapį
1 | Darbo lapai („Sheet1“). Visible = xlSheetVeryHidden |
Užduoties lygio įvykiai
Įvykiai yra aktyvikliai, dėl kurių gali įvykti „Įvykių procedūros“. Pvz., Galite priversti kodą paleisti kiekvieną kartą, kai keičiamas bet kuris darbalapio langelis arba kai suaktyvinamas darbalapis.
Darbo lapo įvykių procedūros turi būti dedamos į darbalapio modulį:
Yra daug darbalapio įvykių. Norėdami pamatyti visą sąrašą, eikite į darbalapio modulį, pirmame išskleidžiamajame meniu pasirinkite „Darbo lapas“. Tada antrame išskleidžiamajame meniu pasirinkite įvykio procedūrą, kad ją įterptumėte į modulį.
Darbo lapas Aktyvinti įvykį
Skaičiuoklės aktyvinimo įvykiai vykdomi kiekvieną kartą atidarius darbalapį.
123 | Privatus antrinis darbalapis_Aktyvuoti ()Diapazonas („A1“). PasirinkitePabaiga Sub |
Šis kodas pasirinks langelį A1 (iš naujo nustatys rodinio sritį viršutiniame kairiajame darbalapio kampe) kiekvieną kartą atidarius darbalapį.
Darbo lapo keitimo įvykis
Skaičiuoklės keitimo įvykiai vykdomi kiekvieną kartą, kai darbalapyje pakeičiama langelio vertė. Norėdami gauti daugiau informacijos, skaitykite mūsų vadovėlį apie darbalapio keitimo įvykius.
Darbo lapas Cheat Sheet
Žemiau rasite apgaulės lapą, kuriame yra bendrų kodų pavyzdžių, kaip dirbti su lapais VBA
„VBA“ darbalapių cheatsheet
VBA darbalapiai Cheatsheetapibūdinimas | Kodo pavyzdys |
---|---|
Nuorodos ir aktyvinimo lapai | |
Skirtuko pavadinimas | Skaičiuoklės („Įvestis“). Aktyvinti |
VBA kodo pavadinimas | 1 lapas. Aktyvuoti |
Indekso pozicija | Lakštai (1). Aktyvinti |
Pasirinkite Lapas | |
Pasirinkite Lapas | Skaičiuoklės („Įvestis“). Pasirinkite |
Nustatykite kintamąjį | Pritemdyti ws kaip darbalapį Nustatykite ws = ActiveSheet |
Pavadinimas / Pervardyti | ActiveSheet.Name = "Naujas vardas" |
Kitas lapas | ActiveSheet.Next.Activate |
Peržiūrėkite visus lapus | Pritemdyti ws kaip darbalapį Už kiekvieną ws darbalapiuose Msgbox ws.name Kitas ws |
Peržiūrėkite pasirinktus lapus | Dim ws kaip darbalapis Už kiekvieną ws ActiveWindow.SelectedSheets MsgBox ws.Pavadinimas Kitas ws |
Gaukite „ActiveSheet“ | „MsgBox ActiveSheet.Name“ |
Pridėti lapą | Lakštai. Pridėti |
Pridėkite lapą ir pavadinimą | Sheets.Add.Name = "NewSheet" |
Pridėkite lapą su pavadinimu iš langelio | Sheets.Add.Name = diapazonas ("a3") |
Pridėti lapą po kito | Skaičiuoklės. Pridėti po: = Lakštai („Įvestis“) |
Pridėkite lapą po ir pavadinimą | Sheets.Add (After: = Sheets ("Input")). Name = "NewSheet" |
Pridėti lapą prieš ir pavadinimą | Sheets.Add (Prieš: = Skaičiuoklės („Įvestis“)). Pavadinimas = "NewSheet" |
Pridėkite lapą prie darbo knygos pabaigos | Skaičiuoklės. Pridėti po: = Lakštai (Sheets.Count) |
Pridėkite lapą prie darbo knygos pradžios | Sheets.Add (Prieš: = Sheets (1)). Name = "FirstSheet" |
Pridėti lapą prie kintamojo | Dim ws kaip darbalapis Nustatykite ws = Sheets.Add |
Kopijuoti darbalapius | |
Perkelkite lapą į darbo knygos pabaigą | Skaičiuoklės („Sheet1“). Perkelti po: = Sheets (Sheets.Count) |
Į naują darbo knygą | Skaičiuoklės („Sheet1“). Kopija |
Pasirinkti lapai į naują darbo knygą | ActiveWindow.SelectedSheets.Copy |
Prieš kitą lapą | Skaičiuoklės („Sheet1“). Kopijuoti anksčiau: = Sheets („Sheet2“) |
Prieš pirmąjį lapą | Skaičiuoklės („Sheet1“). Kopijuoti anksčiau: = Sheets (1) |
Po paskutinio lapo | Skaičiuoklės („Sheet1“). Kopijuoti po: = Sheets (Sheets.Count) |
Kopija ir vardas | Skaičiuoklės („Sheet1“). Kopijuoti po: = Sheets (Sheets.Count) ActiveSheet.Name = "Paskutinis lapas" |
Kopijuoti ir pavadinti iš langelio vertės | Skaičiuoklės („Sheet1“). Kopijuoti po: = Sheets (Sheets.Count) ActiveSheet.Name = Diapazonas („A1“). Reikšmė |
Į kitą darbo knygą | Skaičiuoklės („Lapas1“). Kopijuoti anksčiau: = Darbaknygės („Pavyzdys.xlsm“). Lakštai (1) |
Slėpti / rodyti lapus | |
Slėpti lapą | Skaičiuoklės („Sheet1“). Látható = Netiesa arba Skaičiuoklės („Sheet1“). Látható = xlSheetHidden |
Rodyti lapą | Skaičiuoklės („Sheet1“). Matomas = tiesa arba Skaičiuoklės („Sheet1“). Visible = xlSheetVisible |
Labai slėpti lapą | Skaičiuoklės („Sheet1“). Visible = xlSheetVeryHidden |
Ištrinti arba išvalyti lapus | |
Ištrinti lapą | Skaičiuoklės („Sheet1“). Ištrinti |
Ištrinti lapą (tvarkant klaidą) | Dėl klaidos Tęsti toliau Skaičiuoklės („Sheet1“). Ištrinti Klaida „GoTo 0“ |
Ištrinti lapą (be užklausos) | Application.DisplayAlerts = Netiesa Skaičiuoklės („Sheet1“). Ištrinti Application.DisplayAlerts = Tiesa |
Skaidrus lapas | Lakštai („Sheet1“). Ląstelės. Išvalyti |
Tik aiškaus lapo turinys | Lakštai („Sheet1“). Cells.ClearContents |
Skaidrus lapas, naudojamas | Skaičiuoklės („Sheet1“). „UsedRange.Clear“ |
Apsaugoti arba apsaugoti lapus | |
Atšaukti apsaugą (be slaptažodžio) | Skaičiuoklės („Sheet1“). Neapsaugoti |
Atšaukti apsaugą (slaptažodis) | Skaičiuoklės („Sheet1“). Atšaukite „Slaptažodžio“ apsaugą |
Apsaugoti (be slaptažodžio) | Lakštai („Sheet1“). Apsaugokite |
Apsaugoti (slaptažodis) | Skaičiuoklės („Sheet1“). Apsaugokite „Slaptažodį“ |
Apsaugokite, bet leiskite VBA prieigą | Skaičiuoklės („Sheet1“). Apsaugokite „UserInterfaceOnly“: = Tiesa |
Atšaukti visų lapų apsaugą | Dim ws kaip darbalapis Už kiekvieną ws darbalapiuose ws.Atsisaugoti „slaptažodį“ Kitas ws |