2009/03/09

Excelワークシート関数に・・・


DateSerialがナイことに、さっき気がついた・・・

ナニをイマサラと云われそうだが、ソレもソノ筈、
    '----------------------------------------         
'Worksheet向けDateSerial
'- Created by LazwardFox -

'update 200903090716 微修正
'Release200511291534

Public Function iDateSerial(Optional ByVal iYear As Variant = "", _
Optional ByVal iMonth As Variant = "", _
Optional ByVal iDay As Variant = "", _
Optional ByVal iFormat As Variant = "") As Variant
On Error Resume Next
Application.Volatile
Dim Result
Result = DateSerial(iYear, iMonth, iDay)
If IsError(Result) Then '※
Result = Now() '※
End If '※
If iFormat = "" Then
Else
Result = Format(Result, iFormat)
End If
iDateSerial = Result
End Function
こんなのツクってアドインとして組み込んで使っていたので、そのコトを忘れていた(;゚д゚)ァ....


Worksheet上で
   =iDateSerial(2009,3,0,"yyyy/mm/dd")    
こう使う。

当然、引数はセル参照を指定できるので、当時は それなりに使えたよ。

ちなみに、今日追加したのは、文字列返しの部分と、不正入力対応・・・
デモ、ホントに使うのなら、不正値での動作は、エラーを返すほうがイイのかも知れない・・・
そうしたい場合は、※印の行を消して使ってくださいなっと♪


P.S. コッチのほうが無難かも・・・
    '----------------------------------------         
'Worksheet向けDateSerial
'- Created by LazwardFox -

'update 200903090824 再微修正
'Release200511291534

Public Function iDateSerial(Optional ByVal iYear As Variant = "", _
Optional ByVal iMonth As Variant = "", _
Optional ByVal iDay As Variant = "", _
Optional ByVal iFormat As Variant = "") As Variant
On Error Resume Next
Application.Volatile
Dim Result
If iYear="" And iMonth="" And iDay="" Then
Result = Date()
Else
Result = DateSerial(iYear, iMonth, iDay)
End If
If iFormat = "" Then
Else
Result = Format(Result, iFormat)
End If
iDateSerial = Result
End Function

0 件のコメント:

コメントを投稿