0

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

これは常に機能します。理由はありますか?

4

2 に答える 2

1

可能性は次のとおりです。

を実行するとset ovs = ovp.shapes("#shapename#")、VBA は大文字と小文字を区別してシェイプ名と完全に一致するものを探します。

モジュールで定義している場合は、大文字if ovs.name = "#shapename#" Option Compare Text小文字を区別しない比較が行われます。

したがって、その特定の状況では、次の両方が当てはまる場合に、説明した結果が得られる可能性があります。

  1. あなたは宣言しましたOption Compare Text
  2. 検索している形状名の場合に不一致があります。たとえば、形状に名前"#ShapeName#"が付けられていますが、検索しています"#shapename#"

これのいずれかが当てはまるかどうかを明確にするためにコメントできますか?

于 2013-04-28T09:16:00.083 に答える
0

#shapename# はどこから取得していますか? テストとして、foreach ovs 内に debug.print ovs.name を配置して、そのコレクションで扱っている名前を確認します。

于 2013-04-28T16:24:49.580 に答える