Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » Solidメソッドを持つオブジェクトは?

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2110 ビルド14527.20276 Microsoft Store)

「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

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » Solidメソッドを持つオブジェクトは?

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.