首页 文章

Excel 2010中Application.ScreenUpdating值的生命周期是多少?

提问于
浏览
3

据我所知,Application.ScreenUpdating = true值一直保持到设置Application.ScreenUpdating = false为止 . 但这个 Value 的“生命周期”是什么?它是在调用它的过程开始和结束时,同时打开工作表,还是?

制作一个类来保持ScreenUpdating值符合我的需求:

  • 初级班

  • 设置ScreenUpdating = False

  • 在过程结束时或出现错误时将值恢复为True .

该类可以处理这种情况 .

有时需要相反:

  • 初级班

  • set ScreenUpdating = True

  • 在过程结束时或出现错误时将值恢复为False .

我在这里遇到麻烦;该类正确设置值ScreenUpdating = false,但是当类获得ScreenUpdating的“实际”值时,它始终为true . 没有其他程序或插件可以更改该值 .

已准备好test sheet以显示上述要点 . 从"suCaller"按钮上方的下拉列表中选择ScreenUpdating的值 .

  • 选择False,然后按按钮 .

  • 设置False之前的值是预期的True .

  • 测试数据从显示ScreenUpdating新值(False)的另一个过程填充 .

  • 数据填充后,该值将重置为True .

  • 再次按下按钮 'Actual' value is True as expected .

  • 做了很多次, Value 应该没问题 .

现在选择True,然后按按钮 .

  • 设置前的值True为预期的True(这是上面的值)

  • 再次填写测试数据,显示ScreenUpdating新值(True)

  • 数据填充后,该值将重置为False .

  • 再次按下按钮 'Actual' value is True not False .

该类只是否定了定义恢复值的新值,因此结果会使我在生命周期或如何设置ScreenUpdating值时感到困惑 .

我在班上做错了什么或遗漏了一些基本理论?

类模块:ApplicationScreenUpdate

测试模块:测试

Test Sheet TIA,奥斯卡 .

2 回答

  • 0

    据我所知,这是行为是设计的(但我没有可引用的来源) .

    虽然经验丰富的开发人员希望设置保留,但缺乏经验的开发人员可能不会意识到他们已经完成了什么,如果他们在宏完成后尝试手动将数据放入工作表中,他们会认为excel被破坏了 .

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

  • 0

    已经发现ScreenUpdating或DisplayAlerts值的生命周期是修改值的最高过程 . 在程序结束时;即使该值设置为false,此属性的值也会恢复为TRUE .

    另一方面,EnableEvents或Calculation在修改值的过程结束时保留其值,为TRUE或FALSE .

    打开此workbook并按以下顺序运行方法:

    • TestFalse

    • TestCurrentValues

    • TestValues

    • TestCurrentValues

    • RestoreValues

    • TestCurrentValues

    运行每个方法后,请参阅工作表中的值 .

    无法确认应用程序属性是否修改了其他属性的值 . 但正如詹姆斯写的那样,有些人会“改变设计”的 Value .

相关问题