0

日付と時刻は次の形式です。

7/12/2012 3:41

これから日付だけ残しておきたい。これを行う関数を作成しようとしましたが、Excel はこれを文字列としてしか認識しないため、エントリの編集が困難です。これの日付部分のみをこぼす機能または方向性について誰かが私を助けることができれば、それは大歓迎です。

私の意図したアプリケーションは、

  Public Function Change(X As Variant)
   '
   If X > Application.WorksheetFunction.Now() Then
   Change = 1
   End If
   '
  End Function
4

2 に答える 2

0

出力として日付または文字列のどちらを探しているかによって異なります。両方を行う方法は次のとおりです。

Dim strDateTime As String
Dim strDate As String
Dim s() As String
Dim pureDate As Date

strDateTime = "7/12/2012 3:41"
strDate = Split(strDateTime, " ")(0) ' "7/12/2012"
pureDate = CDate(strDate) ' 7 Dec 2012 (in my locale)
                          ' ... results may be ambiguous depending on your locale

'Another way to get a Date, not blindly using CDate:
s = Split(strDate, "/")
' if date in day/month/year format:
pureDate = DateSerial(CInt(s(2)), CInt(s(1)), CInt(s(0))) ' 7 Dec 2012
' or, if date in month/day/year format:
pureDate = DateSerial(CInt(s(2)), CInt(s(0)), CInt(s(1))) ' 12 July 2012
于 2013-10-21T08:09:33.070 に答える
0

Format次のように関数を使用します。

Public Function Change(DateExp) As Date
'Format function lets you transform most data in your desired format.
'CDate handles any Date Expression conversion to Date data type.
'CStr handles any expression conversion to String data type
If IsMissing(ReturnType) Then
    'Return as Date, default when ReturnType is not supplied
    Change = Format(CDate(DateExp), "m/d/yyyy")
Else
    If ReturnType = True Then
        'Return as Date
        Change = Format(CDate(DateExp), "m/d/yyyy")
    ElseIf ReturnType = False Then
        Change = Format(CDate(DateExp), "m/d/yyyy")
        'Return as String
        Change = CStr(Change)
    Else
        'Error out any values other than TRUE or FALSE
        Change = CVErr(xlErrValue)
    End If
End If
End Function

ただし、日付だけを返すことに本当に関心がある場合は、Today() Function代わりにNow()(for WS) を使用します。
VBA の同等の機能はDate、システムの現在の日付を返す関数です。同じ

于 2013-10-21T06:19:02.080 に答える