生年月日から現在の年齢を取得するMyRecord業務の効率化に役立つ情報を発信します。「Excel」ではDATEDIF【デイトディファレンス】関数で簡単に満年齢がもとめられますが、VBA関数には、DATEDIF【デイトディファレンス】関数と同じ働きをする関数はありません。ワークシート上で入力されている生年月日から満年齢をもとめる場合は、VBAを使う必要はないとおもいますが、例えば、ユーザーにInputBox【インプットボックス】に生年月日を入力してもらい、年齢をMsgbox【メッセージボックス】で返すケースやユーザーフォームで生年月日をテキストボックスに入力したら自動的に年齢が表示されるようなことは、VBAでなければ実現できません。InputBox【インプットボックス】にユーザーが入力した生年月日からMsgbox【メッセージボックス】に現在の年齢を表示するコードとユーザーフォームのTextBox1【テキストボックスワン】にユーザーが生年月日を入力したらTextBox2【テキストボックスツゥ】に年齢を表示するコードをご紹介します。InputBox("生年月日を入力してください。"入力形式がちがいます。】Inputbox【インプットボックス】関数を使用しでユーザーから受け取る「生年月日」を表す文字列を格納する変数「生年月日」をバリアント型(Variant)で宣言します。】DateDiff【デイトディファレンス】関数とFormat【フォーマット】関数を使用して計算した年齢を格納する変数「年齢」をバリアント型(Variant)で宣言します。】6行目の条件分岐でIsDate【イズデイト】関数の条件が一致しなかった場合。Inputbox【インプットボックス】関数に入力された値が日付に変換できない場合に、11行目のGoTo【ゴットゥ】ステートメントでこの位置まで処理が戻ります。InputBox(“生年月日を入力してください。日付データであるときを定義します。】6行目の条件分岐で条件が成立した場合(Trueの場合)に処理が行われます。DateDiff【デイトディフ】関数を使用して現在日(Date)から変数「生年月日」の年(“yyyy”)の差を計算します。月日を取り出して比較演算子で比較をします。格納されている誕生日の月日が現在の月日を超えていない場合(本年の誕生日が過ぎた場合)はFalse(0)が返るので、これを利用してDateDiff【デイトディフ】関数で求めた年数に本年の誕生日が過ぎたら(0)誕生日がきていなかったら(-1)を加算することで満年齢を求めて、変数「年齢」に代入します。】MsgBox【メッセージボックス】関数を使用して変数「年齢」に格納されている年齢をを表示します。“入力形式がちがいます。日付データに変換できないときMsgBox【メッセージボックス】関数でメッセージをだします。日付データに変換できないとき、GoTo【ゴウトゥ】ステートメントを使用して4行目の【戻る:】まで処理を戻します。"入力形式がちがいます。SubTextBox1のテキストボックスに入力されたデータが更新された直後に発生するAfterUpdateイベントプロシージャ内にコードを記述します。詳しくは、「テキストボックスのイベント」をご覧ください。「ユーザーフォームを操作する」をご覧ください。内容的には、上記のInputBox【インプットボックス】関数を使用したコードを同じです。以上で、生年月日から現在の年齢を取得する方法についての解説を終了します。ありがとうございました。