Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAでテキスボックス・図形の塗りつぶし色を変更する

VBAでテキスボックス・図形の塗りつぶし色を変更する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

このサイトのアクセスログを眺めていて、
「excel2010 textframe.textbox.backcolor = rgb(255, 255, 0)」
という検索キーワードに気づきました。

テキストボックスの塗りつぶし色を黄色(RGB(255, 255, 0))に設定するには、どのようなコードを書けばいいのか探していらしたのではないかと推測しています。

図形の塗りつぶし色を設定するサンプルマクロ

以下のSubプロシージャを実行すると、アクティブシートの1つ目の図形の塗りつぶし色が黄色になります。

Sub 図形の塗りつぶし色を変更する()
 ActiveSheet.Shapes(1).Fill.ForeColor.RGB = RGB(255, 255, 0)
End Sub

Shapeオブジェクトの、FillFormatオブジェクトの、ColorFormatオブジェクトを使うと、塗りつぶし色を変更できます。

プロパティ名とプロパティで返されるオブジェクト名が違うので、オブジェクト式に慣れていない方には、厄介なオブジェクト式です(FillプロパティでFillFormatオブジェクトを取得して、ForeColorプロパティでColorFormatオブジェクトを取得しています)。

以下のようなSubプロシージャにすると、アクティブシートの1つ目の図形がテキストボックスだったときに黄色に塗りつぶされます。

Sub テキストボックスの塗りつぶし色を変更する()
 With ActiveSheet.Shapes(1)
  If .Type = msoTextBox Then
   .Fill.ForeColor.RGB = RGB(255, 255, 0)
  End If
 End With
End Sub

テキストボックスはShapeの一種なのです。

「.」の後ろに続く単語は限定されている

「excel2010 textframe.textbox.backcolor = rgb(255, 255, 0)」
と検索なさった方は、Excel VBAの経験があまりない方だと思いますので、自然言語とプログラミング言語の大きな違いをお伝えしておきます。

一般に、人同士がコミュニケーションする際に利用する自然言語では、何らかの単語の後ろに続く単語は、非常にたくさんのバリエーションが考えられます。単語によっては無限に近い可能性もあります。

例えば「赤い」という単語の後ろには、(文法的には)ありとあらゆる名詞が続く可能性が考えられます。

これに対してプログラミング言語の場合は、何らか単語の後ろに続く単語は、かなり限定されます。
VBAのオブジェクト式の場合、「.」の後ろに続く単語は、オブジェクトに用意されているプロパティ名かメソッド名だけです。

VBEでコーディングする際に表示される自動メンバーは、そのオブジェクトに用意されているプロパティとメソッドを表示してくれているのです。

オブジェクトの階層関係と、どのオブジェクトがどのようなオブジェクトで、どんなプロパティやメソッドを持っているのかを少しずつ習得していきましょう。

最終更新日時:2021-12-17 08:57

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAでテキスボックス・図形の塗りつぶし色を変更する

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

検索


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

.