Digital_Neko

フリーランスプログラマー

Excel VBA 年 月 日から日付を生成 クラスを利用

今回は、「年」、「月」、「日」から日付を生成するクラスを作成します。
今回使うクラスとモジュールは図1のようになります。

図1 プロジェクト

日付を生成するために使用するクラスは、「CreateDate」。また実際に動作させる
のは標準モジュールのMdlとします。「CreateDate」クラスの中身は、図2のように
なっています。

図2 CreateDateクラス

フィールドには、「年・月・日」を格納する、「year・month・day」を用意します。
さらに、このフィールドに値をセットするメソッド「setDate」を作成します。
「setDate」メソッドの引数に、「年・月・日」を入れると、フィールドに値が
セットされます。

そしてこのフィールドの値を用いて、メソッド「makeDate」で日付を生成します。
ここでDate型のmydate という変数を用意し、フィールド、year、month、day
を連結したものを、mydateに代入します。

mydateはDate型なので、日付でなければエラーとなります。そこでエラーとなった
場合は、エラー処理で関数の戻り値を「False」にします。

正常にmydateに代入ができれば、関数の戻り値を「mydate」とすることにより
日付が返ってきます。

CreateDateクラスの実際の利用方法は、図3となります。Mdlモジュールの中身です。

図3 標準モジュール

CreateDate型の変数 dateobj を宣言します。そしてCreateDate型のインスタンス
を生成します。ここで、setDateメソッドを呼び、日付をセットします。
その後、makeDateメソッドで日付を取得しています。

今回はイミディエイトウインドウに表示しています。setDateメソッドの引数には
年・月・日が「2021 , 8 , 1」と「2021 , 13 , 2」をセットしました。
結果は図4のようになります。

図4 表示結果

引数に「2021 , 8 , 1」とセットした方は、2021/08/01と日付が生成されています。
引数に「2021 , 13 , 2」とセットした方は、13月が存在しないため、False
が返ってきています。

今回はクラスモジュールを利用し、日付を生成する方法を紹介しました。
日付型変数代入のエラー処理で、日付が生成できるか判定しています。

この記事が皆様のお役に立てれば幸いです。