|
ฟังค์ชั่นในการคำนวณหาอายุ หรือความแตกต่างของเวลา สามารถรีเทิร์นค่าเป็นจำนวนปี เดือน วัน ...
- ' /-----------------------------------------------------------------------------------
- ' / ฟังค์ชั่นที่ใช้คำนวณหาอายุ และคืนค่ากลับแบบ String
- ' / เราสามารถคืนค่ากลับ สามารถแยกเป็นปี เดือน วัน 3 ค่าได้
- ' / ด้วยเทคนิคง่ายๆ คือ การใช้เครื่องหมาย Colon คั่นเอาไว้ เช่น ปี:เดือน:วัน
- ' / โดยทางฝั่งที่เรียกมาหายังฟังค์ชั่น ก็ใช้คำสั่ง Split เพื่อแยกค่าออกจากกัน
- Public Function CalcAge(sDate As Date, eDate As Date) As String
- ' /-----------------------------------------------------------------------------------
- Dim vDays As Integer
- Dim vMonths As Integer
- Dim vYears As Integer
- ' Parameters:
- ' sDate - ค่าวันเดือนปีเกิด (หรือวันเดือนปีที่ต้องการคำนวณหา)
- ' eDate - คำนวณเทียบกับวันเดือนปีปัจจุบัน (Now())
- ' Results:
- ' vYears - เก็บค่าความแตกต่างของจำนวนปี
- ' vMonths - เก็บค่าความแตกต่างของจำนวนเดือน
- ' vDays - เก็บค่าความแตกต่างของจำนวนวัน
-
- ' หาความแตกต่างของจำนวนเดือน
- vMonths = DateDiff("m", sDate, eDate)
- vDays = DateDiff("d", DateAdd("m", vMonths, sDate), eDate)
- If vDays < 0 Then
- vMonths = vMonths - 1
- vDays = DateDiff("d", DateAdd("m", vMonths, sDate), eDate)
- End If
- vYears = vMonths \ 12 ' หารตัดเศษก็จะได้จำนวนปี
- vMonths = vMonths Mod 12 ' การหารเอาเศษ โดยจะมีค่าระหว่าง 0, 1, 2, ... 11 ไม่มีทางเท่ากับ หรือ มากกว่า 12
- CalcAge = vYears & " ปี " & vMonths & " เดือน " & vDays & " วัน"
- End Function
คัดลอกไปที่คลิปบอร์ด
การใช้งานต้องระวังปีในแต่ละเครื่องว่าเป็นปี พ.ศ. หรือ ค.ศ. กรณีเครื่องผมเป็นปี ค.ศ.
MsgBox CalcAge("01/01/2019", Format(Now(), "dd/MM/yyyy"))
|
|