Funkcje daty i czasu w Excel VBA 8


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 email nie zostanie opublikowany.

8 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