VB:在Adobe Illustrator,Photoshop中分配布尔属性

Arg*_*gut 3 vb6 photoshop vba adobe-illustrator ui-automation

在使用VBA自动化Adobe Illustrator CS3时,我发现将布尔变量赋值布尔属性会导致始终分配False:

Dim New_Path As Illustrator.PathItem
Dim v As Boolean
' ...
v = True
New_Path.Filled = v     ' ERROR: New_Path.Filled is False
v = False
New_Path.Filled = v     ' New_Path.Filled remains False
Run Code Online (Sandbox Code Playgroud)

分配给常量可以正常工作:

Dim New_Path As Illustrator.PathItem
' ...
New_Path.Filled = True  ' New_Path.Filled is True
New_Path.Filled = False ' New_Path.Filled is False
Run Code Online (Sandbox Code Playgroud)

验证关于各种AI布尔属性如PathItem.Stroked,Layer.Visible

已验证Photoshop.ArtLayer.Visible.

已验证VB6.

所以,我觉得这种行为在Adobe Adob​​e Creative Suite产品中很常见.

这是一个错误还是一个功能?

小智 6

vCBool()函数包装变量.

  • @Rob我可能会根据那个简单的"为什么"问题编写一篇全新的文章...基本上在VBA中[对LET属性的赋值在引擎盖下有一个奇怪的语法](http://stackoverflow.com /一个/二百十四万零一百七十三分之二千六百四十八万八千一百七十〇).我相信(*可能是错误的*)这里发生的事情是`v`变量是通过引用而不是值传递的.将其转换为文字True/False可确保变量由值(True/False)传递,而不是由其在内存中的地址传递(因此不会将其视为COM对象). (2认同)