我有一个关于访问visio 2003中的形状的问题
...
dim ovp as visio.page
dim ovs as visio.shape
...
set ovs = ovp.shapes("#shapename#")
...do something with the shape
这有时不起作用!
它会出现类似shape not found
或类似
...
dim ovp as visio.page
dim ovs as visio.shape
...
for each ovs in ovp.shapes
if ovs.name = "#shapename#" then
...do something with the shape
end if
next
这总是有效的。知道为什么吗?
答案 0 :(得分:1)
这是一种可能性:
执行set ovs = ovp.shapes("#shapename#")
时,VBA会以区分大小写的方式寻找形状名称的完全匹配。
当您执行if ovs.name = "#shapename#"
和时,如果您的模块中已定义Option Compare Text
,那么它将进行不区分大小写的比较。
因此,在这种特殊情况下,如果以下属于以下情况,您可能会得到您描述的结果:
Option Compare Text
"#ShapeName#"
,但您正在搜索"#shapename#"
。您是否可以发表评论以澄清其中是否有任何可能适用?
答案 1 :(得分:0)
你在哪里#shapename#from? 作为测试,在foreach ovs中,放入一个debug.print ovs.name来查看你在该集合中处理的名称。