Nagłówek kolumny


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
'**********************************************************************************************************
' Nazwa:                naglowekKolumny
' Autor:                mielk | 2012-02-22
'
' Opis:                 Funkcja zwraca literowy symbol kolumny o określonym indeksie.
'
' Argumenty:
'   indeksKolumny       Numer kolumny, której symbol ma być zwrócony przez funkcję.
'                       * Argument musi być liczbą całkowitą większą od zera. Jeśli argument jest mniejszy
'                         lub równy zeru, zwracany jest wyjątek UjemnyIndeksKolumny.
'
' Zwraca:
'   String              Symbol kolumny o podanym numerze indeksu.
'                       * Jeżeli podany indeks kolumny jest mniejszy niż 0, zwracany jest pusty
'                         ciąg znaków.
'                       * Funkcja obsługuje większy zakres indeksów niż liczba kolumn w jakiejkolwiek
'                         wersji Excela, z uwagi na możliwe zwiększenie tej liczby w przyszłych wersjach
'                         Excela.
'
'
' Wyjątki:
'   UjemnyIndeksKolumny             Wywoływany kiedy numer kolumny przekazany do funkcji jest ujemny albo
'                                   równy zero.
'
'
' --- Zmiany ----------------------------------------------------------------------------------------------
' 2012-02-22        mielk           Utworzenie funkcji.
'**********************************************************************************************************
Public Function naglowekKolumny(indeksKolumny As Long) As String
    Const NAZWA_METODY As String = "naglowekKolumny"
    '------------------------------------------------------------------------------------------------------
    Const ALFABET_LICZNIK As Byte = 26
    Const ASCII_PRZED_A As Byte = 64
    '------------------------------------------------------------------------------------------------------
    Dim lTemp As Long
    Dim iLitera As Integer
    '------------------------------------------------------------------------------------------------------


    'Funkcja sprawdza czy podany indeks kolumny jest większy od zera. Jeśli nie, wykonywanie kodu -------|
    'przenoszone jest do wyjątku UjemnyIndeksKolumny.                                                   '|
    If indeksKolumny <= 0 Then GoTo UjemnyIndeksKolumny                                                 '|
    '----------------------------------------------------------------------------------------------------|


    '----------------------------------------------------------------------------------------------------|
    lTemp = VBA.Int(indeksKolumny)                                                                      '|
    Do                                                                                                  '|
        iLitera = lTemp Mod ALFABET_LICZNIK                                                             '|
        If iLitera = 0 Then iLitera = ALFABET_LICZNIK                                                   '|
        naglowekKolumny = VBA.Chr$(iLitera + ASCII_PRZED_A) & naglowekKolumny                           '|
        lTemp = Excel.WorksheetFunction.RoundUp((lTemp - ALFABET_LICZNIK) / ALFABET_LICZNIK, 0)         '|
    Loop While lTemp > 0                                                                                '|
    '----------------------------------------------------------------------------------------------------|



'==========================================================================================================
PunktWyjscia:
    Exit Function

'----------------------------------------------------
UjemnyIndeksKolumny:
    '(...)
    'Obsługa błędów dla sytuacji, kiedy numer kolumny przekazany do funkcji jest ujemny lub równy zeru.

    GoTo PunktWyjscia

End Function