我无法找出解决以下问题的最佳方法。基本上我的宏(excel,VB)正在检查几个(100+)工作表的正确值,如果发现错误的值,我希望它停止,给我一个警告,然后我可以看看为什么值是错了,手动更正它然后我想恢复宏,或者记住最后检查的值,所以如果我返回,它会记住从哪里继续(恢复)。
我当前的问题是它找到了错误的值,然后我可以让它停止以便我检查问题,或者它遍历所有工作表,然后我必须记住哪些工作表具有错误的值。
我想到的是制作一个列表,每次发现错误值时都会添加工作表的名称。问题是,如果根本没有错误值,通常在同一张工作表中会有超过 1 个错误值,这会将相同的工作表名称多次添加到列表中。另一个问题是我无法立即更正这些值。
我对编程非常缺乏经验,因此非常感谢您对如何最好地解决这个问题的想法(我不想花很长时间编写对这样一个“简单”问题没有效率的东西)。
最佳答案
当发现错误时(我假设您已经能够识别),您可以使用 Application.InputBox
提示您输入新值的功能。
例如,如果 rng
是一个 Range 变量,表示正在检查的单元格,并且您有一些逻辑来确定错误发生的位置,那么您可以这样做:
rng.Value = Application.InputBox("Please update the value in " & rng.Address, "Error!", rng.Value)
inputbox 函数在等待用户输入的同时有效地停止了过程的执行。
如果 InputBox 不够健壮,那么您可以创建一个自定义 UserForm 来做同样的事情。但是对于一次修改单个范围值,InputBox 可能是最容易实现的。
关于vba - VBA,excel宏暂停并尽可能恢复工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29281456/