Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 VBA宏_Vba_Excel - Fatal编程技术网

停止关闭excel VBA宏

停止关闭excel VBA宏,vba,excel,Vba,Excel,我已经编写了一些非常基本的VBA代码来完成一个简单的任务:提醒我填写我的时间表,它是一个Excel s/sheet。它为我工作了很多年,当我去办公室,打开电脑,把Excel放在我的“启动”文件夹中。然而,现在我的生活发生了一些变化,我使用我的笔记本电脑,不想关机,因此宏不会启动 下面是它的打开方式: Private Sub Workbook_Open() Application.OnTime TimeValue("17:00:00"), "box" If TimeValue("1

我已经编写了一些非常基本的VBA代码来完成一个简单的任务:提醒我填写我的时间表,它是一个Excel s/sheet。它为我工作了很多年,当我去办公室,打开电脑,把Excel放在我的“启动”文件夹中。然而,现在我的生活发生了一些变化,我使用我的笔记本电脑,不想关机,因此宏不会启动

下面是它的打开方式:

Private Sub Workbook_Open()
    Application.OnTime TimeValue("17:00:00"), "box"
    If TimeValue("17:00:00") < Time Then
       Run ("box")
    End If
    ActiveWindow.WindowState = xlMinimized
    Run ("morning")
End Sub
这是“早上好”

Sub morning()
    response = MsgBox("Did you fill in your timesheet yesterday?", vbYesNo, "timesheet")

    If response = vbYes Then End
    If response = vbNo Then
        Workbooks("timesheet2015 - GZ.xlsm").Activate
        ActiveWindow.WindowState = xlMaximized
    End If
End Sub
我一直在绞尽脑汁想是否有办法阻止宏在运行一次后结束。我不想有一些巨大的无休止的循环,否则会减慢笔记本电脑的速度。我相信有一个简单的方法可以做到这一点,所以我会喜欢你的帮助


谢谢

将时间表工作簿放在Excel的XLStart文件夹中。这将在每次打开Excel时打开工作簿。是否使用工作簿的“打开”和“关闭”事件处理程序提示您填写时间表


或者,将这些过程放在另一个工作簿或加载项中,用Excel加载的工作簿或加载项可能也放在XLStart或AddIns文件夹中,这样您就不必永久打开此文件。您仍然可以使用后一种方法来使用OnTime。

谢谢David,我已经这样做了-问题是:我的笔记本电脑每隔几天就会关机一次。所以,当我从头开始启动时,它会打开Excel并打开VBA,一切正常——只是第二天,它关闭了宏,而不会自动打开宏。是否有一种方法可以让它每天下午5点运行ontime命令,而不必打开excel?如果您可以展开加载excel的“addins”文件夹,这将是一个很好的开始,因为我不确定这是做什么或如何访问它。非常感谢。解释外接程序是什么、它驻留在哪里以及它是如何工作的太宽泛了。实际上有成千上万的资源已经解释了这一点。谷歌是你的朋友。否则,必须打开文件才能在给定时间使用Application.OnTime方法运行过程。如果您没有打开该文件,我认为您可以使用Windows任务计划程序。我从来没有这样做过,所以如果你不知道它是如何工作的,就用谷歌搜索它,因为我不知道它是如何工作的!最好的,格斯
Sub morning()
    response = MsgBox("Did you fill in your timesheet yesterday?", vbYesNo, "timesheet")

    If response = vbYes Then End
    If response = vbNo Then
        Workbooks("timesheet2015 - GZ.xlsm").Activate
        ActiveWindow.WindowState = xlMaximized
    End If
End Sub