「vba Solid のオブジェクト」
といった検索キーワードでアクセスがありました。
Excel VBAのコード
With ActiveSheet.Shapes(1).Fill .Solid .ForeColor.RGB = RGB(255, 0, 0) End With
を実行すると、「ActiveSheet.Shapes(1)」で取得できるアクティブシート上の1つ目の図形が、単色の赤色で塗りつぶしされます。
ここで使っているSolidメソッドを持っているオブジェクトが何なのか、調べていらしたのでしょうか。
SolidメソッドはFillFormatオブジェクトが持つ
結論をお伝えすると、SolidメソッドはFillFormatオブジェクトに用意されています。Shapeの塗りつぶし書式を表すFillFormatオブジェクトには8個のメソッドが用意されており、
その1つがSolidです。
Shape.Fillの戻り値はFillFormat
プロパティの名前と取得できるオブジェクトの名前が微妙に異なり厄介ですが、ShapeオブジェクトやShapeRangeオブジェクトに用意されているFillプロパティは、
With ActiveSheet.Shapes(1).Fill
オブジェクトブラウザーの詳細ペインに「Property Fill As FillFormat」と表示されているとおり、塗りつぶし書式を表すFillFormatオブジェクトを返します。
そんなShape.Fillプロパティで取得できるFillFormatオブジェクトのSolidメソッドを使っているのが、上記の
With ActiveSheet.Shapes(1).Fill .Solid
です。
ActiveSheetの戻り値をWorksheet型オブジェクト変数へ代入しましょう
SolidメソッドがFillFormatオブジェクトに用意されていることを暗記するよりも、こういったことを自分で調べられるようになりましょう。
ActiveSheetプロパティの戻り値がObjectと定義されているために、
「ActiveSheet.Shapes(1).Fill.Solid」といったコードでは、「.Fill」が何を返すのか調べようがありません。
しかしActiveSheetプロパティの戻り値をWorksheet型のオブジェクト変数に代入するコードにしてやれば、ショートカットキー[Ctrl]+[I]でヒントを表示できるようになり、Solidメソッドを持つオブジェクトが何なのかも調べられます。
具体的には、以下のような形のコードにします。
Sub sample() Dim ws As Worksheet Set ws = ActiveSheet ws.Shapes(1).Fill.Solid End Sub
この形のコードであれば、コードウィンドウで「Fill」にカーソルを置いてショートカットキー[Ctrl]+[I]を押すことで、
上図のとおりFillの戻り値がFillFormatであることを自分で調べられます。
最終更新日時:2021-11-22 17:19
- Newer:InlineShapeを選択する
- Older:Word VBAでExcelのセルを指定するには
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » Solidメソッドを持つオブジェクトは?