2012年12月6日木曜日

[ExcelVBA] オートシェイプの値を読み書き


アドベントカレンダー 6日目

オートシェイプのテキスト名を取得/変更したい

マクロの記録を使うと以下のようなコードを返してくる。
(いろいろ 略)
    ActiveSheet.Shapes("オートシェイプ名").Select
    Selection.Characters.Text = "aabb"
(いろいろ 略)

つまり、Characters.Textとすると値がRead/Writeできるわけです。
ところが、いちいちSelectしてから操作するのはいまいちなので
Selectを省略してみると、さっそくエラーとなります。

ActiveSheet.Shapes("オートシェイプ名").Characters.Text = "aabb"

Characters.Textは、アクティブなオートシェイプに対してしか、
テキストのRead/Writeはできないようです。

そのため、Characters.Textではなく
TextFrame.Characters.TextであればSelectしておく必要がなくなります。

ActiveSheet.Shapes("オートシェイプ名").TextFrame.Characters.Text

Thisworkbook.ActiveSheet.Shapes("オートシェイプ名").TextFrame.Characters.Text

0 件のコメント: