Hàm tính tuổi bằng VBA

Liên hệ QC

Quang_Hải

Thành viên gạo cội
Tham gia
21/2/09
Bài viết
6,040
Được thích
7,932
Nghề nghiệp
Làm đủ thứ
Mấy hôm rồi có công việc liên quan đến việc cần tính tuổi chính xác của người phụ thuộc để hưởng giảm trừ thuế TNCN
Nếu dùng hàm Datedif thì VBA không hỗ trợ. Loay hoay tìm trên GPE nhưng không tìm được (chắc trước giờ không ai có nhu cầu). Sau mấy hôm vật vã thì mình tạm thời áp dụng code này. Nay post lên để mọi người góp ý nếu cần phải hoàn thiện thêm, và cũng để cho ai có nhu cầu
Mã:
Public Function ExactAge(BirthDate As Variant) As String
Dim YearOld As Integer, MonthOld As Integer, DayOld As Integer, DOB As Date
 If Not IsDate(BirthDate) Then Exit Function
 DOB = CDate(BirthDate)
 If DOB > Date Then Exit Function
 YearOld = Year(DOB)
 MonthOld = Month(DOB)
 DayOld = Day(DOB)
 YearOld = Year(Date) - YearOld
 MonthOld = Month(Date) - MonthOld
 DayOld = Day(Date) - DayOld
 If Sgn(DayOld) = -1 Then
     DayOld = 30 - Abs(DayOld)
     MonthOld = MonthOld - 1
 End If
 If Sgn(MonthOld) = -1 Then
     MonthOld = 12 - Abs(MonthOld)
     YearOld = YearOld - 1
 End If
ExactAge = YearOld & " Year(s) " & MonthOld & " Month(s) " & DayOld & " Day(s) old."
End Function
 
Hàm như thế là bị giới hạn.
Nếu làm đúng thì phải có (optional) tham số thứ hai, "tính đến ngày". Nếu tham số này là 0 thì lấy ngày hiện tại.
 
Upvote 0
Hàm như thế là bị giới hạn.
Nếu làm đúng thì phải có (optional) tham số thứ hai, "tính đến ngày". Nếu tham số này là 0 thì lấy ngày hiện tại.
Ah, đúng ra phải nên thêm tham số mà anh góp ý. Sẽ bổ sung tham số này cho hoàn thiện thêm.
Cảm ơn anh
 
Upvote 0
Web KT
Back
Top Bottom