13

前月の開始と終了を取得するVBコードを作成しようとしています。今月は次のようになります。

Month(DateValue(Now))

そこから1を取り除いて、2月を意味する2を与えることができます。これは問題ありませんが、1月にImしてこれを繰り返すと、ゼロになります。コードは失敗します。前の月の開始日と終了日を取得する方法を知っている人はいますか?

ありがとう

4

8 に答える 8

37

前月の最初の日は常に 1 です。前月の最終日を取得するには、DateSerial で 0 を使用します。

''Today is 20/03/2013 in dd/mm/yyyy
DateSerial(Year(Date),Month(Date),0) = 28/02/2013 
DateSerial(Year(Date),1,0) = 31/12/2012 

次のように、上記から初日を取得できます。

LastDay = DateSerial(Year(Date),Month(Date),0)
FirstDay = LastDay-Day(LastDay)+1

関連項目: VBScript で月の最終営業日を計算する方法

于 2013-03-15T10:44:50.023 に答える
4
firstDay = DateSerial(Year(DateAdd("m", -1, Now)), Month(DateAdd("m", -1, Now)), 1)
lastDay = DateAdd("d", -1, DateSerial(Year(Now), Month(Now), 1))

これは別の方法ですが、Remouのバージョンはよりクリーンに見えると思います。

于 2013-03-15T11:01:40.260 に答える
0

これを試して、月を数値形式で取得してください。

Month(DateAdd("m", -3, Now))

12月分をお届け12します。

したがって、あなたの場合は、Month(DateAdd("m", -1, Now))1 か月だけ減算するために使用します。

于 2013-03-15T10:41:27.783 に答える
0

@Fionnualaが言ったことに何かを追加するだけで、以下の関数を使用できます。これらはうるう年でも機能します。

'If you pass #2016/20/01# you get #2016/31/01#
Public Function GetLastDate(tempDate As Date) As Date
    GetLastDate = DateSerial(Year(tempDate), Month(tempDate) + 1, 0)
End Function

'If you pass #2016/20/01# you get 31
Public Function GetLastDay(tempDate As Date) As Integer
    GetLastDay = Day(DateSerial(Year(tempDate), Month(tempDate) + 1, 0))
End Function
于 2016-02-29T21:04:27.803 に答える