Pomocí vlastní funkce chceme zjistit, zda list zadaného jména v souboru existuje či nikoliv. Jednou z možností je projít všechny listy a testovat, zda se jméno některého z existujících listů neshoduje s testovaným (např. pomocí FOR EACH CYKLU). Existuje však elegantnější a rychlejší řešení. Zjistíme, zda list existuje, aniž bychom všechny listy procházeli.
Princip je jednoduchý. S listem se pokusíme "něco udělat" (např. ho uložit do objektové proměnné). Jestliže list existuje, povede se to, v opačném případě vznikne chyba - tuto chybu zachytíme (aby funkce "nespadla" ) a následně otestujeme.
Funkce by mohla vypadat takto:
Function TestSheetExist(TestSheetName As String) As Boolean
Dim wsSheet As Worksheet
On Error Resume Next ' error handler-zamezí vzniku run-time chyby
Set wsSheet = Worksheets(TestSheetName)
If Err.Number = 0 Then ' chyba nevznikla --> list existuje
TestSheetExist = True
Else ' vznikla chyba --> list neexistuje
TestSheetExist = False
End If
End Function
Chcete toto a další pokročilá řešení zakomponovat do svých programů ve VBA? Kontaktujte nás.