Při práci s VBA v Excelu je často nutné zkontrolovat, zda existuje list s určitým názvem. To může být užitečné například při vytváření nových listů, aby se předešlo konfliktům s těmi stávajícími. V tomto článku se podíváme na několik způsobů, jak zkontrolovat existenci listu s názvem VBA Excel.
Prvním způsobem je použití funkce WorksheetFunction.CountIf. Tato funkce umožňuje najít počet shod daných podmínek v rozsahu. Pokud tuto funkci použijeme na rozsah obsahující názvy všech listů v knize a zadáme podmínku hledaného názvu listu, funkce vrátí 1, pokud je takový název nalezen, a 0, pokud není nalezen. Tuto funkci tedy můžeme použít k ověření existence listu.
Druhým způsobem je použití metody Worksheet.Exists. Tato metoda je k dispozici pro objekt listu a umožňuje vám zkontrolovat, zda existuje list se zadaným názvem. Pokud list existuje, metoda vrátí hodnotu True, jinak-False. Tato metoda je jednodušší a stručnější ve srovnání s použitím funkce CountIf.
Volba metody kontroly existence listu s názvem VBA Excel závisí na konkrétním úkolu a preferencích programátora. V některých případech, kdy je vyžadována flexibilnější kontrola nebo další zpracování, může být preferováno použití funkce CountIf. Ve většině situací je však metoda Exists nejjednodušším a nejúčinnějším způsobem kontroly existence listu.
VBA Excel: kontrola existence listu s názvem
K ověření existence listu jménem můžete použít funkci WorksheetExists. Tato funkce přijme jeden argument - název listu a vrátí hodnotu True, pokud List s tímto názvem existuje, a hodnotu False jinak. Takto vypadá funkce:
Function WorksheetExists(sheetName As String) As Boolean
On Error Resume Next
WorksheetExists = (ThisWorkbook.Worksheets(sheetName).Name <> "")
End Function
Chcete-li tuto funkci použít, stačí ji zavolat a jako argument předat název listu. Například:
If WorksheetExists ("List1") Then
MsgBox " list existuje!"
Else
MsgBox " list neexistuje."
End If
Všimněte si, že tato funkce je závislá na registrech, to znamená, že se bude domnívat, že List1 a List1 jsou různé listy. Pokud chcete ignorovat registr, můžete použít funkci UCase nebo LCase Chcete-li převést název listu na velká nebo malá písmena před voláním funkce.
Nyní víte, jak zkontrolovat existenci listu s názvem VBA Excel. Tato jednoduchá funkce může být užitečná při psaní Maker, která musí být provedena pouze za určitých podmínek.
Metody pro ověření existence listu v aplikaci VBA Excel
Chcete-li provést určité akce s listem v aplikaci VBA Excel, musíte nejprve zkontrolovat jeho existenci. Tato část obsahuje různé metody, které lze použít k ověření existence listu jménem.
- Metoda 1: použití příkazu On Error Resume Next
- Jedním z jednoduchých způsobů, jak zkontrolovat existenci listu, je použití příkazu On Error Resume Next. Tato metoda spočívá ve snaze oslovit list jménem a v případě chyby přejít k dalšímu operátorovi. Pokud je operace dokončena bez chyb, pak list existuje.
- Metoda 2: Použití funkce WorksheetExists
- V VBA lze vytvořit vlastní funkci, která ověřuje existenci listu jeho jménem. Funkce může vyhledávat list pomocí cyklu v objektu Workbook.Sheets a vrátit hodnotu True, pokud je list nalezen, a False jinak.
- Metoda 3: použití cyklu For Each
- Dalším způsobem, jak ověřit existenci listu, je použití cyklu For each k přerušení všech listů v knize. Při každé iteraci cyklu je ověřen název listu pomocí funkce StrComp. Pokud se jména shodují, pak list existuje.
- Metoda 4: Použití kolekce Sheets
- VBA Excel je k dispozici sbírka tabulek, která obsahuje všechny listy v knize. Tuto sbírku můžete použít k ověření existence listu. Chcete-li to provést, musíte se obrátit na položky sbírky a porovnat název listu s cílovým názvem.
Výběr metody pro kontrolu existence listu závisí na konkrétním úkolu a preferencích programátora. Každá metoda má své výhody a nevýhody, proto se doporučuje použít nejvhodnější metodu pro vaši situaci.
Příklady použití VBA k ověření existence listu
V VBA lze použít několik způsobů, jak ověřit existenci listu jménem. Podívejme se na několik příkladů:
- Použití cyklu k vyhledání listu
- Použití metody WorksheetExists
- Použití zpracování chyb
Použití cyklu k vyhledání listu
Pomocí cyklu můžete procházet všechny listy v knize a kontrolovat jejich jména.
Function CheckSheetExists(sheetName As String) As BooleanDim ws As WorksheetFor Each ws In ThisWorkbook.WorksheetsIf ws.Name = sheetName ThenCheckSheetExists = TrueExit FunctionEnd IfNext wsCheckSheetExists = FalseEnd Function
Tato funkce bere název listu jako argument a vrací hodnotu True, pokud List s tímto názvem existuje, a hodnotu False jinak.
Použití metody WorksheetExists
VBA má vestavěnou metodu WorksheetExists, kterou lze použít k ověření existence listu.
Function CheckSheetExists(sheetName As String) As BooleanDim ws As WorksheetOn Error Resume NextSet ws = ThisWorkbook.Sheets(sheetName)On Error GoTo 0CheckSheetExists = Not ws Is NothingEnd Function
V tomto případě se snažíme nastavit objekt listu s daným názvem a poté zkontrolujeme, zda objekt existuje. Pokud objekt existuje, vrátíme hodnotu True, jinak hodnotu False.
Použití zpracování chyb
Dalším způsobem, jak zkontrolovat existenci listu, je použití zpracování chyb. Snažíme se získat odkaz na list s daným názvem, a pokud dojde k chybě, tak list neexistuje.
Function CheckSheetExists(sheetName As String) As BooleanOn Error Resume NextDim ws As Worksheet: Set ws = ThisWorkbook.Sheets(sheetName)On Error GoTo 0CheckSheetExists = Not ws Is NothingEnd Function
V tomto případě nainstalujeme objekt listu do proměnné ws a zkontrolujeme, zda objekt existuje. Pokud objekt existuje, vrátíme hodnotu True, jinak hodnotu False.
V závislosti na konkrétní situaci si můžete vybrat vhodný způsob, jak ověřit existenci listu jménem VBA.