vbTrue不是真的

Excel常数“True”评估为True,常量“vbTrue”评估为-1。 我一直认为这些在VBA代码中是可以互换的,但事实并非如此。 这两个常量产生不同结果的地方是设置CheckBoxes。 将CheckBox.value设置为True会产生预期的结果,但将其设置为vbTrue会将CheckBox留在TripleState中。

Sub setCkBox1() CheckBox1.TripleState = False CheckBox1.Value = vbTrue '<<<< the check mark is dimmed to show TripleState is True Debug.Print CheckBox1.TripleState: Stop '<<<< even though it won't admit it CheckBox1.Value = True '<<<< check mark is not dimmed End Sub 

所以我的问题是,在VBA的哪些地方这两个常量是不可互换的?

True是一个布尔值, vbTrue是一个Long值。 布尔和长裤不可互换。