Vba: jak sprawdzić, czy arkusz istnieje (z przykładem)


Możesz utworzyć w VBA następującą funkcję sprawdzającą, czy w aktualnie aktywnym skoroszycie Excela istnieje określony arkusz:

 Function sheetExists(some_sheet As String) As Boolean

On Error Resume Next
sheetExists = (ActiveWorkbook.Sheets(some_sheet).Index > 0)

End Function

Ta funkcja zwróci wartość PRAWDA lub FAŁSZ , aby wskazać, czy w aktualnie aktywnym skoroszycie programu Excel istnieje dana nazwa arkusza.

Należy pamiętać, że ta funkcja po prostu sprawdza, czy numer indeksu arkusza jest większy niż 0.

Jeśli arkusz istnieje, numer indeksu arkusza będzie miał wartość co najmniej 1 , co spowoduje, że funkcja zwróci wartość TRUE .

Poniższy przykład pokazuje, jak w praktyce wykorzystać tę funkcję.

Przykład: Użyj VBA, aby sprawdzić, czy arkusz istnieje

Załóżmy, że mamy następujący skoroszyt programu Excel z trzema arkuszami:

Możemy utworzyć w VBA następującą funkcję, aby sprawdzić, czy w tym skoroszycie istnieje konkretna nazwa arkusza:

 Function sheetExists(some_sheet As String) As Boolean

On Error Resume Next
sheetExists = (ActiveWorkbook.Sheets(some_sheet).Index > 0)

End Function

Możemy następnie wpisać następującą formułę w komórce A1 aktualnie aktywnego arkusza, aby sprawdzić, czy w tym skoroszycie istnieje nazwa arkusza „Zespoły”:

 =sheetExists("Teams")

Poniższy zrzut ekranu pokazuje, jak zastosować tę formułę w praktyce:

Funkcja zwraca wartość TRUE , ponieważ ta nazwa arkusza istnieje w skoroszycie.

Należy również pamiętać, że w tej funkcji nie jest rozróżniana wielkość liter.

Na przykład, jeśli sprawdzimy, czy nazwa arkusza „zespoły” istnieje, funkcja również zwróci TRUE :

Załóżmy jednak, że sprawdzamy, czy nazwa arkusza „autokary” istnieje:

Funkcja zwraca FALSE , ponieważ ta nazwa arkusza nie istnieje w skoroszycie.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:

VBA: Jak policzyć liczbę arkuszy w skoroszycie
VBA: Jak wyodrębnić dane z innego skoroszytu
VBA: jak wstawić wiele linii

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *