分かりやすく、使いやすく。

yyyymmdd 形式の文字列や数値が正しい日付かを判定する方法

スポンサーリンク

Excel VBA で yyyymmdd 形式の 8 文字の数値や文字列が、日付として妥当かを確認するには IsDate 関数を使用します。但し、 IsDate 関数は yyyymmdd 形式だと日付として認識しない為、 Format 関数で yyyy/mm/dd に変換した上で判定します。

  1. yyyymmdd 形式の文字列が正しい日付の形式かを確認する
  2. yyyymmdd 形式の数値が正しい日付の形式かを確認する


yyyymmdd 形式の文字列が正しい日付の形式かを確認する

サンプルコードは次の通りです。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Option Explicit
 
Sub test()
    Dim yyyymmdd As String
    
    ' チェック対象の文字列
    yyyymmdd = "20180230"
    
    If IsDate(Format(yyyymmdd, "@@@@/@@/@@")) Then
        Debug.Print ("正しい形式")
    Else
        ' 2/30 という日付は存在しない為、こっちが出力される。
        Debug.Print ("不正な形式")
    End If
End Sub 

yyyymmdd 形式の数値が正しい日付の形式かを確認する

サンプルコードは次の通りです。基本的に文字列のサンプルコードと同じで、変更点は変数 yyyymmdd のデータ型を String から Long に変更している点のみです。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Option Explicit
 
Sub test()
    Dim yyyymmdd As Long
    
    ' チェック対象の数値
    yyyymmdd = 20180230
    
    If IsDate(Format(yyyymmdd, "@@@@/@@/@@")) Then
        Debug.Print ("正しい形式")
    Else
        ' 2/30 という日付は存在しない為、こっちが出力される。
        Debug.Print ("不正な形式")
    End If
End Sub 
スポンサーリンク
スポンサーリンク