据我所知,Application.ScreenUpdating = true 值会一直保持到 Application.ScreenUpdating = false 设置为止。但是这个值的“寿命”是多少?是在打开工作表的过程中开始和结束的过程,还是?
做了一个类来保持 ScreenUpdating 值与我的需求一致:
- 初始化类
- 设置 ScreenUpdating = False
- 在程序结束或出现错误的情况下,将值恢复为 True。
该类可以处理这种情况。
有时需要相反:
初始化类
设置 ScreenUpdating = True
在程序结束或出现错误的情况下,将值恢复为 False。
我在这里遇到了麻烦;该类正确设置值 ScreenUpdating = false,但是当该类获得 ScreenUpdating 的“实际”值时,它始终为 true。没有其他过程或插件可以更改该值。
准备了一张测试表来显示以上几点。从“suCaller”按钮上方的下拉列表中选择 ScreenUpdating 的值。
- 选择 False 并按下按钮。
- 正如预期的那样,设置 False 之前的值是 True。
- 测试数据是从另一个显示 ScreenUpdating 新值 (False) 的过程填充的。
- 数据填充后,该值重置为 True。
- 再次按下按钮,“实际”值为 True,如预期的那样。
- 做很多次,价值观应该没问题。
现在选择 True 并按下按钮。
- 设置 True 之前的值如预期的那样为 True(这是上面的值)
- 再次填充测试数据,显示 ScreenUpdating 新值 (True)
- 数据填充后,该值重置为 False。
- 再次按下按钮,“实际”值为 True 而不是 False。
该类只是否定新值来定义恢复值,所以结果让我对生命周期或如何设置 ScreenUpdating 值感到困惑。
我在课堂上做错了什么还是错过了一些基本理论?
类模块:ApplicationScreenUpdate
测试模块:测试
测试表 TIA,奥斯卡。