据我所知,Application.ScreenUpdating = true值一直保持到设置Application.ScreenUpdating = false为止。但这个价值的“生命周期”是什么?是在调用它的过程开始和结束时,同时打开工作表,还是?
制作一个类以保持ScreenUpdating值符合我的需求:
该类可以处理这种情况。
有些时候需要相反:
在程序结束时或出现错误时将值恢复为False。
我在这里遇到麻烦;该类正确设置值ScreenUpdating = false,但是当类获得ScreenUpdating的“实际”值时,它始终为true。没有其他程序或插件可以更改该值。
已准备好test sheet以显示上述要点。从“suCaller”按钮上方的下拉列表中选择ScreenUpdating的值。
现在选择True并按下按钮。
该类只是否定新值来定义恢复值,因此结果会让我对生命周期或如何设置ScreenUpdating值感到困惑。
我在课堂上做错了什么或遗漏了一些基本理论?
课程模块:ApplicationScreenUpdate
测试模块:测试
Test Sheet TIA,Oscar。
答案 0 :(得分:0)
据我所知,这是行为是设计的(但我没有可引用的来源)。
虽然有经验的开发人员会希望设置保留,但没有经验的开发人员可能会意识到他们已经完成了什么,并且如果他们在宏完成后尝试手动将数据放入工作表中,他们会认为excel已经损坏。
您可以尝试的是禁用应用程序事件,因为有时它们可以重置值,您也可以尝试在将更新设置为false后尝试编写值,但我怀疑在宏完成后将显示该值。
答案 1 :(得分:0)
已发现ScreenUpdating或DisplayAlerts值的生命周期是修改该值的最高过程。在程序结束时;即使该值设置为false,此属性的值也会恢复为TRUE。
另一方面,EnableEvents或Calculation在修改值的过程结束时保留其值,为TRUE或FALSE。
打开此workbook并按以下顺序运行方法:
运行每个方法后,请参阅表格中的值。
无法确认应用程序属性是否修改了其他属性的值。但正如詹姆斯写的那样,有些人会“改变设计”的价值