【发布时间】:2018-11-28 10:02:50
【问题描述】:
我有一张包含几个宏按钮的表格,它们的作用都略有不同,一切都很好,除非用户垃圾邮件点击不同的按钮有点快。
我没有足够的经验知道这是一个常见问题还是我的代码工作方式的问题,但是如果单击一个宏按钮并在单击另一个按钮之前正确执行,似乎一切正常。即使是垃圾邮件单击同一个宏按钮似乎也能正常工作,但在快速连续单击两个或更多按钮时,代码无法正常执行。
代码本身只是查找具有特定值的单元格,并添加或删除行,有时还会从工作表的其他区域复制和粘贴。例如,如果您要单击按钮 X 查找工作表的 X 部分并在其下方添加一行,然后单击按钮 Y 查找工作表的部分 Y 并删除其上方的一行,则按钮 Y 将无法找到它需要找到的单元格(即使它存在)并触发一个错误消息框,告诉用户 Y 部分似乎丢失了,同时按钮 X 本身也会有一些奇怪的问题,比如删除错误的行,就好像它预期/补偿了什么它期望 Y 这样做。
我尝试在宏开始时对每个命令按钮使用CommandButton1.Enabled = False,并在每个宏结束时再次启用按钮,但无论在宏执行期间,我仍然可以垃圾邮件单击按钮。
有没有一种简单的方法可以防止在当前宏代码运行之前点击其他宏按钮?我试过禁用和启用按钮,我试过添加等待时间。如果我无法解决此问题,我可能会求助于保存重复的隐藏工作表,该工作表在出错时未隐藏,并且问题工作表被删除,另一个“备份”副本被创建并隐藏,同时用户通知不要向宏按钮发送垃圾邮件。
【问题讨论】:
-
这些是activeX按钮吗?您是否尝试过使用超链接来运行代码?我总是使用超链接而不是按钮,但主要是为了防止调整大小错误
-
是的,它们是 ActiveX 按钮。调整错误大小是什么意思?另外,我尝试将宏设置为不是 activeX 按钮的其他形状,但它们无法调用其他 sub,所以我没有进一步研究。
-
调整大小错误是一个可怕的错误,您将笔记本电脑插入第二个屏幕,然后 Excel 工作表上的 activeX 按钮开始随着每次点击而增大(或者按钮上的文本变得如此小你看不到)
-
我得调查一下,这听起来很可怕,哈哈。这里的大多数工作站都是插入底座的笔记本电脑,底座上有两个屏幕,以及带有双屏幕的标准工作站。
-
我没有测试它,但是在宏开始时将全局(布尔)变量设置为 true 并在宏完成后设置为 false 是否有效?在宏的开头,您会问诸如“If disalbed=true then End sub”之类的问题?
标签: vba excel error-handling runtime-error