第一个帖子,但不是第一次访问者-在过去的三年中,该论坛对发展我的VBA编码技能提供了宝贵的帮助-非常感谢。
这是我遇到的一个奇怪的问题。
我已经创建了一个月底模板供团队使用。 该模板存储了许多宏,包括一些通过键盘快捷键激活的宏。这些快捷方式激活的宏都以CSV格式在其他报表上运行。
我确保如果活动工作簿是主工作簿,则宏将停止运行,因为它会进行很多格式化,并且会严重损坏主工作簿。
因此,此故障安全短代码每天将运行数百次.....,偶尔每月一次或两次,excel会感到困惑。即使ActiveWorkbook不是ThisWorkbook,它的行为也一样,并中止了宏。
'防止在月末分配模板上运行宏
Dim w As Workbook
Set w = ActiveWorkbook
If w Is ThisWorkbook Then
Exit Sub
End If
我无法真正解决这个问题,代码非常简单,并且100%防止了对主工作簿(实际上是主要事情)的有害破坏,但是偶尔会阻止格式化宏在其他工作簿上运行。
在极少数情况下,用户不得不关闭所有excel工作簿,并且重新打开后,它将再次正常运行。 :|
这只是一个Excel错误吗?这里有我没有考虑的东西,应该改进此代码吗?我喜欢它的简单性,并且它可以100%避免损坏主工作簿,我很生气,Excel似乎对ThisWorkbook是/应该是什么感到困惑,而且我无法解释。
答案 0 :(得分:0)
任何您不希望用户搞砸的主工作簿都应具有由宏关闭和打开的保护。将数据与视图分开。锁定视图并仅修改数据。对您来说,这意味着CSV将导入到隐藏工作表中的列中,然后带有链接的数据表的受保护工作表上的数据将神奇地更新。应该没有格式化宏。格式是静态的。链接的数据发生了什么变化。