2

渡された値「DateValue」がnullの場合、以下のコードは「00:00:00」を返します

vba:

Public Function forDate(ByVal DateValue As String) As Date
Dim DoDate As Date
If Not IsNull(DateValue) And DateValue <> "" Then
DoDate = CDate(FormatDateTime(DateValue, 1, 10))
forDate = DoDate
End If
End Function

「DateValue」が null の場合の処理​​方法??? 答えを提案してください。

4

5 に答える 5

1

a を null に設定することは有効です (つまり、エラーなしで実行されDateます) 。それ自体ではなく、戻ってきますが。疑似 null 値として、後でその既知の null 値に対して日付変数をチェックできます。vbNullNull#12/31/1899#null

DateSerial(100, 1, 1)または、返される最小の日付に設定することもできます#1/1/100#

于 2013-02-27T13:37:59.800 に答える
1

これにより、null および/または空の文字列が処理されます。

Public Function forDate(ByVal DateValue)
If IsDate(DateValue) Then
    forDate = CDate(DateValue)
Else
    forDate = CVErr(xlErrValue)
End If
End Function

NULL が正しく渡されるように、変数の定義を削除したことに注意してください。スプレッドシートで関数として使用する#VALUE!場合、日付として表現できない文字列が渡されると、関数はエラーを返します。

結果の例:
例

于 2013-02-27T20:55:59.887 に答える
0

解決策は、バリアントパラメータを使用して関数を宣言することかもしれないと思います|

Public Function forDate(DateValue)

VBAがNULLを文字列に変換すると、NULLではなくなります...

于 2013-02-27T11:47:45.313 に答える
0

解決策についてはコメントを参照してください

Public Function forDate(ByVal DateValue As String) As Date ' will only accept string parameter

End Function

' below function is a variant and can accept string , null 
Public Function forDate(DateValue)
    Dim DoDate As Date
    If DateValue & "" <> "" Then 'this will handle null and empty string


        Else
            'will go here when null or empty string
            DateValue = Null
    End If
End Function
于 2013-02-27T11:48:55.790 に答える