Může nastat čas, kdy budete muset zkontrolovat, zda existuje list, který jste vytvořili nebo odstranili v sešitu v makru / kódu VBA. To můžeme snadno provést pomocí funkce / makra. Existuje několik způsobů, jak zkontrolovat, zda list existuje.
V tomto článku se budeme zabývat následujícími způsoby:
1. Uživatelem definovaná funkce známá jako UDF
2. Dílčí rutina prostřednictvím pole se zprávou
První možnost: Funkce definovaná uživatelem
Následující snímek obsahuje několik názvů listů a zkontrolujeme, zda názvy listů ve sloupci A existují.
Chcete -li zjistit, zda konkrétní list existuje, musíme ke spuštění editoru VB provést následující kroky
- Klikněte na kartu Vývojář
- Ze skupiny kódů vyberte Visual Basic
- Zkopírujte níže uvedený kód do standardního modulu
Možnost Explicitní funkce WorksheetExists (ByVal WorksheetName As String) As Boolean Dim Sht As worksheet for every Sht In ThisWorkbook.Worksheets If Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Then WorksheetExists = True Exit Function End If Next Sht WorksheetExists = Funkce falešného konce
- Abychom to mohli zkontrolovat, použijeme UDF v buňce B2 jako
- = WorksheetExists (A2)
- Na výše uvedeném obrázku „MasterSheet“ v našem ukázkovém sešitu neexistuje; vzorec tedy dal odpověď jako False
Vysvětlení kódu:
Tato funkce přebírá hodnotu pro „WorksheetName“ z makra, které provádí jiné činnosti. Pokud to potřebujete změnit podle kódu, můžete.
Pro každý Sht v ThisWorkbook.Worksheets a Další Sht jsou počáteční a koncové části smyčky.
Pak Pokud Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Then
WorksheetExists = True
Zkontroluje, zda se název listu shoduje s názvem listu předaným z hlavního makra. Pokud ano, WorksheetExists je True a můžeme tuto funkci ukončit. Jinak se WorksheetExists = False vrátí zpět do hlavního makra. Smyčka jde od 1. listu k dalšímu, dokud nejsou zkontrolovány všechny listy.
Druhá možnost: Dílčí rutina prostřednictvím pole se zprávou
Můžeme mít normální podprogram, který volá UDF, a pokud je zadaný list nalezen, zobrazí se okno se zprávou „list existuje“; pokud nebyl nalezen, objeví se msgbox, „list nebyl nalezen“.
Chcete -li zkontrolovat, zkopírujeme následující kód do standardního modulu:
Funkce WorksheetExists2 (název listu jako řetězec, volitelně wb jako sešit) jako boolean Pokud wb není nic, pak nastavte wb = thisWorkbook s wb při chybě Pokračovat další WorksheetExists2 = (.Sheets (název listu) .Name = název_ listu) Při chybě GoTo 0 Konec s funkcí konec Sub FindSheet () If WorksheetExists2 ("Sheet1") Then MsgBox "Sheet1 is in this workbook" Else MsgBox "Jejda: List neexistuje" End If End Sub
Po spuštění makra „FindSheet“ se nám zobrazí následující okno se zprávou, pokud list existuje:
Pokud list neexistuje, zobrazí se následující okno se zprávou:
Podobně můžeme mít jednoduchou smyčku IF, která zkontroluje, zda list existuje, a poté provede určité akce.
Dílčí test () Dim ws As worksheet for each ws In ThisWorkbook.Worksheets If ws.Name "Main" Then ws.Range ("A1"). Value = ws.Name Else ws.Range ("A1"). Value = " HLAVNÍ PŘIHLÁŠKOVÁ STRÁNKA „End If Next ws End Sub
- K otestování výše uvedeného makra musíme vytvořit název listu „Hlavní“. Toto makro je velmi jednoduché
- Prochází každým listem v sešitu
- Poté zkontroluje, zda název listu není HLAVNÍ
- Pokud je HLAVNÍ, zobrazí text, například „HLAVNÍ PŘIHLÁŠKOVÁ STRÁNKA“ v A1 daného listu, v opačném případě zobrazí název listu v buňce A1
- Toto je jen další způsob, jak zkontrolovat, zda list existuje. Pokud existuje, proveďte akci A, pokud ne, akci B
Závěr: Můžeme zjistit, zda list v našem sešitu existuje nebo ne; můžeme použít UDF nebo podprogram podle svého pohodlí.
Pokud se vám naše blogy líbily, sdílejte je se svými přáteli na Facebooku. A také nás můžete sledovat na Twitteru a Facebooku.
Rádi bychom od vás slyšeli, dejte nám vědět, jak můžeme zlepšit, doplnit nebo inovovat naši práci a zlepšit ji pro vás. Napište nám na e -mail