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