2012年12月6日木曜日

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


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

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

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

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

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

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

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

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

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

0 件のコメント: