月曜日の日付を返すようにするには、次のコードを返信してください。 dateaddが土曜日と日曜日にヒットする場合。残念ながら、dateaddが土曜日または日曜日にはならないにもかかわらず、月曜日は常に返されます。次の日付に移動する土曜日と日曜日の場合にのみ月曜日に追加
は、必要なときに、それはとにかくのみ月曜日返すためにこのコードを改善するためですか?
Private Sub Worksheet_Change(ByVal target As Range)
Dim d1 As Date, d2 As Date, d3 As Date
d1 = NextMonday(Date, 1)
d2 = NextMonday(Date, 7)
d3 = NextMonday(Date, 5)
If Not Intersect(target, Range("H3:H150")) Is Nothing Then
If target.Value = 7 Then
target.Offset(0, 1).Value = d2
ElseIf target.Value = 5 Then
target.Offset(0, 1).Value = d3
ElseIf target.Value = 1 Then
target.Offset(0, 1).Value = d1
Else
End If
End If
End Sub
Function NextMonday(dtDate As Date, lngDaysToAdd As Long)
Dim intDaysOffset As Integer
NextMonday = DateAdd("d", lngDaysToAdd, dtDate)
intDaysOffset = (7 - Weekday(NextMonday, vbMonday)) + 1
NextMonday = DateAdd("d", intDaysOffset, NextMonday)
End Function
サブコードでこの機能をどのように紹介しますか?多くのありがとう – Tom
私は答えを編集しました。 Select Caseは必要ありません。 – Gustav
ご協力いただきありがとうございます。本当に幸い – Tom