« 2次元配列の行列を入れ替える | トップページ | シートの指定方法のまとめ »

2011年3月27日 (日)

日付か時刻かの判別

Excelでは日付でも時刻でもDate型で扱われ、
型だけでは日付か時刻かの判別がつきません。

そこで日付の長整数型の値を使って
日付か時刻かの判別をしてみます。

というのも

あるWebサイトから
情報をExcelで取り込み加工したいときに
そのサイトでは日付と時刻が別々に表示されていました。

それで、日付と時刻を合わせて1つの情報にするために
日付と時刻を判別する必要があったからでした。

日付か時刻かを判別する条件を
日付と時刻のそれぞれ示します。

時刻の情報がない日付はDate型かつ整数である。
日付のない時刻のみの情報はDate型かつ1より小さい。
(ただし24:00以上の時刻はここでは扱わない。)

この条件を使って日付と時刻の判別をしていきます。

Date型かどうかはIsDate関数を使います。

整数ということは
小数点以下0ということなので
値 = Int(値)がTrueのとき
値は整数です。

1より小さいは
そのまま 値 < 1 です。

日時のシステムについては
以前の記事を検索して参照してください。
またはVBAヘルプにあります。

コードはこちら

日付か時刻かの判別をするコード:

Sub macro110327a()
'日付と時刻の判別

    Dim MyValue As Variant
    MyValue = InputBox("日付か時刻かを判別します。")
   
    If IsDate(MyValue) Then
        If CDate(MyValue) = Int(CDate(MyValue)) Then
            MsgBox ("日付のみ")
        ElseIf CDate(MyValue) < 1 Then
            MsgBox ("時刻のみ")
        Else
            MsgBox ("日付のみ、時刻のみの値ではありません。")
        End If
    Else
        MsgBox ("日時ではありません。")
    End If
   
End Sub

実行例:

Vba20110327a_2
Vba20110327b_2

自作関数CDate2を使えば
24:00以上の時刻も判別可能です。

|

« 2次元配列の行列を入れ替える | トップページ | シートの指定方法のまとめ »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 日付か時刻かの判別:

« 2次元配列の行列を入れ替える | トップページ | シートの指定方法のまとめ »