Microsoft Excel je jedním z nejoblíbenějších nástrojů pro práci s tabulkovými daty. Nabízí mnoho možností a funkcí pro zpracování a analýzu informací. Jednou z takových funkcí je práce s listy, které vám umožňují organizovat a strukturovat data.
Někdy však může být nutné zkontrolovat, zda konkrétní list v sešitu aplikace Excel existuje. K tomu lze využít programovací jazyk VBA (Visual Basic for Applications), který je integrován do Excelu.
V VBA existuje několik způsobů, jak ověřit existenci listu. Jedním z nejjednodušších a nejspolehlivějších způsobů je použití metody Sheets(). Tato metoda vrací objekt listu podle jeho indexu nebo názvu. Pokud není objekt nalezen, dojde k chybě, kterou lze zachytit a zpracovat.
Sub CheckSheetExistence()
On Error Resume Next
Dim ws As Worksheet
Set ws = Worksheets ("název listu")
If Err.Number <> 0 Then
MsgBox "list nenalezen"
Else
MsgBox "list existuje"
End If
On Error GoTo 0
End Sub
V tomto příkladu používáme konstrukci On Error Resume Next k zachycení chyby při hledání objektu listu. Pokud k chybě nedošlo (tj. list byl nalezen), pak se zobrazí zpráva "list existuje", v opačném případě se zobrazí zpráva "list nebyl nalezen". Vazba On Error GoTo 0 slouží k návratu k běžnému zpracování chyb po provedení ověřovacího kódu.
Jak zkontrolovat list v Excelu pomocí VBA
Při práci s makry VBA v Excelu je někdy nutné zkontrolovat, zda v knize Excel existuje konkrétní list. To lze provést pomocí několika řádků kódu na VBA.
Zde je příklad kódu, který vám umožní zkontrolovat, zda v knize existuje list s určitým názvem:
- Otevřete Editor VBA stisknutím kombinace kláves Alt + F11 .
- V okně editoru VBA vyberte modul, do kterého budete kód psát.
- Vložte následující kód:
Function SheetExists(sheetName As String) As BooleanSheetExists = FalseOn Error Resume NextSheetExists = Not Sheets(sheetName) Is NothingOn Error GoTo 0End Function
- Uložte soubor VBA a vraťte se do sešitu Excel.
- Nyní můžete pomocí funkce SheetExists ve svém kódu zkontrolovat list. Zde je příklad:
Sub CheckSheetExists()Dim sheetName As StringsheetName = "Sheet1" ' здесь введите имя листа, который хотите проверитьIf SheetExists(sheetName) ThenMsgBox "Лист " & sheetName & " существует!"ElseMsgBox "Лист " & sheetName & " не найден!"End IfEnd Sub
V tomto příkladu funkce CheckSheetExists kontroluje list s daným názvem "Sheet1". Pokud list existuje, zobrazí se Zpráva "list Sheet1 existuje!", jinak se zobrazí zpráva " list Sheet1 nebyl nalezen!".
Nyní víte, jak zkontrolovat list v Excelu pomocí VBA. Tato metoda může být užitečná při automatizaci úloh souvisejících se zpracováním dat v Excelu.
Všimněte si, že pro správnou funkci kódu musí být název listu přesně uveden, včetně registru znaků. Pokud název listu obsahuje mezery nebo speciální znaky, měly by být také uvedeny v kódu.
Způsoby, jak zkontrolovat existenci listu v Excelu pomocí VBA
Při práci s makry v aplikaci Visual Basic for Applications (VBA) v Excelu může být nutné zkontrolovat, zda v knize existuje konkrétní list. To může být užitečné, pokud chcete provést určité kroky pouze v případě, že máte konkrétní list. VBA poskytuje několik způsobů, jak provést takovou kontrolu, včetně použití zařízení Workshbook nebo zařízení Worksheet.
Prvním způsobem je použití metody Worksheets, která kontroluje list podle jeho názvu:
Sub CheckWorksheetExistence()Dim ws As WorksheetDim wsName As StringwsName = "Имя листа"On Error Resume NextSet ws = Worksheets(wsName)On Error GoTo 0If Not ws Is Nothing ThenMsgBox "Лист с именем " & wsName & " существует."ElseMsgBox "Лист с именем " & wsName & " не существует."End IfEnd Sub
Druhým způsobem je použití metody Evaluate:
Sub CheckWorksheetExistence2()Dim wsName As StringwsName = "Имя листа"If Evaluate("ISREF('" & wsName & "'!A1)") ThenMsgBox "Лист с именем " & wsName & " существует."ElseMsgBox "Лист с именем " & wsName & " не существует."End IfEnd Sub
Třetím způsobem je použití metody COUNTIF:
Sub CheckWorksheetExistence3()Dim wsName As StringwsName = "Имя листа"If Application.WorksheetFunction.CountIf(Worksheets("Листы").Range("A:A"), wsName) > 0 ThenMsgBox "Лист с именем " & wsName & " существует."ElseMsgBox "Лист с именем " & wsName & " не существует."End IfEnd Sub
Vyberte si jeden z těchto způsobů, který nejlépe vyhovuje vašim potřebám, a použijte jej k ověření existence listu v Excelu pomocí VBA.