• ベストアンサー

エクセルVBAでオートシェイプの属性を取得する方法を教えてください。

お世話になります。VBAについてほとんど理解していないので、ピントはずれな質問かも知れませんがよろしくお願いします。 エクセルのシートに四角形のオートシェイプが10個ほどあります。このなかの、1つを選択して色やパターンなどの属性を取得するのに次のように書いてみました。 Sub test() MsgBox Selection.ShapeRange.Fill.ForeColor.SchemeColor MsgBox Selection.ShapeRange.Fill.Patterned End Sub 1行目の色についてはメッセージボックスに表示されるのですが、パターンが表示されません。 パターンの属性を取得する方法を教えてください。 エクセルのバージョンは:EXCEL2002です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

Selection.ShapeRange.Fill.Patternedは、メソッドなので、この様な使い方で値を取得する事はできません。 自動記録してみると、 Selection.ShapeRange.Fill.Patterned msoPatternShingle 等となり、= が無いことが分かります。 これは、Selection.ShapeRange.Fill.Patterned(msoPatternShingle) とも書けます。 パターンの属性は、 MsgBox Selection.ShapeRange.Fill.Pattern で値が取得できます。 いじってみると、 Selection.ShapeRange.Fill.Pattern = msoPattern10Percent は、「値の取得のみが可能なプロパティに値を設定することはできません」というエラーになりました。 値の設定はメソッドPatternedで行い、取得はプロパティPatternで行う様になっていることが分かります。

kazh
質問者

お礼

mitarashiさん 早速解答していただきありがとうございました。 VBAはまだまだ初心者なのでこれから勉強して行きたいと思います。 無事にパターンの値が取得できました。 でも、値が"msoPatternShingle"ではなく数字なのですね。ちょっと驚きました。 ありがとうございました。

その他の回答 (1)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.2

MsgBox Selection.ShapeRange.Fill.Pattern としてみてください。

kazh
質問者

お礼

早速、解答していただき、ありがとうございました。 今後ともよろしくお願いします。

関連するQ&A