Ovo je krajnji vodič za rad s tablicama / radnim listovima u Excelu.
Na dnu ovog vodiča stvorili smo listu s uobičajenim naredbama za rad s listovima.
Listovi vs. Radni listovi
Postoje dva načina pozivanja na tablice pomoću VBA. Prvi je s objektom Sheets:
1 | Listovi ("List1"). Aktivirajte |
Drugi je s objektom Worksheets:
1 | Radni listovi ("List1"). Aktivirajte |
99% vremena ta su dva objekta identična. Zapravo, ako ste na internetu pretraživali primjere VBA koda, vjerojatno ste vidjeli da se koriste oba objekta. Evo razlike:
Zbirka listova sadrži radne listove i tablice.
Stoga koristite tablice ako želite uključiti redovne radne listove i tablice. Koristite radne listove ako želite isključiti listove grafikona. U ostatku ovog vodiča koristit ćemo tablice i radne listove naizmjenično.
Referentni listovi
Postoji nekoliko različitih načina pozivanja na tablice:
- ActiveSheet
- Naziv kartice List
- Broj indeksa lista
- Naziv koda lista
ActiveSheet
ActiveSheet je list koji je trenutno aktivan. Drugim riječima, ako ste pauzirali kôd i pogledali Excel, vidljiv je list. U donjem primjeru koda prikazat će se okvir za poruke s imenom ActiveSheet.
1 | MsgBox ActiveSheet.Name |
Naziv lista
Vjerojatno ste najviše upoznati s upućivanjem na tablice prema nazivu kartice:
1 | Tablice ("TabName"). Aktivirajte |
Broj indeksa lista
Broj indeksa listova pozicija je lista u radnoj knjizi. 1 je prvi list. 2 je drugi list itd .:
1 | Listovi (1) .Aktivirajte |
Broj indeksa lista - posljednji list u radnoj bilježnici
Da biste se pozvali na posljednji list u radnoj knjizi, upotrijebite Sheets.Count da biste dobili posljednji broj indeksa:
1 | Listovi (Sheets.Count) .Aktivirajte |
List "Kodni naziv"
Kodni naziv lista je naziv objekta u VBA -i:
1 | CodeName.Aktiviraj |
Referentni listovi u drugim radnim bilježnicama
Tablice je također lako uputiti u druge radne knjige. Da biste to učinili, morate koristiti objekt Radne knjige:
1 | Radne knjige ("VBA_Examples.xlsm"). Radni listovi ("List1"). Aktivirajte |
Važno: Radna knjiga mora biti otvorena da biste se mogli pozvati na njenu tablicu.
Aktiviraj u odnosu na Odaberite List
U drugom članku raspravljamo o aktiviranju i odabiru listova. Kratka verzija je ova:
Kada aktivirate list, on postaje ActiveSheet. Ovo je list koji biste vidjeli da pogledate svoj Excel program. Odjednom se može aktivirati samo jedan list.
Aktivirajte list
1 | Listovi ("List1"). Aktivirajte |
Kad odaberete list, on postaje i ActiveSheet. Međutim, možete odabrati više listova odjednom. Kada je odabrano više listova odjednom, "gornji" list je ActiveSheet. Međutim, možete prebaciti ActiveSheet unutar odabranih listova.
Odaberite list
1 | Listovi ("List 1"). Odaberite |
Odaberite Više listova
Pomoću niza odaberite više listova odjednom:
1 | Radni listovi (niz ("List2", "List3")). Odaberite |
Varijabla radnog lista
Dodjela radnog lista varijabli omogućuje vam upućivanje na radni list prema nazivu varijable. To može uštedjeti mnogo tipkanja i olakšati čitanje vašeg koda. Postoje i mnogi drugi razlozi zbog kojih biste željeli koristiti varijable.
Da biste proglasili varijablu radnog lista:
1 | Zatamni ws kao radni list |
Dodijelite radni list varijabli:
1 | Skup ws = Listovi ("List 1") |
Sada se možete pozivati na varijablu radnog lista u svom kodu:
1 | ws.Aktiviraj |
Prelistajte sve listove u radnoj svesci
Varijable radnog lista bitne su ako želite proći kroz sve radne listove u radnoj knjizi. Najlakši način za to je:
12345 | Zatamni kao radni listZa svaki ws u radnim listovimaMsgBox ws.nameSljedeći ws |
Ovaj kôd će se provlačiti kroz sve radne listove u radnoj knjizi, prikazujući svaki naziv radnog lista u okviru za poruku. Prelistavanje svih listova u radnoj knjizi vrlo je korisno pri zaključavanju / otključavanju ili skrivanju / otkrivanju više radnih listova odjednom.
Zaštita radnog lista
Zaštita radne knjižice
Zaštita radne knjige zaključava radnu knjigu od strukturnih promjena poput dodavanja, brisanja, premještanja ili skrivanja radnih listova.
Zaštitu radne knjige možete uključiti pomoću VBA:
1 | ActiveWorkbook.Protect Password: = "Lozinka" |
ili onemogućite zaštitu radne knjige:
1 | ActiveWorkbook.UnProtect Lozinka: = "Lozinka" |
Napomena: Također možete zaštititi / ukloniti zaštitu bez lozinke izostavljanjem argumenta Lozinka:
1 | ActiveWorkbook.Zaštitite |
Zaštita radnog lista
Zaštita na razini radnog lista sprječava promjene pojedinačnih radnih listova.
Zaštitite radni list
1 | Radni listovi ("List 1"). Zaštitite "Lozinku" |
Ukloni zaštitu s radnog lista
1 | Radni listovi ("List1"). Uklonite zaštitu "Lozinka" |
Postoje različite mogućnosti za zaštitu radnih listova (dopustite promjene u oblikovanju, dopustite korisniku umetanje redaka itd.) Preporučujemo korištenje Makro snimača za snimanje željenih postavki.
Ovdje detaljnije raspravljamo o zaštiti radnog lista.
Radni list Vidljivo svojstvo
Možda već znate da se radni listovi mogu sakriti:
Postoje zapravo tri postavke vidljivosti radnog lista: Vidljivo, Skriveno i Vrlo Skriveno.Skrivene listove može otkriti svaki redoviti korisnik programa Excel - desnim klikom u području kartice radnog lista (prikazano gore). Vrlo skriveni listovi mogu se otkriti samo pomoću VBA koda ili iz VBA uređivača. Upotrijebite sljedeće primjere koda za skrivanje / otkrivanje radnih listova:
Otkrij radni list
1 | Radni listovi ("List1"). Vidljiv = xlSheetVisible |
Sakrij radni list
1 | Radni listovi ("List1"). Visible = xlSheetHidden |
Vrlo sakrij radni list
1 | Radni listovi ("List1"). Vidljivo = xlSheetVeryHidden |
Događaji na razini radnog lista
Događaji su okidači koji mogu uzrokovati pokretanje “Procedura događaja”. Na primjer, možete uzrokovati pokretanje koda svaki put kada se promijeni bilo koja ćelija na radnom listu ili kada je radni list aktiviran.
Postupci događaja na radnom listu moraju se staviti u modul radnog lista:
Brojni su događaji na radnom listu. Da biste vidjeli potpuni popis, idite na modul radnog lista, odaberite "Radni list" iz prvog padajućeg izbornika. Zatim odabirom postupka događaja iz drugog padajućeg izbornika kako biste ga umetnuli u modul.
Radni list Aktiviraj događaj
Događaji za aktiviranje radnog lista pokreću se svaki put kada se radni list otvori.
123 | Privatni podradni list_Activate ()Raspon ("A1"). OdaberiteKraj podm |
Ovaj će kôd odabrati ćeliju A1 (poništavanje područja prikaza u gornji lijevi dio radnog lista) svaki put kada se radni list otvori.
Događaj promjene radnog lista
Događaji promjene radnog lista pokreću se kad god se promijeni vrijednost ćelije na radnom listu. Za više informacija pročitajte naš vodič o događajima promjene radnog lista.
Radni list Varalica
Dolje ćete pronaći tablicu s uobičajenim primjerima koda za rad s listovima u VBA -i
VBA radni listovi Cheatsheet
VBA radni listovi CheatsheetOpis | Primjer koda |
---|---|
Referenciranje i aktiviranje tablica | |
Naziv kartice | Tablice ("Unos"). Aktivirajte |
VBA kodni naziv | List1.Aktiviraj |
Indeksni položaj | Listovi (1) .Aktivirajte |
Odaberite List | |
Odaberite List | Tablice ("Unos"). Odaberite |
Postavite na Variable | Zatamni kao radni list Postavite ws = ActiveSheet |
Ime / Preimenovanje | ActiveSheet.Name = "Novo ime" |
Sljedeći list | ActiveSheet.Next.Activate |
Prođite kroz sve listove | Zatamni kao radni list Za svaki ws u radnim listovima Msgbox ws.name Sljedeći ws |
Prođite kroz odabrane listove | Zatamni kao radni list Za svaki ws u ActiveWindow.SelectedSheets MsgBox ws.Name Sljedeći ws |
Nabavite ActiveSheet | MsgBox ActiveSheet.Name |
Dodaj list | Listovi.Dodaj |
Dodajte list i naziv | Sheets.Add.Name = "Novi list" |
Dodajte list s imenom iz ćelije | Sheets.Add.Name = range ("a3"). Vrijednost |
Dodavanje lista za drugim | Sheets.Add After: = Sheets ("Unos") |
Dodajte list poslije i naziv | Sheets.Add (After: = Sheets ("Input")). Name = "NewSheet" |
Dodajte list prije i naziv | Sheets.Add (Prije: = Sheets ("Unos")). Name = "NewSheet" |
Dodaj list na kraj radne knjige | Sheets.Add After: = Sheets (Sheets.Count) |
Dodajte list na početak radne knjige | Sheets.Add (Prije: = Sheets (1)). Name = "FirstSheet" |
Dodaj list varijabli | Zatamni kao radni list Postavite ws = Listovi.Dodaj |
Kopiraj radne listove | |
Premjestite list na kraj radne knjige | Listovi ("List 1"). Premjesti nakon: = Listovi (Listovi.Broj) |
U novu radnu knjigu | Listovi ("List1"). Kopiraj |
Odabrani listovi u novu radnu knjigu | ActiveWindow.SelectedSheets.Copy |
Prije drugog lista | Listovi ("List 1"). Kopiraj prije: = Listovi ("List 2") |
Prije prvog lista | Listovi ("List 1"). Kopiraj prije: = Listovi (1) |
Nakon posljednjeg lista | Listovi ("List 1"). Kopiraj nakon: = Listovi (Tablice.Broj) |
Kopija i ime | Listovi ("List 1"). Kopiraj nakon: = Listovi (Tablice.Broj) ActiveSheet.Name = "Zadnji list" |
Kopiraj i daj naziv iz vrijednosti ćelije | Listovi ("List 1"). Kopiraj nakon: = Listovi (Tablice.Broj) ActiveSheet.Name = Raspon ("A1"). Vrijednost |
U drugu radnu knjigu | Listovi ("List 1"). Kopiraj prije: = Radne knjige ("Primjer.xlsm"). Listovi (1) |
Sakrij / Otkrij listove | |
Sakrij list | Tablice ("List1"). Visible = False ili Tablice ("List1"). Visible = xlSheetHidden |
Otkrij list | Tablice ("List1"). Vidljivo = Istina ili Tablice ("List1"). Vidljivo = xlSheetVisible |
Vrlo sakrij list | Tablice ("List1"). Vidljivo = xlSheetVeryHidden |
Brisanje ili brisanje tablica | |
Izbriši list | Listovi ("List 1"). Izbrišite |
Brisanje lista (rukovanje pogreškama) | Uključeno Slijedi nastavak greške Listovi ("List 1"). Izbrišite Uključeno Greška Idi na 0 |
Brisanje lista (bez upita) | Application.DisplayAlerts = Netačno Listovi ("List 1"). Izbrišite Application.DisplayAlerts = Istina |
Čisti list | Listovi ("List1"). Ćelije.Očisti |
Samo čisti sadržaj lista | Listovi ("List1"). Ćelije.Čisti sadržaj |
Clear Sheet UsedRange | Listovi ("List1"). UsedRange.Clear |
Zaštitite ili uklonite zaštitu listova | |
Ukloni zaštitu (bez lozinke) | Listovi ("List1"). Uklonite zaštitu |
Ukloni zaštitu (lozinka) | Tablice ("List 1"). Uklonite zaštitu "Lozinka" |
Zaštita (bez lozinke) | Listovi ("List1"). Zaštitite |
Zaštita (lozinka) | Listovi ("List 1"). Zaštitite "Lozinku" |
Zaštitite, ali dopustite pristup VBA | Listovi ("List 1"). Zaštitite UserInterfaceOnly: = Tačno |
Uklonite zaštitu sa svih tablica | Zatamni kao radni list Za svaki ws u radnim listovima ws.Unprotect "password" Sljedeći ws |