Ví dụ: bạn viết 1 ứng dụng quản lý nhân viên có ô ngày sinh, trong code vba sẽ có đoạn khai báo biến lưu ngày sinh, cách viết như sau:
Dim ngaysinh as Date
ngaysinh=#12/31/2000#
Để khai báo biến kiểu ngày ta chỉ cần as Date, để nạp giá trị vào cho biến ngày ta dùng ký từ # 2 bên giá trị ngày.
Chú ý: định nhập là #tháng/ngày/năm#
Ta có thể sử dụng hàm DateValue để chuyển từ kiểu chuổi sang kiểu ngày.
ngay = DateValue("12/17/2024")
Muốn tách ngày ra 1 giá trị kiểu số ta sử dụng Msgbox Day(ngay)
Muốn tách tháng ra 1 giá trị kiểu số ta sử dụng Msgbox Month(ngay)
Muốn tách năm ra 1 giá trị kiểu số ta sử dụng Msgbox Year(ngay)
Dim ngay as Date
ngay = Now
Msgbox ngay ' in ngày giờ hiện hành
Là hàm tăng / giảm thời gian từ giá biến biến kiểu ngày đã có.
Vì dụ:
ngay = DateValue("12/31/2024")
giờ ta muốn biến ngày tăng lên 1, ta không thể lấy 31+1 là 32 được, mà hệ thống phải tự động tính ra là 1/12025.
Ta cần viết: ngay = DateAdd("d", 1, ngay)
ngay = DateAdd("d", -5, ngay) : bạn đoán xem kết quả ngày là bao nhiêu ?
Tính sự khác biệt giữa hai ngày.
Dim daysDifference As Long
daysDifference = DateDiff("d", "01/01/2023", Now) ' Tính số ngày từ 01/01/2023 đến hiện tại
MsgBox daysDifference
Ví dụ:
DimTongNgaySuDung As Long
Dim TongNgayBaoHanh As Long
TongNgayBaoHanh =360 ' bao hanh 1 nam
DimTongNgaySuDung= DateDiff("d", "01/01/2023", Now) ' Tính số ngày từ 01/01/2023 đến hiện tại
MsgBox "Tong ngay su dung san pham: " & DimTongNgaySuDung
if DimTongNgaySuDung>TongNgayBaoHanh then
MsgBox "Da HET BAO HANH"
end if
Trả về một giá trị ngày từ ba tham số: năm, tháng, ngày.
Dim specificDate As Date
specificDate = DateSerial(2025, 1, 8) ' Ngày 8 tháng 1 năm 2025
MsgBox specificDate
' Cách 1: truyền vào 1 hàm ngày
Function dayEndOfMonth(testDate As Date)
dayEndOfMonth= Day(DateSerial(Year(testDate), Month(testDate) + 1, 1) - 1)
End Function
MsgBox dayEndOfMonth(#12/31/2022#)
' Cách 2: truyền vào 1 tham số thang và năm
MsgBox nbDays(2, 2000)
Function nbDays(m, y)
nbDays = Day(DateSerial(y, m + 1, 1) - 1)
End Function
Trả về ngày trong tuần từ một giá trị ngày (1 = Chủ nhật, 2 = Thứ hai, ...).
Dim weekday As Integer
weekday = Weekday(Now) ' Lấy ngày trong tuần hiện tại
MsgBox weekday
Trả về tên của ngày trong tuần từ một giá trị ngày.
Dim weekdayName As String
weekdayName = WeekdayName(Weekday(Now)) ' Lấy tên ngày trong tuần
MsgBox weekdayName
Trả về tên của tháng từ một giá trị tháng.
Dim monthName As String
monthName = MonthName(Month(Now)) ' Lấy tên tháng hiện tại
MsgBox monthName
Trả về một giá trị thời gian từ ba tham số: giờ, phút, giây.
Dim specificTime As Date
specificTime = TimeSerial(15, 30, 0) ' Lúc 15:30:00
MsgBox specificTime
Chuyển đổi một chuỗi thời gian thành kiểu dữ liệu thời gian.
Dim timeFromString As Date
timeFromString = TimeValue("14:30:00")
MsgBox timeFromString
Trong VBA Excel, có rất nhiều hàm xử lý ngày tháng mà bạn có thể sử dụng để làm việc với ngày tháng. Dưới đây là một số hàm phổ biến để xử lý ngày trong VBA Excel: