Digital_Neko

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

Excel VBA日付の入力チェック

今回はセルに入力された日付が、存在しない日付ではないかをチェックするプログラムです。Date型の変数を定義し、セルに入力された日付を変数に代入することで、日付の存在チェックを行います。

クラスモジュールに日付確認用のメソッドを記述します。またシートに「年、月、日」を入力する欄をSheet2に作成します。入力シートは図1になります、結果の欄にTRUE、FALSEが表示されます。

図1.年、月、日入力シート Sheet2

次にクラスモジュール(クラス名「Class」)に記述するプログラムは図2.になります。

図2.クラスモジュール

図2のクラスモジュールでは日付をチェックするメソッド「isMyDateCheck」を定義しています。また日付をチェックするシートを設定する、プロパティプロシージャを記述しています。コンストラクタ「Class_Initialize」も記述しています。

メソッド「isMyDateCheck」では、「年、月、日」を引数として受け取り、日付型の変数「myDate」に代入しています。そうすることで、存在しない日付かチェックします。ここでポイントは、このままだとエラーで止まってしまうので、「On Error Resume Next」を利用してエラーが起きてもプログラムを止めないようにします。

そして、「Err.Number」でエラー番号が「0」以外の場合をキャッチして、関数の戻り値が「True」、「False」になるようにしています。次に、実行用の標準モジュールを記述します。プログラムは図3になります。

図3.標準モジュール

図3の標準モジュールでは、インスタンスを生成し、最初に作業するシートを「Sheet2」に設定しています。そして、「Sheet2」をアクティブにします。

次に「年:myYear」に図1の2行1列目のセルの値を代入します。同様に「月:myMonth」に2行2列目のセルの値を、「日:myDay」には2行3列目のセルの値を代入しています。

最後に標準モジュールのプログラムを実行すると、「Sheet2」の「2行4列目」に「TRUE、FALSE」が表示されます。

今回は日付型の変数に、セルに入力した日付を代入することで、日付の存在チェックをする方法を説明しました。もしVBAでアプリを作る際に参考になれば幸いです。