我有一个关于在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这总是有效的。知道为什么吗?
发布于 2013-04-28 17:16:00
这是一种可能性:
执行set ovs = ovp.shapes("#shapename#")时,VBA将以区分大小写的方式查找与形状名称完全匹配的项。
当您执行if ovs.name = "#shapename#"并且在模块中定义了Option Compare Text时,它将执行不区分大小写的比较。
因此,在这种特定情况下,如果以下两个条件都成立,您可能会得到您所描述的结果:
在您要搜索的形状名称的大小写中,您声明的Option Compare Text
"#shapename#".,但您正在搜索"#ShapeName#"
你能发表评论来澄清这些内容是否适用吗?
发布于 2013-04-29 00:24:50
你从哪里得到#shapename#的?作为一个测试,在foreach ovs.name中放置一个debug.print ovs,以查看您在该集合中处理哪些名称。
https://stackoverflow.com/questions/16261148
复制相似问题