我正在使用一些VBA代码处理一个模型,该代码隐藏/显示形状:
Worksheets("Sheet1").Shapes("shape1").Visible = msoTrue
以前的开发人员在整个模型中使用了msoTrue,而不是True,这正是我在这类应用程序中通常使用的。
我试图理解True和msoTrue之间的区别,并想知道我是否应该使用其中一种。我知道两者相等-1。
发布于 2022-06-13 22:11:03
msoTrue
是一个计算为-1的常量。在VBA中,它将是一个Long
类型。
True
是Boolean
类型。当转换为Long
时,它的计算值也是-1。
试试这个:
Debug.Print msoTrue '---> -1
Debug.Print True '---> True
Debug.Print Clng(True) '---> -1
在条件测试中使用msoTrue
而不是True
有点奇怪,但是-1、msoTrue
和True
都是真正的条件。
我应该补充的是,Visibility
对象的Shape
属性不是Boolean
类型,而是枚举msoTriState
的Long
。如果您的问题与Shapes
特别相关,而且只与msoTrue
有关,那么,是的,更正确的语法将是msoTrue
。
https://stackoverflow.com/questions/72609527
复制相似问题