Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
停止VBA代码并作废或取消其已处理的所有代码?_Vba_Excel - Fatal编程技术网

停止VBA代码并作废或取消其已处理的所有代码?

停止VBA代码并作废或取消其已处理的所有代码?,vba,excel,Vba,Excel,我理解,如果发生错误,可以使用“出错”代码。但是,我想知道是否有可能使该宏处理过的所有内容无效?也许在回忆最后的记忆 例如,我有一个代码,可以运行它来传输许多不同的任务。除了手动转到这些工作表或文件并手动删除它们之外,是否有一个代码可以用来撤消它所做的操作 提前感谢。在启动代码时将工作簿的副本保存到备份中,如果出现错误,请将当前工作簿重命名为其他工作簿,将备份恢复到原始工作簿上,然后关闭重命名后的工作簿 再次打开该文件,它将与运行宏之前完全相同 注意,这将在文件运行时保存您的文件,请确保您在执行

我理解,如果发生错误,可以使用“出错”代码。但是,我想知道是否有可能使该宏处理过的所有内容无效?也许在回忆最后的记忆

例如,我有一个代码,可以运行它来传输许多不同的任务。除了手动转到这些工作表或文件并手动删除它们之外,是否有一个代码可以用来撤消它所做的操作


提前感谢。

在启动代码时将工作簿的副本保存到备份中,如果出现错误,请将当前工作簿重命名为其他工作簿,将备份恢复到原始工作簿上,然后关闭重命名后的工作簿

再次打开该文件,它将与运行宏之前完全相同


注意,这将在文件运行时保存您的文件,请确保您在执行测试时在其他地方有备份。

在启动代码时将工作簿的副本保存到备份中,如果出现错误,请将当前工作簿重命名为其他文件,将备份还原到原始工作簿,然后关闭重命名后的工作簿

再次打开该文件,它将与运行宏之前完全相同


注意,这将在文件运行时保存文件,确保在执行测试时在其他地方有备份。

这取决于“传输多个不同任务”的含义。任务是工作表上的行,而您要将它们复制到其他位置吗?我知道的唯一回滚功能是CTRL-Z——也许你可以编写脚本。更好的方法可能是确保您的进程可以在任何状态下重新运行,而不创建重复项,这就是我要防止重复项的原因。假设用户不会记住它执行的其他任务,因此无法检索并手动删除所有任务。这取决于“传输多个不同任务”的含义。任务是工作表上的行,而您要将它们复制到其他位置吗?我知道的唯一回滚功能是CTRL-Z——也许你可以编写脚本。更好的方法可能是确保您的进程可以在任何状态下重新运行,而不创建重复项,这就是我要防止重复项的原因。假设用户不记得它执行的其他任务,因此无法检索并手动删除所有任务。您的意思是,代码开始时会保存当前文件,出错时会再次调用该文件?我记得excel可以调用工作表上占用的最后一个单元格。可能我会尝试这样做。谢谢你的想法。你可以找到最后一个被更改的单元格或者其他任何东西,但是要撤销所有的更改,只需在例程开始时保存一本书的临时副本就简单多了。没有神奇的内置函数来创建某种类型的“恢复”点,这基本上可以做完全相同的事情,而且ctrl+z不适用于从vba拍摄的事件。这个答案真的是最好的选择。还有其他方法可以做到这一点,我以前在向数据库写入数据时也这样做过,我会在向数据库写入数据时将数据行写入一张表(日志),如果因为用户使用esc中断了数据行,或者如果进程失败,我需要反转我所做的操作,它将运行一个清理过程,从数据库中删除日志中的任何内容。在你写工作表的时候,这听起来并不适用于你的场景,但是用一个标识符标记每一行,然后在成功完成时删除标记,或者在失败时删除行是很简单的,类似于在开始时,代码将保存当前文件,并在出现错误时再次调用该文件?我记得excel可以调用工作表上占用的最后一个单元格,可能我会尝试一下。谢谢你的想法。你可以找到最后一个被更改的单元格或者其他任何东西,但是要撤销所有的更改,只需在例程开始时保存一本书的临时副本就简单多了。没有神奇的内置函数来创建某种类型的“恢复”点,这基本上可以做完全相同的事情,而且ctrl+z不适用于从vba拍摄的事件。这个答案真的是最好的选择。还有其他方法可以做到这一点,我以前在向数据库写入数据时也这样做过,我会在向数据库写入数据时将数据行写入一张表(日志),如果因为用户使用esc中断了数据行,或者如果进程失败,我需要反转我所做的操作,它将运行一个清理过程,从数据库中删除日志中的任何内容。听起来这在您的场景中不起作用,因为您正在向工作表写入内容,但是使用标识符标记每一行,然后在成功完成时删除标记,或者在失败时删除行是很简单的。