Mohlo by nastať obdobie, kedy budete musieť skontrolovať, či existuje pracovný hárok, ktorý ste vytvorili alebo odstránili v zošite v makre / kóde VBA. Môžeme to urobiť ľahko pomocou funkcie / makra. Existuje niekoľko spôsobov, ako skontrolovať, či hárok existuje.
V tomto článku sa budeme zaoberať nasledujúcimi spôsobmi:
1. Užívateľom definovaná funkcia známa ako UDF
2. Drobná rutina prostredníctvom poľa so správou
Prvá možnosť: Užívateľom definovaná funkcia
Nasledujúca snímka obsahuje niekoľko názvov hárkov a skontrolujeme, či názvy hárkov v stĺpci A existujú.
Ak chcete zistiť, či konkrétny hárok existuje, musíme pri spustení editora VB vykonať nasledujúce kroky
- Kliknite na kartu Vývojár
- Zo skupiny kódov vyberte Visual Basic
- Skopírujte nižšie uvedený kód do štandardného modulu
Možnosť Explicitná funkcia WorksheetExists (ByVal WorksheetName As String) As Boolean Dim Sht as Worksheet for each Sht In ThisWorkbook.Worksheets If Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Then WorksheetExists = True Exit Function End If Next Sht WorksheetExists = Funkcia falošného konca
- Aby sme to mohli skontrolovať, použijeme UDF v bunke B2 ako
- = WorksheetExists (A2)
- Na vyššie uvedenom obrázku „MasterSheet“ v našom vzorovom zošite neexistuje; vzorec preto dal odpoveď ako nepravdivú
Vysvetlenie kódu:
Táto funkcia preberá hodnotu pre „WorksheetName“ z makra, ktoré vykonáva ďalšie činnosti. Ak to potrebujete zmeniť podľa kódu, môžete.
Pre každý Sht v ThisWorkbook.Worksheets a Ďalej Sht sú počiatočné a koncové časti slučky.
Potom Ak Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Potom
WorksheetExists = Pravda
Skontroluje, či sa názov hárka zhoduje s názvom hárka odovzdaným z hlavného makra. Ak áno, WorksheetExists je True a môžeme funkciu ukončiť. V opačnom prípade sa WorksheetExists = False vráti späť do hlavného makra. Smyčka prechádza od 1. listu k ďalšiemu, kým nie sú skontrolované všetky listy.
Druhá možnosť: Vedľajšia rutina prostredníctvom poľa so správou
Môžeme mať normálny podprogram, ktorý volá UDF, a ak sa nájde určený hárok, v okne správy sa zobrazí „hárok existuje“; ak sa nenájde, zobrazí sa okno msgbox „list sa nenašiel“.
Na kontrolu skopírujeme nasledujúci kód do štandardného modulu:
Funkcia WorksheetExists2 (názov pracovného hárka ako reťazec, voliteľné wb ako zošit) ako booleovská hodnota, ak wb nie je nič, potom nastavte wb = thisWorkbook s wb pri chybe Pokračovať ďalší WorksheetExists2 = (.Sheets (WorksheetName) .Name = WorksheetName) On Error GoTo 0 End with End Function Sub FindSheet () If WorksheetExists2 ("Sheet1") Then MsgBox "Sheet1 is in this workbook" Else MsgBox "Oops: Sheet neexistuje" End If End Sub
Po spustení makra „FindSheet“ dostaneme nasledujúce okno so správou, ak hárok existuje:
Ak hárok neexistuje, zobrazí sa nasledujúce okno so správou:
Podobne môžeme mať jednoduchú slučku IF, ktorá skontroluje, či hárok existuje, a potom vykoná určité akcie.
Vedľajší test () Dim ws as Worksheet for each ws In ThisWorkbook.Worksheets If ws.Name "Main" Then ws.Range ("A1"). Hodnota = ws.Name Else ws.Range ("A1"). Value = " HLAVNÁ STRÁNKA PRIHLÁSENIA „Koniec, ak bude nasledovať, koniec podč
- Na otestovanie vyššie uvedeného makra musíme vytvoriť názov listu „Hlavný“. Toto makro je veľmi jednoduché
- Prechádza každým pracovným listom v zošite
- Potom skontroluje, či názov pracovného hárka nie je HLAVNÝ
- Ak je HLAVNÝ, zobrazuje text, napríklad „HLAVNÁ PRIHLÁSENÁ STRÁNKA“ v A1 tohto listu, v opačnom prípade zobrazuje názov listu v bunke A1
- Toto je ďalší spôsob, ako skontrolovať, či hárok existuje. Ak existuje, vykonajte akciu A, ak nie, akciu B
Záver: Môžeme zistiť, či hárok v našom zošite existuje alebo nie; môžeme použiť UDF alebo podprogram podľa vlastného uváženia.
Ak sa vám páčili naše blogy, zdieľajte ich so svojimi priateľmi na Facebooku. A tiež nás môžete sledovať na Twitteri a Facebooku.
Radi by sme vás počuli, dajte nám vedieť, ako môžeme zlepšiť, doplniť alebo inovovať našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku