Excel VBA:Userform复选框 - 如果语句语法不同

时间:2016-03-16 14:03:08

标签: excel vba excel-vba if-statement checkbox

我正在使用userform上的一些复选框,并检查用户是否已在我的代码中检查过它们。我遇到的问题是如何正确检查这种情况。我找到了几个例子,我想知道每个人可能会遇到麻烦。

例如,我看过几个片段使用:

If checkBox1.Value = "True" Then

If checkBox1.Value Then

If checkBox1 Then

这些之间有什么功能差异吗?看起来后者是最短,最简洁的应用程序,但是工程师的大脑在说我必须有其他两个案例的原因(尽管我使用的VBA越多,我就越不相信这个概念)。 / p>

您可以提供任何帮助或指导,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

checkBox1基本上是不完整的,VBA会自动假定(对你而言)你指的是它的值,因此"完成" (在运行时)您的代码到checkBox1.Value。这需要时间,并且可能会使代码速度变慢(即使这几乎不可察觉)。

对于大多数程序员来说,第二个选项是首选选项,因为if语句会评估某些内容是True还是False。由于复选框的.Value已经是TrueFalse,因此第一个选项不必要很长。 checkbox1的值是alredy True。那么,为什么要将它与True进行比较?

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

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