首页 > 解决方案 > 有没有办法模拟系统日期?

问题描述

所以我有一个只想在工作日运行的宏。我创建了一个宏(我希望)将检查它是星期几并将其放入单元格中。这就是我所拥有的:

Private Sub dayCheck()

    If Weekday(Now) = vbMonday Or vbTuesday Or vbWednesday Or vbThursday Or vbFriday Then
        Dim BlankRow As Long
        BlankRow = Range("A65536").End(xlUp).Row + 1
        Cells(BlankRow, 1).Select
        Selection.Value = Date
        Selection.Offset(0, 1).Value = Time
        Selection.Offset(0, 2).Value = WeekdayName(Weekday(Now))
        Selection.Offset(0, 3).Value = Environ("Username")

    ElseIf Weekday(Now) = vbSaturday Or vbSunday Then
        Dim time1, time2

        Do
            time1 = Weekday(Now)
            time2 = vbMonday
            Do Until time1 = time2
                DoEvents
                time1 = Now()
            Loop
        Loop

    End If

    Application.OnTime TimeValue("12:00:00"), "dayCheck"

End Sub

我的问题是我没有更改系统日期的管理员权限。有没有办法通过宏来模拟这个?

标签: excelvba

解决方案


您可以通过在 excel 中格式化 now() 函数的一般或数字输出来模拟日期代码,只需加 1 以增加日期。小数点右边的数字表示从午夜到第二天的时间百分比。

今天的日期时间代码是:43412.37786

明天是 43413.37786

因此,您可以通过创建一个 for 循环来回答有关测试代码的问题:

Dim Today
Today = Now
For Days = Today To Today + 7 'Tests today through next Thursday.
    If Weekday(Days) = ...
Next Days

但是达伦的回答看起来可以解决您的问题,所以我可能会同意。


推荐阅读