Excel 2010中Application.Screen更新值的生命周期是多少?

Excel 2010中Application.Screen更新值的生命周期是多少?,excel,vba,Excel,Vba,据我所知,Application.ScreenUpdate=true值将一直保持,直到设置Application.ScreenUpdate=false为止。但这个值的“寿命”是多少?是在称为“开始”和“完成”的过程中,还是在打开工作表时 制作了一个类,使屏幕更新值与我的需要保持一致: 初始化类 将屏幕更新设置为False 在程序结束或出现错误时,将值恢复为True。 该类可以处理这种情况 有些时候需要相反的东西: 初始化类 将屏幕更新设置为True 在程序结束或出现错误时,将值恢复为False

据我所知,Application.ScreenUpdate=true值将一直保持,直到设置Application.ScreenUpdate=false为止。但这个值的“寿命”是多少?是在称为“开始”和“完成”的过程中,还是在打开工作表时

制作了一个类,使屏幕更新值与我的需要保持一致:

初始化类 将屏幕更新设置为False 在程序结束或出现错误时,将值恢复为True。 该类可以处理这种情况

有些时候需要相反的东西:

初始化类

将屏幕更新设置为True

在程序结束或出现错误时,将值恢复为False

我在这里遇到了麻烦;该类正确地设置了ScreenUpdating=false的值,但是当该类获得ScreenUpdating的“实际”值时,它总是true。没有其他过程或加载项可以更改该值

我已经准备了一份报告来说明以上几点。从suCaller按钮上方的下拉列表中选择屏幕更新的值

选择False并按下按钮。 设置False之前的值按预期为True。 从另一个显示屏幕更新新值False的过程中填充测试数据。 数据填充后,该值重置为真。 再次按下按钮,“实际”值为预期值。 多做几次就可以了。 现在选择True并按下按钮

设置为真之前的值为预期值,即上面的值 再次填写测试数据,显示屏幕更新新值为真 数据填充后,该值重置为False。 再次按下按钮,“实际”值为True而不是False。 该类只是对新值求反以定义还原值,因此结果使我对生存期或ScreenUpdate值的设置方式感到困惑

我在课堂上是做错了什么,还是遗漏了一些基本理论

类模块:ApplicationScreenUpdate

测试模块:测试


TIA,Oscar。

据我所知,这是一种故意的行为,但我没有可引用的来源

虽然有经验的开发人员希望该设置保持不变,但没有经验的开发人员可能不会意识到他们做了什么,如果他们在宏完成后试图手动将数据放入工作表中,他们会认为excel已损坏


您可以尝试禁用应用程序事件,因为有时它们可以重置值,也可以尝试在将更新设置为false后写入值,但我怀疑该值将在宏完成后出现。

发现屏幕更新或显示警报的生存期值,是修改值的顶部过程。在程序结束时;即使该值设置为false,此属性的值也始终恢复为TRUE

另一方面,EnableEvents或Calculation在过程结束时保留其值,在该过程中,该值被修改、为TRUE或FALSE

打开此文件并按以下顺序运行这些方法:

测试错误 TestCurrentValue 测试值 TestCurrentValue 恢复价值 TestCurrentValue 运行每个方法后,请参见表中的值


无法确认应用程序属性是否修改其他属性的值。但正如詹姆斯所写,有些人“通过设计”改变了自己的价值观。

Hi James;不太明白你的意思。但从我的测试中可以看出,Application.EnableEvents将永久保留其值,直到您更改它为止,无论其他过程如何操作。您可以使用同一个类进行测试,只需使用EnableEvents更改对ScreenUpdate的所有引用。其中一些事件会更改ScreenUpdate属性。。。所以这是一种尝试,但正如我最初所说,这种行为看起来是有意为之。