繁体   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