Přejít na hlavní obsah

Jak zkontrolovat, zda list v Excelu existuje pomocí VBA

  • Barbora Vítek
  • Praxe

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:

  1. Otevřete Editor VBA stisknutím kombinace kláves Alt + F11 .
  2. V okně editoru VBA vyberte modul, do kterého budete kód psát.
  3. 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
  1. Uložte soubor VBA a vraťte se do sešitu Excel.
  2. 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.