2009年05月13日

ShapeStyleプロパティ

Excel 2007(Office 2007)になって、図形に関する複数の書式をセットにした「図形のスタイル」機能が追加されました。
VBAで図形のスタイルを設定する場合は、ShapeオブジェクトかShapeRangeオブジェクトのShapeStyleプロパティを使用します。

設定値として使用するのは、MsoShapeStyleIndexクラスに属する定数……なんですが、実はExcel VBAヘルプに記載されているこの定数名が、すべて間違っています。(^^;)

正しくは「msoShapeStylePreset1」等なのですが、ヘルプでは「msoShapeStyle1」。
「Preset」無しの定数はまったく未定義であるため、実行するとエラーになります。
ワークシート上に表示される図形のスタイル名は「枠線 - 淡色1、塗りつぶし - アクセント1」のような感じなので、いずれにしても定数名との関係性はありません。

図形に関する操作は、2007ではマクロの記録機能でも記録されなくなってしまったので、オブジェクトブラウザの使い方を知らなければ、何が正しい定数名なのかもわからないわけです。
定数ではなく適当な数値を割り当てていくという手はあるでしょうが、目的のスタイルを見つけるまでには結構な試行錯誤が必要になりそうです。

……もっとも、定数名と実際のスタイルとの対応もわかりづらいので、直値ほどではないにしても、定数を使う場合もある程度の試行錯誤は必要かもしれません。(^^;)

※このネタ、前にも書いていなかったかどうか不安になって、一応確認したのですが、図形ネタ自体がかなり多かったですね。
実際には「VBAで図形を操作」って、それほどニーズもないのかもしれませんが。(^^;)

※追記
ちょっと追加というか、訂正。
「オブジェクトブラウザの使い方を知らなければ」と書きましたが、自動メンバ表示で出てくるような書き方をするという手はありましたね。
posted by 土屋和人 at 09:36| Comment(0) | TrackBack(0) | Excel
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/29104663
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック