Następny widoczny wiersz


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