« シートを移動して並び替える2 | トップページ | 現在のカラーパレットをセルに表示して確認する »

2011年4月16日 (土)

日付か時刻かの判別2

前の記事はこちら
日付か時刻かの判別

さて前回の日付か時刻かの判別から少し進んで
24:00以上の時刻も加えて判別します。

24:00以上の時刻がIsDate関数では
Falseになることは以前の記事で言いました。
それでCDate2関数を作ったわけですが、
この関数を使って24:00以上の時刻も加えて判別します。

If文の条件分岐で
IsDate関数がFalseになってElseにいったところで
CDate2関数を使います。

CDate2関数は、
日時と24:00以上の時刻以外の値を入れると
Emptyを返します。

下のコードではIf文によって
日時以外の値のときのみ
CDate2関数を使うElseにいかないようになっています。

よって、
ここのCDate2関数が返す値がEmptyでないなら
CDate2関数にいれた値は24:00以上の時刻ということになります。

コードはこちら

日付か時刻かの判別コード2:

Sub macro110416a()
'日付と時刻の判別2
'24:00以上の時間も判別

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

実行例:
Vba20110416a

結果:
Vba20110416b

CDate2関数は過去に原因不明のエラーを起こしたことがあります。
CDate2関数でエラーになったらとりあえず、
tempシートを削除して再度実行してみてください。

|

« シートを移動して並び替える2 | トップページ | 現在のカラーパレットをセルに表示して確認する »

コメント

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

トラックバック


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

« シートを移動して並び替える2 | トップページ | 現在のカラーパレットをセルに表示して確認する »