簡體   English   中英

在 excel 中輸入星期幾的日期 vba

[英]Entering date of the day of the week in excel vba

我創建了一個考勤卡工作表供我的員工提交。 A 列是日期名稱,我希望 B 列自動填充當天的日期。 這是我創建的模塊...

Sub AutoDate()

    Dim NextSun As Date
    Dim NextMon As Date
    Dim NextTues As Date
    Dim NextWed As Date
    Dim NextThur As Date
    Dim NextFri As Date
    Dim NextSat As Date


    '*****Autopopulate the dates of the day of the week*****

    NextSun = ((Weekday(Date, vbSunday)))
    Range("C26") = NextSun
    NextSun = ((Weekday(Date, vbMonday)))
    Range("C27") = NextMon
    NextSun = ((Weekday(Date, vbTuesday)))
    Range("C28") = NextTues
    NextSun = ((Weekday(Date, vbWednesday)))
    Range("C29") = NextWed
    NextSun = ((Weekday(Date, vbThursday)))
    Range("C30") = NextThur
    NextSun = ((Weekday(Date, vbFriday)))
    Range("C31") = NextFri
    NextSat = ((Weekday(Date, vbSaturday)))
    Range("C32") = NextSat

End Sub

在此先感謝您對此事的協助。

所以我假設你總是在B26中從星期日開始,在B27中從星期一開始,依此類推,並且只想在C列中打印一周的日期——因此是變量名稱?

Weekday() 只會返回一個數字,而不是日期,因此僅憑這一點不太可能做你想做的。 但是,您可以將其添加到現有日期。

Sub AutoDate()

    Dim NextDay As Range
    Dim i As Long

    Set NextDay = Range("C26")
    For i = 0 To 6
        NextDay.Offset(i) = Date + (8 - Weekday(Date) + i)
    Next i

End Sub

如果您想要當前一周,請將8更改為1

這將用本周的日期填充 B 列和 C 的七行:

Sub AutoDate()

    Dim NameRange   As Range
    Dim DateRange   As Range
    
    Dim WeekdayDate As Date
    Dim WeekdayName As String
    Dim StartDate   As Date
    Dim Offset      As Long

    Set NameRange = Range("C26")
    Set DateRange = Range("B26")
    
    StartDate = DateAdd("d", 1 - Weekday(Date, vbSunday), Date)
    For Offset = 0 To 6
        WeekdayDate = DateAdd("d", Offset, StartDate)
        WeekdayName = Format(WeekdayDate, "dddd")
        DateRange.Offset(Offset) = WeekdayDate
        NameRange.Offset(Offset) = WeekdayName
    Next

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM