VBA lapai - galutinis vadovas

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 Cheatsheet
apibūdinimasKodo pavyzdys
Nuorodos ir aktyvinimo lapai
Skirtuko pavadinimasSkaičiuoklės („Įvestis“). Aktyvinti
VBA kodo pavadinimas1 lapas. Aktyvuoti
Indekso pozicijaLakštai (1). Aktyvinti
Pasirinkite Lapas
Pasirinkite LapasSkaičiuoklės („Įvestis“). Pasirinkite
Nustatykite kintamąjįPritemdyti ws kaip darbalapį
Nustatykite ws = ActiveSheet
Pavadinimas / PervardytiActiveSheet.Name = "Naujas vardas"
Kitas lapasActiveSheet.Next.Activate
Peržiūrėkite visus lapusPritemdyti ws kaip darbalapį
Už kiekvieną ws darbalapiuose
Msgbox ws.name
Kitas ws
Peržiūrėkite pasirinktus lapusDim 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š langelioSheets.Add.Name = diapazonas ("a3")
Pridėti lapą po kitoSkaič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 pabaigosSkaičiuoklės. Pridėti po: = Lakštai (Sheets.Count)
Pridėkite lapą prie darbo knygos pradžiosSheets.Add (Prieš: = Sheets (1)). Name = "FirstSheet"
Pridėti lapą prie kintamojoDim 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 lapoSkaičiuoklės („Sheet1“). Kopijuoti po: = Sheets (Sheets.Count)
Kopija ir vardasSkaičiuoklės („Sheet1“). Kopijuoti po: = Sheets (Sheets.Count)
ActiveSheet.Name = "Paskutinis lapas"
Kopijuoti ir pavadinti iš langelio vertėsSkaič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 lapasLakštai („Sheet1“). Ląstelės. Išvalyti
Tik aiškaus lapo turinysLakštai („Sheet1“). Cells.ClearContents
Skaidrus lapas, naudojamasSkaič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
wave wave wave wave wave