0
我想通過使用VBA獲得兩個文本框內容之間的差異來計算年齡。從文本框中查找兩個日期的差異
我試了很多代碼沒有工作,最後我使用了下面的模塊。用戶表單將顯示Excel表單中的結果。
我想知道如何僅使用用戶表單文本框計算年齡。
模塊:
Function Age(Date1 As Date, Date2 As Date) As String
Dim d As Long, m As Long, y As Long
If Date2 < Date1 Then
Age = "-error-"
Exit Function
End If
m = DateDiff("m", Date1, Date2)
d = DateDiff("d", DateAdd("m", m, Date1), Date2)
If d < 0 Then
m = m - 1
d = DateDiff("d", DateAdd("m", m, Date1), Date2)
End If
y = m \ 12
m = m Mod 12
If y > 0 Then
Age = y & " Year"
If y > 1 Then
Age = Age & "s"
End If
End If
If Age <> "" And m > 0 Then
Age = Age & ", "
End If
If m > 0 Then
Age = Age & m & " Month"
If m > 1 Then
Age = Age & "s"
End If
End If
If Age <> "" And d > 0 Then
Age = Age & ", "
End If
VBA在用戶形式使用是:
Private Sub txtDoB_AfterUpdate()
row_number = 0
Do
DoEvents
row_number = row_number + 1
item_in_review = Sheets("Data").Range("A" & row_number)
If item_in_review = txtSN.Text Then
Sheets("Data").Range("B" & row_number) = txtDoB.Text
txtAge.Value = Sheets("Data").Range("D" & row_number)
End If
Loop Until item_in_review = ""
End Sub
你能給出一些例子' Date1'和'Date2'?並告訴我們你期望的結果是什麼樣的日期。 –
ex。,日期1爲2009年4月20日,日期2爲2013年9月15日 所以結果應該是4年,4個月,26日 – user3024687
你是否以這種方式寫下文字'2009年4月20日'或作爲日期'2009-04-20'。這些日期的「年齡函數」的預期結果是什麼? –