U nekim slučajevima morate provjeriti postoji li radni list koji ste stvorili ili izbrisali u radnoj knjizi u VBA makronaredbi / kodu. To možemo učiniti jednostavno pomoću funkcije / makronaredbe. Postoji više načina provjere postoji li radni list.
U ovom ćemo članku obraditi sljedeće načine:
1. Korisnički definirana funkcija poznata kao UDF
2. Potprogram kroz okvir s porukom
Prva opcija: Korisnički definirana funkcija
Sljedeći snimak sadrži nekoliko naziva listova; provjerit ćemo postoje li nazivi listova u stupcu A.
Da bismo saznali postoji li određeni list, moramo slijediti korake u nastavku za pokretanje VB uređivača
- Kliknite karticu Developer
- Iz grupe kodova odaberite Visual Basic
- Kopirajte donji kod u standardni modul
Opcija eksplicitnu funkciju WorksheetExists (ByVal WorksheetName Kao String) Kao Boolean Dim ShT Kao tablicu za Svaki ShT U ThisWorkbook.Worksheets If Application.Proper (Sht.Name) = Application.Proper (WorksheetName), a zatim WorksheetExists = True Izlaz Funkcija End ako sljedeći ShT WorksheetExists = False End funkcija
- Kako bismo provjerili, upotrijebit ćemo UDF u ćeliji B2 kao
- = Radni list Postoji (A2)
- Na gornjoj slici "MasterSheet" ne postoji u našem uzorku radne knjige; stoga je formula dala odgovor kao netočno
Objašnjenje koda:
Ova funkcija uzima vrijednost za „WorksheetName“ iz makronaredbe koja obavlja druge aktivnosti. Ako ga trebate promijeniti prema svom kodu, možete.
Za svaki Sht u ovoj radnoj knjizi.Radni listovi i Sljedeći Sht su početni i završni dio petlje.
Zatim Ako je Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Tada
Radni list Postoji = Istina
Provjerava podudara li se naziv lista s listom proslijeđenim iz glavne makronaredbe. Ako se to dogodi, WorksheetExists je True i možemo izaći iz funkcije. Inače, WorksheetExists = False vraća se natrag u glavnu makronaredbu. Petlja prelazi s prvog lista na sljedeći dok se svi listovi ne provjere.
Druga mogućnost: Potprogram kroz okvir s porukom
Možemo imati normalnu podrutinu koja poziva UDF i, ako se navedena tablica pronađe, okvir s porukom će prikazati, "list postoji"; ako nije pronađen, pojavit će se msgbox, "list nije pronađen".
Za provjeru ćemo kopirati sljedeći kôd u standardni modul:
Funkcija Radni listExists2 (Naziv radnog lista kao niz, opcionalno wb kao radna knjiga) Kao logičko Ako wb nije ništa, tada postavite wb = ThisWorkbook With wb On Error Nastavi sljedeći WorksheetExists2 = (. Tablice (WorksheetName)). Naziv = Naziv radnog lista) Na Pogreška GoTo 0 Završi s Sub FindSheet () If WorksheetExists2 ("Sheet1") Onda se MsgBox "Sheet1 nalazi u ovoj radnoj knjizi" Else MsgBox "Ups: List ne postoji" End If End Sub
Nakon pokretanja makronaredbe "FindSheet", dobit ćemo sljedeći okvir s porukom ako list postoji:
Ako List ne postoji dobit ćemo sljedeći okvir s porukom:
Slično, možemo imati jednostavnu IF petlju koja provjerava postoji li list i nakon toga izvodi određene radnje.
Pod test () Dim ws kao radni list za svaki ws u ThisWorkbook.Worksheets If ws.Name "Main" then ws.Range ("A1"). Value = ws.Name Else ws.Range ("A1"). Value = " GLAVNA STRANA ZA PRIJAVU "Završi ako sljedeći završi podm
- Da bismo testirali gornju makronaredbu, moramo stvoriti naziv lista "Main". Ovaj je makro vrlo jednostavan
- Ponavlja se kroz svaki radni list u radnoj knjizi
- Zatim provjerava nije li naziv radnog lista MAIN
- Ako je MAIN, prikazuje tekst, poput "MAIN LOGIN PAGE" na A1 tog lista, inače prikazuje naziv lista u ćeliji A1
- Ovo je samo još jedan način provjere postoji li list. Ako postoji, izvedite akciju A, ako ne, radnju B
Zaključak: Možemo identificirati postoji li list u našoj radnoj knjizi ili ne; možemo koristiti UDF ili potprogram prema vlastitoj želji.
Ako vam se sviđaju naši blogovi, podijelite ih sa svojim prijateljima na Facebooku. Također nas možete pratiti na Twitteru i Facebooku.
Voljeli bismo čuti vaše mišljenje, javite nam kako možemo poboljšati, nadopuniti ili inovirati svoj rad i učiniti ga boljim za vas. Pišite nam na web stranici e -pošte