- ベストアンサー
VBAでオートシェープのテキストを取得の際、ShapesとDrawingObjects?
エクセル2003です。 オートシェープの基本図形の「額縁」に以下のマクロを登録しました。 マクロを呼び出したオートシェープに表示してあるテキストを取得しようとするものです。 Sub test() x = Application.Caller MsgBox ActiveSheet.Shapes(x).Characters.Text End Sub ところが実行時エラーとなってしまいます。 試行錯誤の結果、ShapesをDrawingObjectsに変えるとうまくいきます。 なぜでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Shapses(x) が テキストを含むとは限らないからでは? MsgBox ActiveSheet.Shapes(x).Name は通用します。 DrawingObjectsは互換用隠しオブジェクトですので使いたくないなら下記とか。 Sub aaa() x = Application.Caller MsgBox ActiveSheet.Shapes(x).Name MsgBox ActiveSheet.Shapes(x).TextFrame.Characters.Text End Sub
お礼
> Shapses(x) が テキストを含むとは限らないからでは? 仰せの通りですね。理解できました。 > MsgBox ActiveSheet.Shapes(x).TextFrame.Characters.Text TextFrameを使うんですね、ありがとうございました。 うまくいきました。