Funkcje daty i czasu w Excel VBA 9


1. Opis funkcji daty i czasu.

Funkcje daty VBA jak na nazwa wskazuje służą do manipulacji wartościami związanymi z datami i czasem. Na ich podstawie możemy otrzymać z podanej daty dowolny parametr jak dzień, miesiąc, rok itp. Możemy także odejmować od siebie dwie daty. Jeśli chcemy wprowadzić do naszego kodu VBA wartość daty, czasu, bądź wartość daty i czasu jednocześnie, możemy skorzystać z następującego kodu:

2. Wykaz funkcji daty i czasu w VBA

Funkcje daty VBA zamieszczam w tabelce. W pierwszej kolejności poznamy funkcje wskazującą bieżącą datę. Całość poniżej:

FUNKCJAOPIS
DATE()Zwraca bieżącą datę, wg. daty systemu. Funkcję możemy porównać do formuły DZIŚ() z Excela
DATEADD(interval, number, date)Dodaje do podanej określoną liczbę jednostek dat i czasu zgodnie z argumentem interval. Wstawiając znak ujemny przed numerem możemy pomniejszyć wprowadzoną datę. Liczbę jednostek, o którą chcemy zmienić naszą datę podajemy w parametrze number.
DATEDIFF(interval, date_1, date_2)Zwraca różnicę dwóch dat i podaje wynik w formie liczby.
DATEPART(interval, date)Zwraca wartość części daty lub czasu(rok,dzień, godzina itp.) w zależności od podanego parametru interval.
DATESERIAL(year, month, day) Zwraca datę zgodnie z argumentami YMD.
DATEVALUE(string) Zwraca datę z wartości tekstowej
DAY(date)Zwraca dzień miesiąca z podanej daty w formie liczby 0-31
HOUR(date)Zwraca godzinę w formie liczby 0-24
MINUTE(date)Zwraca liczbę minut z podanej daty w formie liczby 0-59
MONTH(date)Zwraca miesiąc z podanej daty w formie liczby 1-12
MONTHNAME(date, [abbreviate])Zwraca nazwę dnia miesiąca z podanej daty. Funkcja posiada drugi argument. Wartość True poda nazwę miesiąca w formie skróconej.
NOW()Zwraca bieżącą datę i czas
TIMESERIAL( hour, minute, second )Zwraca wartość czasu, zgodnie z podanymi parametrami HMS.
TIMEVALUE(String)Zwraca czas z wartości tekstowej
WEEKDAY(date)Zwraca dzień tygodnia z podanej daty
WEEKDAYNAME(number, [abbreviate], [firstdayofweek])Zwraca nazwę słowną dnia tygodnia w zależności od podanego numeru dnia tygodnia. Opcjonalny parametr abbreviate z wartością True poda nazwę miesiąca w formie skróconej. Parametr firstdayofweek ustawiony na 2 oznacza, że pierwszym dniem tygodnia jest poniedziałek.
YEAR(date)Zwraca rok z podanej daty z zakresu 1900-9999

Jak widzisz, część naszych funkcji wykorzystuje jako argumenty interwały czasowe. Są to Interwały dla funkcji DATADD(), DATEDIFF(), DATEPART(). Poniżej tabelka przedstawiająca każdy z interwałów. To właśnie te wartości wpisujemy jako argument funkcji.

InterwałZnaczenie
yyyyRok
qKwartał
mMiesiąc
yDzień roku
dDzień
wDzień tygodnia
wwTydzień
hGodzina
nMinuta
sSekunda

2. Przykład z wykorzystaniem funkcji dat i czasu.

Poniżej krótki przykład. Chcemy sprawdzić, jak działają poznane przed chwilą funkcje. Stwórz program w nowym module. Wprowadźmy do kodu 3 zmienne VBA z wartościami daty, czasu oraz daty i czasu jednocześnie.

Kurs Excel VBA - Funkcje daty VBA

Kurs Excel VBA – Funkcje daty VBA

Plik Excela z naszym przykładem zamieszczam poniżej:

kurs_excel_vba_funkcje_daty

3. Zadania (Rozwiązanie możesz wpisać w komentarzu)

3.1 Oblicz na podstawie daty z dnia dzisiejszego dzień, miesiąc, rok, kwartał.

3.2 Na podstawie bieżącej godziny wstaw do komórek arkusza godzinę, minuty i sekundy

3.3 Sprawdź ile dni zostało do końca roku.

3.4 Sprawdź dzień tygodnia dla daty swoich urodzin.


Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

9 komentarzy do “Funkcje daty i czasu w Excel VBA

  • B

    Sub a()
    Dim data As Date
    data = „2017/07/26”
    Range(„A1”) = (DatePart(„yyyy”, data))
    Range(„A2”) = (DatePart(„y”, data))
    Range(„A3”) = (DatePart(„q”, data))
    End Sub

    Sub b()
    Range(„B1”) = Hour(Now())
    Range(„B2”) = Minute(Now())
    Range(„B3”) = Second(Now())
    End Sub

    Sub c()
    Dim koniec As Date
    Dim teraz As Date
    koniec = „2017/12/31”
    teraz = „2017/07/26”
    Range(„C1”) = DateDiff(„d”, teraz, koniec)
    End Sub

    Sub d()
    Range(„D1”) = Weekday(yyyy / mm / dd)
    End Sub

  • GreG

    Sub daty1()

    Range(„G4”) = DatePart(„d”, Date) & ” ” & MonthName(DatePart(„m”, Date), False) & ” ” & DatePart(„yyyy”, Date) & ” qwartał ” & DatePart(„q”, Date)
    Range(„G5”) = Hour(Time) & „:” & Minute(Time) & „:” & Second(Time)
    Range(„G6”) = DateDiff(„d”, Date, „2017 – 12 – 31”)
    Range(„G7”) = Weekday(DateValue(„16 września 1994”), vbMonday)

    End Sub

  • Grzegorz_Gie

    Sub zadanie_15()
    MsgBox (Day(Date) & vbCrLf & Month(Date) & vbCrLf & Year(Date) & vbCrLf & DatePart(„q”, Date))
    End Sub

    Sub zadanie_15_2()
    Range(„b1”).Value = DatePart(„h”, Now)
    Range(„b2”).Value = DatePart(„n”, Now)
    Range(„b3”).Value = DatePart(„s”, Now)
    End Sub

    Sub zadanie_15_3()
    MsgBox (DateDiff(„d”, Date, „31-12-2018”))
    End Sub

    Sub zadanie_15_4()
    MsgBox (Weekday(„10-04-1985”, vbMonday))
    End Sub

  • Artur

    Nie powiem trochę się namęczyłem, żeby to krótkie było 🙂 Ogólnie super kurs !

    Public Function DataUrodzenia(PESEL As String) As String
    DataUrodzenia = DateSerial(Left(PESEL, 2), Mid(PESEL, 3, 2), Mid(PESEL, 5, 2))
    End Function

    Public Function DniDoKoncaRoku() As String
    DniDoKoncaRoku = DateDiff(„d”, Date, DateSerial(Year(Date), 12, 31))
    End Function

     

  • Anonim

    3.1

    Option Explicit
    Sub FormulyDaty3()

    Dim datDate As Date
    datDate = Date

    MsgBox datDate
    MsgBox DatePart(„d”, datDate)
    MsgBox DatePart(„m”, datDate)
    MsgBox DatePart(„yyyy”, datDate)
    MsgBox DatePart(„q”, datDate)

    End Sub

    3.2

    Option Explicit
    Sub FunkcjeDaty4()

    Range(„D1”) = Hour(Time)
    Range(„D2”) = Minute(Time)
    Range(„D3”) = DatePart(„s”, Time)

    End Sub

    3.3

    Option Explicit
    Sub FunkcjeDaty5()

    MsgBox (DateDiff(„d”, Date, „2018/12/31”))

    End Sub

  • Agnieszka

    Sub Zadanie()

    Range(„A1”) = Day(Now())
    Range(„A2”) = Month(Now())
    Range(„A3”) = Year(Now())
    Range(„A4”) = DatePart(„q”, Now())
    Range(„A5”) = Hour(Now())
    Range(„A6”) = Minute(Now())
    Range(„A7”) = DatePart(„s”, Now())
    Range(„A8”) = DateSerial(2018, 12, 31) – Date
    Range(„A9”) = WeekdayName((Weekday(1973 / 2 / 24)), True, 2)

    End Sub

  • Weronika

    Sub DatyA()

    Cells(1, 1) = „Data:”
    Cells(1, 2) = Date
    Cells(2, 1) = „Dzień:”
    Cells(2, 2) = DatePart(„d”, Date)
    Cells(3, 1) = „Miesiąc:”
    Cells(3, 2) = DatePart(„m”, Cells(1, 2))
    Cells(4, 1) = „Rok:”
    Cells(4, 2) = DatePart(„yyyy”, Cells(1, 2))

    End Sub

    Sub DatyB()

    Dim Czas As String

    Cells(6, 1) = „Data i czas:”
    Cells(6, 2) = Now()
    Czas = Now()

    Cells(7, 1) = „Godzina:”
    Cells(7, 2) = DatePart(„h”, Czas)

    Cells(8, 1) = „Minuta:”
    Cells(8, 2) = DatePart(„n”, Czas)

    Cells(9, 1) = „Sekunda:”
    Cells(9, 2) = DatePart(„s”, Czas)

    End Sub

    Sub DatyC()

    Dim Sylwester As Date

    Sylwester = „2021/12/31”

    'Sposób 1
    Cells(11, 1) = „Ile dni do końca roku (1):”
    Cells(11, 2) = 365 – DatePart(„y”, Cells(1, 2))

    'Sposób 2
    Cells(12, 1) = „Ile dni do końca roku (2):”
    Cells(12, 2) = DateDiff(„y”, Cells(1, 2), Sylwester)

    End Sub

    Sub DatyD()

    Dim Urodziny As Date

    Urodziny = „1992/9/16”

    Cells(14, 1) = „Dzień tygodnia z daty urodzin:”
    Cells(14, 2) = WeekdayName(Weekday(Urodziny), False, 1)

    End Sub