Czy prawidłowy arkusz


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
'**********************************************************************************************************
' Nazwa:                czyPrawidlowyArkusz
' Autor:                mielk | 2012-11-16
'
' Opis:                 Funkcja sprawdzająca czy podany arkusz Excela jest prawidłowy i można odwoływać się
'                       do jego właściwości i metod bez obawy, że zostanie wygenerowany błąd.
'
'                       Funkcja jest bardzo pomocna, ponieważ pozwala uniknąć błędu
'                       Run-time error '-2147221080 (800401a8)': Automation error.
'                       Błąd ten jest generowany w sytuacji, kiedy kod próbuje się odnieść do właściwości
'                       lub metody zmiennej arkuszowej, ale arkusz, do którego odnosi się ta zmienna,
'                       został wcześniej usunięty lub plik, w którym ten arkusz się znajduje został
'                       zamknięty.
'
' Argumenty:
'   arkusz              Sprawdzany arkusz.
'
' Zwraca:
'   Boolean             True - jeżeli sprawdzany arkusz jest prawidłowy i bez obaw można się odnosić do
'                               jego właściwości i metod.
'                       False - jeżeli podany arkusz jest nieprawidłowy (zazwyczaj przyczyną jest fakt,
'                               że plik Excela, w którym znajduje się ten arkusz został wcześniej zamknięty
'                               lub arkusz został usunięty).
'
'
' --- Zmiany ----------------------------------------------------------------------------------------------
' 2012-11-16            mielk           Utworzenie funkcji.
'**********************************************************************************************************
Public Function czyPrawidlowyArkusz(arkusz As Excel.Worksheet) As Boolean
    Const NAZWA_METODY As String = "czyPrawidlowyArkusz"
    '------------------------------------------------------------------------------------------------------
    Dim strNazwaArkusza As String
    '------------------------------------------------------------------------------------------------------

    On Error Resume Next
    strNazwaArkusza = arkusz.name

    'Jeżeli nazwa podanego arkusza została przypisana do zmiennej [strNazwaArkusza], oznacza to, że arkusz
    'jest prawidłowy i można odwoływać się do jego właściwości bez obawy o pojawienie się błędów.
    czyPrawidlowyArkusz = VBA.Len(strNazwaArkusza)

End Function