こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBAで年齢を求める(Win2000、Office2000)

現在、VBAでExcelのシートに書き込むフォームを作っており、日付に関することで困っています。
フォーム上には複数のComboBox、TextBoxが並んでおり、OKボタンをクリックすることで、フォーム上に並んだ、ComboBox、TextBoxの値をセルに書き込むようにしています。
ユーザーフォーム上に
年を入力するComboBox1 → 1972
月を入力するComboBox2 → 1
日を入力するComboBox3 → 1
*いづれも、プルダウンから数字を選択して入力するようにしています。
この3つの入力値を合わせて、1972/01/01と認識させて、TextBox1に"32"才と表示させたいのですが・・・現在、3つのComboBoxから日付を変数にセットするところまで出来ています。

Private Sub ComboBox3_Change()
Dim B As Date
B = Me.ComboBox1.Value & "/" & Me.ComboBox2.Value & "/" & Me.ComboBox3.Value

問題は、このあと誕生日を求める方法がわからず困っています。
*TextBox1に表示されるタイミングは、日を入力するComboBox3が入力された時としたいです。

宜しくお願い致します。

投稿日時 - 2004-05-07 13:23:58

QNo.850896

すぐに回答ほしいです

質問者が選んだベストアンサー

訂正です。


Dim B As Integer

If Trim(Year(Now)) = Me.ComboBox1.Value Then
'同年の場合、0歳とする
B = 0
Else
'去年末時点の年数を数える
B = Year(Now) - Me.ComboBox1.Value - 1

'今年の誕生日を迎えていたら1年プラスする
If Format(Now, "mm/dd") >= Format(Me.ComboBox2.Value & "/" & Me.ComboBox3.Value, "mm/dd") Then
B = B + 1
End If
End If

Me.TextBox1.Text = B

投稿日時 - 2004-05-07 14:25:14

お礼

ご丁寧にありがとうございます。

投稿日時 - 2004-05-07 14:27:17

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

DatediffやWorksheetFunction.Datedifなど旨く行かず
http://support.microsoft.com/default.aspx?scid=kb;ja;JP407898
に行き着いて、なんとか結果がでました。
Private Sub TextBox3_LostFocus()
Dim d1 As Double
Dim d2 As Double
Dim S As String

d1 = DateSerial(TextBox1.Text, TextBox2.Text, TextBox3.Text)
d2 = Date

S = "Datedif(" & d1 & "," & d2 & "," & """Y""" & ") "
yy = Evaluate(S)
Cells(1, "A") = yy
End Sub
こんなやり方しかないのか、疑問を持ちつつ。

投稿日時 - 2004-05-07 15:03:07

お礼

ありがとうございます。
お時間をとらせてすみません。

投稿日時 - 2004-05-07 15:30:15

ANo.2

Dim B As Integer

'去年末時点の年数を数える
B = Year(Now) - Me.ComboBox1.Value - 1

'今年の誕生日を迎えていたら1年プラスする
If Format(Now, "mm/dd") >= Format(Me.ComboBox2.Value & "/" & Me.ComboBox3.Value, "mm/dd") Then
B = B + 1
End If

Me.TextBox1.Text = B

投稿日時 - 2004-05-07 14:10:06

お礼

早速ありがとうございます。大変助かりました。

投稿日時 - 2004-05-07 14:26:05

ANo.1

Date型と
DateValue,DateDiff,DateSerial等を用いてみては?
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_k08.htm

投稿日時 - 2004-05-07 13:37:31

お礼

ありがとうございます。いろいろと参考になります。

投稿日時 - 2004-05-07 14:26:38

あなたにオススメの質問