是否有任何理由在设置之前检查属性是否已设置?

时间:2013-07-30 18:01:39

标签: excel-vba vba excel

我对VBA很新。我正在开发一个Excel项目,我一直看到项目中的代码如下:

If Me.Columns(i).Hidden = True Then
    Me.Columns(i).Hidden = False
End If

和此:

If Range("SomeRange").Locked = True Then
    Range("SomeRange").Locked = False
End If

特别是在这些情况下,是否有任何理由在设置之前检查属性是否已设置,或者这只是一个无用的检查?当然VBA引擎必须进行内部检查,以免它不必要地做任何事情。

2 个答案:

答案 0 :(得分:5)

我想我知道有人制作你分析的代码的原因。这种情况的根源可能来自 Bovey,Rob / Wallentin,Dennis / Bullen,Stephen / Green,John的标题:“专业Excel开发:使用Microsoft Excel和VBA开发应用程序的权威指南,以及.NET “您可以在互联网上找到哪些章节(或完整版)。有一章致力于微观和宏观优化。让我引用一个引用你的问题:

  

在设置之前测试属性

     

读取它通常要快得多   财产比写它。它可以节省仅更新属性的时间   当它需要改变时,通过检查它是否具有所需的值   第一。例如,仅读取Range.Font.Bold的值   如果它已经是True,则将其设置为True。这与之相矛盾   减少你编写的代码量的一般规则,但它会   如果它允许您避免,则提供显着的性能提升   不必要地设置属性。

我不会确认它的真实与否。但我更信任这本书的作者。

答案 1 :(得分:1)

这可能是一项无用的检查。除非在隐藏特定列/行时涉及其他一些逻辑,否则我没有太多理由要求您进行额外检查。