web-dev-qa-db-ja.com

VBで前月の開始と終了を取得する方法

前月の開始日と終了日を取得するコードをVB=を作成しようとしています。

Month(DateValue(Now))

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

ありがとう

12
Katana24

前月の最初の日は常に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で月の最終営業日を計算する方法

29
Fionnuala

私は最初と最後の日に似た式を持っています

月の最初の日

FirstDay = DateSerial(Year(Date),Month(Date),1)

翌月のゼロ日はその月の最後の日です

LastDay = DateSerial(Year(Date),Month(Date)+ 1,0) 
6
Quang le ba
firstDay = DateSerial(Year(DateAdd("m", -1, Now)), Month(DateAdd("m", -1, Now)), 1)
lastDay = DateAdd("d", -1, DateSerial(Year(Now), Month(Now), 1))

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

1
MrBlue

これはメインサブで確実に機能します。

Dim defDate1 As Date, defDate2 As Date

'** Set default date range to previous month
defDate1 = CDate(Month(Now) & "/1/" & Year(Now))
defDate1 = DateAdd("m", -1, defDate1)
defDate2 = DateAdd("d", -1, DateAdd("m", 1, defDate1))
1
Blisteragent

これを試して、月を数値形式で取得します。

_Month(DateAdd("m", -3, Now))
_

12月の_12_が表示されます。

したがって、あなたの場合は、Month(DateAdd("m", -1, Now))を使用して、1か月だけを練習します。

0
Olle Sjögren
Public Shared Function GetFOMPrev(ByVal tdate As Date) As Date
    Return tdate.AddDays(-(tdate.Day - 1))
End Function

Public Shared Function GetEOMPrev(ByVal tdate As Date) As Date
    Return tdate.AddDays(-tdate.Day)
End Function

使用法:

'Get End of Month of Previous Month - Pass today's date
EOM = GetEOMPrev(Date.Today)

'Get First of Month of Previous Month - Pass date just calculated
FOM = GetFOMPrev(EOM)
0
Russell

@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
0
Adarsh Madrecha

これを試して

First_Day_Of_Previous_Month = New Date(Today.Year, Today.Month, 1).AddMonths(-1)

Last_Day_Of_Previous_Month = New Date(Today.Year, Today.Month, 1).AddDays(-1)
0