Funkcja nastepnyWidocznyWiersz
korzysta podczas działania z innych nie-wbudowanych funkcji prezentowanych na tej stronie, które w związku z tym również muszą być umieszczone w kodzie projektu dla prawidłowego działania tej funkcji.
Nie uwzględnienie ich w kodzie spowoduje wygenerowanie błędu: Compile error: Sub or Function not defined.
Dodatkowe funkcje wykorzystywane w funkcji nastepnyWidocznyWiersz zostały wymienione poniżej. Klikając w nazwę każdej z nich przeniesiesz się do podstrony zawierającej jej kod:
Dodając powyższe funkcje, zwróć uwagę czy nie były one już wcześniej wykorzystywane w Twoim kodzie. Obecność w jednym projekcie VBA dwóch funkcji publicznych o identycznych nazwach spowoduje wygenerowanie błędu kompilacji o treści: Compile error: Ambiguous name detected: nazwa_funkcji.
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
'**********************************************************************************************************
' Nazwa: nastepnyWidocznyWiersz
' Autor: mielk | 2013-03-24
'
' Opis: Funkcja zwracająca numer następnego widocznego wiersza w górę lub w dół od podanego
' wiersza w określonym arkuszu Excela
'
' Argumenty:
' arkusz Arkusz, na którym przeprowadzone będzie szukanie następnego widocznego wiersza.
' poczatkowyWiersz Początkowy wiersz, z którego rozpoczyna się szukanie następnego widocznego wiersza.
' kierunek Kierunek poszukiwania następnego widocznego wiersza.
' * Jedyne dostępny wartości dla tego parametru to xlUp i xlDown.
' * Teoretycznie do funkcji można też podać inne kierunki zdefiniowane w enumeracji
' xlDirection (xlToLeft i xlToRight), ale funkcja zwróci w takim przypadku 0,
' ponieważ wiersze nie mogą być przeszukiwane horyzontalnie.
'
' Zwraca:
' Long Numer indeksu następnego widocznego wiersza w stronę określoną przez parametr
' [kierunek], począwszy od podanego wiersza w określonym arkuszu.
'
' Funkcja zwraca 0, jeżeli powyżej (lub poniżej, w zależności od wartości parametru
' [kierunek]) od podanego wiersza nie ma żadnego widocznego wiersza.
'
' Żeby uzyskać numer indeksu następnego widocznego wiersza w całym arkuszu Excela,
' wystarczy wywołać tę funkcję z następującymi argumentami wejściowymi:
' poczatkowyWiersz = 0 oraz kierunek = xlDown.
'
'
' Wyjątki:
' NieprawidłowyArkusz Wywoływany, kiedy arkusz Excela przekazany do tej funkcji w parametrze
' [arkusz] znajduje się w pliku, który został już zamknięty.
'
'
'
' --- Zmiany ----------------------------------------------------------------------------------------------
' 2012-04-05 mielk Utworzenie funkcji.
'**********************************************************************************************************
Public Function nastepnyWidocznyWiersz(arkusz As Excel.Worksheet, poczatkowyWiersz As Long, _
kierunek As XlDirection) As Long
Const NAZWA_METODY As String = "nastepnyWidocznyWiersz"
'------------------------------------------------------------------------------------------------------
Dim intPrzesuniecie As Integer
'------------------------------------------------------------------------------------------------------
'Sprawdź, czy arkusz, w którym będziemy szukać pierwszej niepustej kolumny, jest poprawny -----------|
'i można odwoływać się do jego właściwości. Jeżeli arkusz nie jest poprawny, kod przeskakuje '|
'do labelu NieprawidlowyArkusz i kończy działanie fukcji. '|
If Not czyPrawidlowyArkusz(arkusz) Then GoTo NieprawidlowyArkusz '|
'----------------------------------------------------------------------------------------------------|
'----------------------------------------------------------------------------------------------------|
Select Case kierunek '|
Case Excel.xlUp: intPrzesuniecie = -1 '|
Case Excel.xlDown: intPrzesuniecie = 1 '|
Case Else '|
nastepnyWidocznyWiersz = poczatkowyWiersz '|
GoTo PunktWyjscia '|
End Select '|
'----------------------------------------------------------------------------------------------------|
'Przechodź po kolei przez wszystkie wiersze w dół lub w górę od wskazanego wiersza (w zależności ----|
'od wartości parametru [kierunek] i sprawdzaj czy są one widoczne. '|
nastepnyWidocznyWiersz = poczatkowyWiersz '|
Do '|
nastepnyWidocznyWiersz = nastepnyWidocznyWiersz + intPrzesuniecie '|
If Not arkusz.rows(nastepnyWidocznyWiersz).Hidden Then Exit Do '|
Loop '|
'----------------------------------------------------------------------------------------------------|
'==========================================================================================================
PunktWyjscia:
Exit Function
'----------------------------------------------------------------------------------------------------------
NieprawidlowyArkusz:
'Obsługa błędów dla sytuacji, kiedy podany arkusz jest nieprawidłowy i nie można odnieść się do jego
'właściwości (np. plik, w którym znajduje się ten arkusz, został zamknięty).
GoTo PunktWyjscia
End Function