2017-08-03 4 views
2

私はVBAのためにいくつかのVBAを書いています。現在または今後の土曜日の日付を把握する必要があります次の土曜日または現在の土曜日の日付はどのようにして知ることができますか?

だから金曜日なら、明日の日付(土曜日)を取得する必要があります。

今日が土曜日の場合は、今日の日付がほしいです。

日曜日の場合は、昨日の日付が必要です。

それは土曜日

横その後、月曜日の場合、私はあなたがこの数式を使用することができますExcelでは、この

+0

多分これはhttps://superuser.com/questions/376698/how-to-get-the-dates-of-the-current-monday-wednesday-and-friday-of-the-currentに役立ちます – MatSnow

答えて

1

に「日付」にセルの書式設定を行いvbDays変数とSelect Caseを使用して、理解しやすいものです。

一般的に3つのケースがあります - 今日は土曜日、日曜日、またはそれ以外です。これらはSelect Caseに表示されます。

この関数はdateであるため、Excelでは標準の日付結果として形式化されます。

Option Explicit 

Public Function SaturdayIsComing() As Date 

    Select Case Weekday(Now) 

     Case vbSaturday 
     SaturdayIsComing = Now 

     Case vbSunday 
     SaturdayIsComing = DateAdd("d", -1, Now) 

     Case Else 
     SaturdayIsComing = DateAdd("d", vbSaturday - Weekday(Now), Now) 

    End Select 

End Function 
+0

これは真夜中に非常に近く呼び出された場合、間違った値を返す可能性があります。 – GSerg

5

を達成することができますExcelやVBAで何かがあった場合、私は思っていた:

=TODAY()-WEEKDAY(TODAY())+IF(WEEKDAY(TODAY())>1, 7, 0) 
1

あなたがExcelを使い、他のvbaプロジェクトに必要なだけであれば、望む結果が得られます。

Private Function saturdayFunction() 
    Dim dt As String 
    Dim lpDT As String 

    lpDT = Format(Now, "yyyy/MM/dd") 

    If Format(Now, "DDDD") = "Saturday" Then 
     dt = Format(Now, "yyyy/MM/dd") 
    ElseIf Format(Now, "DDDD") = "Sunday" Then 
     dt = Format(Now - 1, "yyyy/MM/dd") 
    Else 
     Do While Not dt = "Saturday" 
      dt = Format(CDate(lpDT) + 1, "DDDD") 
      lpDT = Format(CDate(lpDT) + 1, "yyyy/MM/dd") 
     Loop 

     dt = lpDT 
    End If 

    saturdayFunction = dt 
End Function 
+0

ワンダフル、ワーキングコードの説明がないdownvote。 – GibralterTop

+0

「ワーキングコード」と「あるマシンで正しい結果が得られるコード」は、非常に異なるものです。このコードは根本的に壊れており、 'en-us'ロケールでしか動作しません。また、すべての日付を文字列として格納し、ループの必要がないところでループを使用するため、アプローチが非常に間違っています。 – GSerg

+0

@GSergあなたのポイントの多くは、https:/codereview.stackexchange.comに適していますが、これはどこに掲載されていません。 OPは決してロケールを述べなかった。サイトの言語と、私が 'en-us'フォーマットであると思っていた質問の大部分が与えられています。私はここで何も間違いないと思う。 – GibralterTop

0

これを試してください。ここで

=TODAY()+6-WEEKDAY(TODAY(),2) 
関連する問題