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