【问题标题】:Excel VBA: Userform Checkbox - If Statement syntax differencesExcel VBA:用户表单复选框 - If 语句语法差异
【发布时间】:2016-07-02 11:12:12
【问题描述】:

我正在处理用户窗体上的一些复选框,并正在检查它们是否已被用户在我的代码中选中。我遇到的问题是如何正确检查这种情况。我找到了几个示例,并且想知道每个示例在哪里会遇到问题。

比如我见过几个sn-ps的使用:

If checkBox1.Value = "True" Then

If checkBox1.Value Then

If checkBox1 Then

它们之间有什么功能上的区别吗?似乎后者是最短、最简洁的应用程序,但是我工程师的大脑说其他两种情况肯定是有原因的(尽管我使用 VBA 工作的次数越多,我就越不相信这个概念)。

如果您能提供任何帮助或指导,我们将不胜感激。

【问题讨论】:

    标签: vba excel if-statement checkbox


    【解决方案1】:

    我会推荐第二个。最好明确指定对象的属性,而不是依赖默认值。将布尔值与 True/False 进行比较是没有意义的,因为它已经是 True 或 False,并且将它与 String 值进行比较没有意义(在不同的地区会有所不同)。

    【讨论】:

      【解决方案2】:

      在这种情况下,它们都是相同的,可以互换使用。但是,我只会使用第一个或第二个选项。

      checkBox1 本质上是不完整的,VBA 自动假设(为您)您指的是它的值,因此“完成”(在运行时)您的代码到checkBox1.Value。这需要时间并且可能从根本上减慢您的代码速度(即使这几乎不引人注意)。

      对于大多数程序员来说,第二个选项是首选选项,因为if 语句会评估某事物是True 还是False。由于复选框的.Value 已经是TrueFalse,第一个选项过长。 checkbox1 的值已经是True。那么,你为什么要把它和True比较呢?

      同时我总是更喜欢使用第一个选项,因为它使我更容易阅读代码(个人喜好)。

      所以,我会说选项 1 或 2:这是您的选择。

      【讨论】:

      • 您是否有访问默认属性会减慢代码执行速度的来源?我从来没有听说过。
      • 前段时间我用 500.000 行进行了自己的测试,比较了 .Value.Value2 和 ` ` 与 Office 2010 的使用情况。这是传统的 .Value.Value2 我想验证自己。但我从未见过与 ` 的比较(强制 VBA 使用默认值自动完成)。与.Value.Value2had to be calculated in milliseconds 之间的差异相比,时间差异相当小。因此(而且由于我没有网站)我从未发布过我的发现。
      猜你喜欢
      • 2013-09-25
      • 2017-06-26
      • 2017-11-04
      • 2017-11-30
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多