Hàm xử lý ngày trong VBA Excel

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:

  1. Biến kiểu ngày trong VBA Excel
  2. Hàm DateValue VBA
  3. Hàm Day
  4. Hàm Month
  5. Hàm Year
  6. Hàm lấy ngày giờ hiện hành từ máy tính NOW
  7. Hàm DateAdd
  8. DateDiff
  9. DateSerial
  10. Hàm xác định tổng số ngày trong VBA (ngày cuối của tháng VBA)
  11. Hàm Weekday
  12. WeekdayName
  13. MonthName
  14. TimeSerial
  15. TimeValue

Biến kiểu ngày trong VBA Excel

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#

Hàm DateValue VBA

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")

Hàm Day

Muốn tách ngày ra 1 giá trị kiểu số ta sử dụng Msgbox Day(ngay)

Hàm Month

Muốn tách tháng ra 1 giá trị kiểu số ta sử dụng Msgbox Month(ngay)

Hàm Year

Muốn tách năm ra 1 giá trị kiểu số ta sử dụng Msgbox Year(ngay)

Hàm lấy ngày giờ hiện hành từ máy tính NOW

Dim ngay as Date
ngay = Now
Msgbox ngay ' in ngày giờ hiện hành

Hàm DateAdd

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 ?

Khóa học vba excel free

DateDiff

    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

 

DateSerial

    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

Hàm xác định tổng số ngày trong VBA (ngày cuối của tháng VBA)

' 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

Hàm Weekday

    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

WeekdayName

    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

MonthName

    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

TimeSerial

    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

TimeValue

    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

Khóa học vba excel free

 

Bài viết liên quan:

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: