トップ回答者
年齢表示のやりかた

質問
-
VBA初心者です。 ユーザーフォームを使って、名簿の入力をやりたいと思っているのですが、年月の表示がうまくできません。
基準となる年月日をテキストボックスに入力して、それを元に生年月日から満年齢を表示させたいと思っています。
今日現在の日時での表示は何とかなったのですが、基準年月日を組み込むことができません。 また、これと同じように、所属の通算年月を表示させたいのですが、うまくできません。 (〇年〇月のように) どのようなやり方をすればよいのかわからずにつまずいてしまいました。
よい方法がありましたら、ご教授お願いいたします。 入力、表示はすべてテキストボックスを使用しています。すべてのデータを入力後、コマンドボタンでシートに飛ばそうと思っています。
Private Sub txt生年月日_Change()
With Me.txt生年月日
If Not IsDate(.Value) Then Exit Sub
Me.txt年齢.Value = Application.Evaluate("datedif(""" & CDate(.Value) & """,today(),""y"")")
End With
End Sub
回答
-
k-nt さんからの引用 コードですが、テキストボックスの基準年月日を変数に指定して、組み込むことで大丈夫でしょうか?
txt基準年月日も日付であるかどうかを確認した方が良いと思います。
また、CDate(.Value)の後で文字列連結をされていますが、これではCDateで日付型に変換する意味がありません。文字列連結時に再び文字列型に変換されています。
あと、どのような環境でVBAを使用されているのかわからないのですが、可能であればカレンダーコントロールやDTPickerなどの日付を扱うコントロールの使用もご検討されると良いと思います。
すべての返信
-
早速の返信ありがとうございました。today()を変えることで、できるのですね。早速やってみます。
通算年月については、無理せずに、年と月の二つのテキストボックスを使うことで、何とかなりそうです。ですが、せっかくのアドバイスですので、こちらもチャレンジしてみたいと思います。
コードですが、テキストボックスの基準年月日を変数に指定して、組み込むことで大丈夫でしょうか?とにかくいろいろとやってみます。
Private Sub txt生年月日_Change()
txtkijyunn=txt基準年月日
With Me.txt生年月日
If Not IsDate(.Value) Then Exit Sub
Me.txt年齢.Value = Application.Evaluate("datedif(""" & CDate(.Value) & """,txtkijyunn,""y"")")
End With
End Sub -
k-nt さんからの引用 コードですが、テキストボックスの基準年月日を変数に指定して、組み込むことで大丈夫でしょうか?
txt基準年月日も日付であるかどうかを確認した方が良いと思います。
また、CDate(.Value)の後で文字列連結をされていますが、これではCDateで日付型に変換する意味がありません。文字列連結時に再び文字列型に変換されています。
あと、どのような環境でVBAを使用されているのかわからないのですが、可能であればカレンダーコントロールやDTPickerなどの日付を扱うコントロールの使用もご検討されると良いと思います。