Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何每天更改单元格值_Excel_Vba - Fatal编程技术网

Excel 如何每天更改单元格值

Excel 如何每天更改单元格值,excel,vba,Excel,Vba,我试图在每天早上9点将工作表1 Col A上的单元格值从“是”更改为“否”,而不必手动打开工作簿。例如,如果活页1 Col A的单元格值今天为“是”,则需要在明天上午9点显示“否”。但是,我不能在那个特定的时间自动更改它。有人能帮忙吗?请参阅下面的示例和我的代码。提前谢谢 今天下午1点 A B no 1 no 2 yes 3 no 4 yes 5 yes 6 yes 7 明天上午9:01 使用单独的子程序设置“否”值,并将该子明细表本身设置为“否” 模块1代码表 Option Exp

我试图在每天早上9点将工作表1 Col A上的单元格值从“是”更改为“否”,而不必手动打开工作簿。例如,如果活页1 Col A的单元格值今天为“是”,则需要在明天上午9点显示“否”。但是,我不能在那个特定的时间自动更改它。有人能帮忙吗?请参阅下面的示例和我的代码。提前谢谢

今天下午1点

 A  B
no  1
no  2
yes 3
no  4
yes 5
yes 6
yes 7
明天上午9:01


使用单独的子程序设置“否”值,并将该子明细表本身设置为“否”

模块1代码表

Option Explicit

Sub timed_no()
    Application.OnTime EarliestTime:=Date + TimeSerial(9, 0, 0) - CBool(TimeValue(Now) > TimeSerial(9, 0, 0)), _
                       Procedure:="make_No"
End Sub

Sub make_No()
    With ThisWorkbook.Sheets("Sheet1")
        .Range("A2:A" & .Cells(Rows.Count, "B").End(xlUp).Row) = "no"
    End With
    Application.OnTime EarliestTime:=Date + 1 + TimeSerial(9, 0, 0), _
                       Procedure:="make_No"
End Sub
Option Explicit

Private Sub Workbook_Open()
    make_No
End Sub
此工作簿代码表

Option Explicit

Sub timed_no()
    Application.OnTime EarliestTime:=Date + TimeSerial(9, 0, 0) - CBool(TimeValue(Now) > TimeSerial(9, 0, 0)), _
                       Procedure:="make_No"
End Sub

Sub make_No()
    With ThisWorkbook.Sheets("Sheet1")
        .Range("A2:A" & .Cells(Rows.Count, "B").End(xlUp).Row) = "no"
    End With
    Application.OnTime EarliestTime:=Date + 1 + TimeSerial(9, 0, 0), _
                       Procedure:="make_No"
End Sub
Option Explicit

Private Sub Workbook_Open()
    make_No
End Sub

您可以通过调用定时\u no强制手动重置和计划。当您最初打开工作簿时,这可能会派上用场。通过调用timed\u no

手动安排下一次重置,将sub命名为保留字从来都不是一个好主意,除非您特别尝试替换原始功能
Time
返回当前时间,就像
Now
Date
返回其他系统日期时间值一样。通过命名您的过程时间,您已经覆盖了该功能。谢谢你的回复。我试过你的代码,但我不同意。我把make_No放在这本工作簿里了。即使不是早上9点,代码仍在运行。我可以知道如何解决这个问题吗?我已经提供了代码应该放在哪里的标签。它并不打算与此不同。我已经测试过了,但我会进行更严格的测试,看看我能想出什么。对不起,无论我怎么尝试,我都无法重现你的困难。我怀疑我没有完整的故事。看,瓦德,事先知道会很好。所有这些新信息似乎使我原来的答案无效。我会向你们建议这个问题,并用最新的信息开始另一个问题,以免这成为一个。很抱歉给您带来麻烦,非常感谢您的建议和帮助。我下次提问时会记下。我用了另一种暂时不需要的方式来改变。但是,我不会结束这个问题,因为您的代码可能对将来的任何人都非常有用。