Liczba dni w miesiącu


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
'**********************************************************************************************************
' Nazwa:                ileDniWMiesiacu
' Autor:                mielk | 2012-03-11
'
' Opis:                 Funkcja zwraca liczbę dni w podanym miesiącu.
'
' Argumenty:
'     miesiac           Miesiąc, dla którego ma zostać zwrócona liczba dni.
'                       Jeżeli wartość tego argumentu wykracza poza zakres 1-12, do kalkulacji przyjmowany
'                       jest miesiąc z poprzednich lub następnych lat, np. miesiąc o numerze 14 dla roku
'                       2012 oznacza de facto luty 2013, miesiąc 0 dla roku 2012 to grudzień 2011, a
'                       miesiąc -3 dla roku 2012 to wrzesień 2011.
'     rok               Argument opcjonalny.
'                       Rok, w którym znajduje się rozpatrywany miesiąc. Jeżeli argument jest pominięty,
'                       domyślnie przyjmowany jest aktualny rok.
'
'
' Zwraca:
'     Byte              Liczba dni w określonym miesiącu określonego roku.
'
'
' --- Zmiany ----------------------------------------------------------------------------------------------
' 2012-03-11        mielk           Utworzenie funkcji.
'**********************************************************************************************************
Public Function ileDniWMiesiacu(miesiac As Integer, Optional rok As Integer) As Byte
    Const NAZWA_METODY As String = "ileDniWMiesiacu"
    '------------------------------------------------------------------------------------------------------
    Dim iRok As Integer
    '------------------------------------------------------------------------------------------------------

    'Przypisz do zmiennej [iRok] wartość przekazanego argumentu [rok] lub aktualny rok, -----------------|
    'jeżeli ten argument został pominięty.                                                              '|
    If rok = 0 Then                                                                                     '|
        iRok = VBA.Year(VBA.Date)                                                                        '|
    Else                                                                                                '|
        iRok = rok                                                                                      '|
    End If                                                                                              '|
    '----------------------------------------------------------------------------------------------------|


    ileDniWMiesiacu = VBA.Day(VBA.DateSerial(iRok, miesiac + 1, 1) - 1)


End Function