グループであるVisioに形があります。グループ図形のテキストを編集できます。編集するときは、子図形の 1 つをグループ図形のテキストのすぐ右に配置します。
これを行うために、グループ シェイプを引数として受け取る VBA 関数を作成しました。これは、シェイプシートの TextText イベントで呼び出されます。
そのため、このルーチンはグループ図形で BoundingBox(visBBoxUprightText) を呼び出すだけで、テキストの境界を取得し、サブ図形を bbox の右側に配置します。しかし、境界は間違っているようです。それらは、最後の文字の左側または右側に戻ってくることがあります。
visBBoxUprightText フラグは、レンダリングされたテキスト文字の周囲の四角形の座標を取得する以外の意味があると考えられていますか?
編集: もう少し調べてみると、BoundingBox メソッドが shape.type プロパティを調べて、境界ボックスが囲むものを判断していることがわかります。シェイプ タイプが visGroup の場合、サブ シェイプも含まれますが、グループを単純なシェイプと見なすよう強制するフラグはないようです。
だから私は今、問題は、サブシェイプを無視して、テキストの BoundingBox を取得する方法はあるのでしょうか? テキストを保持するために別のサブシェイプを配置してみましたが、今では魅力的に機能します。