Dodawanie czasu do daty możemy wykonać na wiele różnych sposobów. Najbezpieczniej jest to zrobić za pomocą wbudowanej funkcji. VBA oferuje pod tym względem szerokie pole manewru. W tym artykule omówię trzy z nich: TimeSerial, TimeValue i DateAdd.
Treść zadania
Nasze zadanie polega na tym, aby do dzisiejszej daty, dodać 10 godzin i 30 minut.
TimeSerial
Wykorzystanie funkcji TimeSerial jest wg mnie najlepszym rozwiązaniem. Wynika to z faktu, że funkcja ma prostą budowę i jest bardzo intuicyjna.
Składa się z trzech argumentów (godzina, minuta, sekunda), więc nie różni się ona od funkcji arkuszowej CZAS. Można nawet powiedzieć, że jest jest odpowiednikiem w VBA.
Każdy z argumentów jest typu Integer, więc możemy z powodzeniem wykorzystać tą funkcję np. w pętli For Next.
Dodawanie czasu do daty jest banalnie proste, wystarczy uzupełnić argumenty funkcji TimeSerial.
TimeValue
Funkcja TimeValue jako argument przyjmuje prosty ciąg tekstowy składający się z godzin, minut i sekund.
Odpowiednikiem Excelowym TimeValue jest funkcja CZAS.WARTOŚĆ.
Dodawanie czasu do daty również jest proste, ale trudniejsze niż w przypadku TimeSerial. W tym celu należy podać odpowiedni ciąg tekstowy.
DateAdd
Funkcja DateAdd jest najmniej znana spośród wszystkich trzech wymienionych. Nie ma ona także swojego arkuszowego odpowiednika.
Posiada pewne ograniczenie, które polega na tym, że możemy dodać tylko jedną jednostkę czasu (np. godziny). Oczywiście problem ten możemy rozwiązać zagnieżdżając funkcję DateAdd.
Funkcja posiada nieco inną konstrukcję. Pierwszy parametr typu String określa jednostkę czasu (największą jest rok, najmniejszą sekunda), drugi parametr typu Double to konkretna liczba, zaś trzeci parametr typu Date to po prostu data wyjściowa.