[ VBA ] 有効な日付か妥当性を検証する ( IsDate 関数 )

Pocket

VBAで有効な日付か判定したい場合には IsDate 関数を使用することが簡単です。ここでは、日付の妥当性の検証を行うサンプルスクリプトを掲載しています。

スポンサーリンク

日付の妥当性を検証する

Private Sub CommandButton1_Click()
    Dim d As Date
    d = "2014/01/13"
 
    ' 正しい日付であるか確認
    If IsDate(d) Then
 
        MsgBox "正しい日付です"

    End If
End Sub

連続した数値も日付として扱いたい場合(yyyymmdd 形式)

プログラムや入力の都合上、以下のように日付を数値の連続のみで表現している場合には日付型の文字列に変換したのち、判定を行う方法があります。

Private Sub CommandButton1_Click()

    Dim d As Variant
    d = "20140113"
 
    ' 8桁の数値であるか確認する
    If IsNumeric(d) And Len(d) = 8 Then
 
        ' 日付を表す文字列に変換してからIsDate関数で判定する
        If IsDate(Format(CStr(d), "####/##/##")) = True Then
            MsgBox "正しい日付です"
        End If
    End If
End Sub

同じコーディングを行うことについて

大なり小なり車輪の再発明と言うものは存在します。馬鹿げていると言うことは理解できますが、難しい問題だと思います。VBA に限った話ではありませんが、日付の妥当性検証やファイルの入出力などのような良く行う処理については全社的にライブラリなどを作成して使用したほうが良いでしょう。ライブラリに関しては毎回毎回、単体テストを行う必要もありません。

しかし、大前提として綺麗に設計されたライブラリとして管理する人が必要です。汚いライブラリならないほうがマシです。

偉そうに言ってはみましたが、私の勤める会社ではライブラリは難しいと思います。私も力不足です。管理する自信はありません。最後に軽く愚痴って締めることとします。

プロジェクトで困ることアルアル

  • 自社製のフレームワークを使用させられる
  • 自社製のライブラリを使用させられる
  • ただし、作ってるのは外注
  • なので、自社の人は良くわからない
  • さらにバグだらけ
  • 出来上がったコードは超カオス
  • なぜ、動かないのかわからない
  • なぜ、動いているかもわからない
スポンサーリンク


Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>