Funkcja nastepnaWidocznaKolumna
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 nastepnaWidocznaKolumna 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
'**********************************************************************************************************
' Nazwa: nastepnaWidocznaKolumna
' Autor: mielk | 2013-03-24
'
' Opis: Funkcja zwracająca numer następnej widocznej kolumny w lewo lub w prawo od podanej
' kolumny w określonym arkuszu Excela
'
' Argumenty:
' arkusz Arkusz, na którym przeprowadzone będzie szukanie następnej widocznej kolumny.
' poczatkowaKolumna Początkowa kolumna, z której rozpoczyna się szukanie następnej widocznej kolumny.
' kierunek Kierunek poszukiwania następnej widocznej kolumny.
' * Jedyne dostępny wartości dla tego parametru to xlToLeft i xlToRight.
' * Teoretycznie do funkcji można też podać inne kierunki zdefiniowane w enumeracji
' xlDirection (xlUp i xlDown), ale funkcja zwróci w takim przypadku 0,
' ponieważ kolumny nie mogą być przeszukiwane pionowo.
'
' Zwraca:
' Long Numer indeksu następnej widocznej kolumny w stronę określoną przez parametr
' [kierunek], począwszy od podanej kolumny w określonym arkuszu.
'
' Funkcja zwraca 0, jeżeli w lewą (lub prawą stronę, w zależności od wartości
' parametru [kierunek]) od podanej kolumny nie ma żadnej widocznej kolumny.
'
' Żeby uzyskać numer indeksu pierwszej widocznej kolumny w całym arkuszu Excela,
' wystarczy wywołać tę funkcję z następującymi argumentami wejściowymi:
' poczatkowaKolumna = 0 oraz kierunek = xlRight.
'
'
' 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 nastepnaWidocznaKolumna(arkusz As Excel.Worksheet, kolumnaStartowa As Long, _
kierunek As XlDirection) As Long
Const NAZWA_METODY As String = "nastepnaWidocznaKolumna"
'------------------------------------------------------------------------------------------------------
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.xlToLeft: intPrzesuniecie = -1 '|
Case Excel.xlToRight: intPrzesuniecie = 1 '|
Case Else '|
nastepnaWidocznaKolumna = kolumnaStartowa '|
GoTo PunktWyjscia '|
End Select '|
'----------------------------------------------------------------------------------------------------|
'Przechodź przez kolejne kolumny w lewo lub w prawo od wskazanej kolumny (w zależności od -----------|
'wartości parametru [kierunek], tak dugo aż natrafisz na widoczną kolumnę. '|
nastepnaWidocznaKolumna = kolumnaStartowa '|
Do '|
nastepnaWidocznaKolumna = nastepnaWidocznaKolumna + intPrzesuniecie '|
If Not arkusz.columns(nastepnaWidocznaKolumna).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