こんにちは、Ryoです。
先日の記事でVBAによるシート内に図形を作成する内容を書きましたが、実際使用する上では作成した図形に色を塗りたい、枠線も塗りつぶした色に合わせたい、図形内に表示した文字の色を変えたい・・・等々思うことがありますよね。
なので、今回はその指定方法について書いてみたいと思います。
前回記事「シート内に図形を追加する」は以下になりますので、よろしければ参照ください。
1.サンプル概要
以前の記事で使用したサンプルをベースに書いてみたいと思います。
先ず「爆発型」の図形を使い、図形内に「文字!」を表示しますが、図形と図形枠線は「赤」に塗りつぶして「文字!」を白色、そして文字配置を図形内中央とします。
実行結果はこのような画像になります。
ではサンプルコードを以下に記載しますので、ご確認ください。
2.サンプルコード
Sub Sample1() With ActiveSheet.Shapes.AddShape _ (msoShapeExplosion1, 120, 50, 100, 70) '表示文字の指定 .TextFrame.Characters.Text = "文字!" '図形内テキストのフォントカラーを指定する .TextFrame.Characters.Font.Color = RGB(255, 255, 255) '図形内のテキスト水平方向を中央位置にする .TextFrame.HorizontalAlignment = xlHAlignCenter '図形内のテキスト縦方向を中央位置にする .TextFrame.VerticalAlignment = xlVAlignCenter '図形の枠線の色を指定する .Line.ForeColor.RGB = RGB(255, 0, 0) '図形の塗りつぶし色を指定する .Fill.ForeColor.RGB = RGB(255, 0, 0) End With End Sub
図形をシートに挿入する、文字列指定は前回記事でご説明している通りなので割愛します。
◆図形内文字のフォントカラー指定
図形内のフォントカラー指定は、
.TextFrame.Characters.Font.Color = RGB(255, 255, 255)
この部分になります。Withを使っていますが全文を書くと、
ActiveSheet.Shapes.AddShape (msoShapeExplosion1, 120, 50, 100, 70).TextFrame.Characters.Font.Color = RGB(255, 255, 255)
長くなってしまうので、共通する部分はWithで指定して簡略化しています。
色はRGB関数を使って指定しますのでRGBが「赤」「緑」「青」になります。
数値は0~255の範囲で指定すればOKです。
◆図形内の文字配置
図形内の文字配置指定は、
.TextFrame.HorizontalAlignment = xlHAlignCenter ’水平方向中央
.TextFrame.VerticalAlignment = xlVAlignCenter ’縦方向中央
この部分で指定しています。
デフォルト状態で特に問題なければ指定しなくても問題はありませんが、おそらく図形中央位置に表示したいことが多いのではないかと思いますので、サンプルとして書いています。
◆図形枠線の色を指定
図形枠線の色指定はLineプロパティを使います。
.Line.ForeColor.RGB = RGB(255, 0, 0)
この部分で赤になるように指定しています。
赤にしているのは塗りつぶしを赤にするので、同色にするためです。
RGB関数の()内数値を変更すればお好みの色に変えることもできますので、用途に応じて使い分ければ良いかと思います。
◆図形の塗りつぶしを指定
図形の塗りつぶしは、Fillプロパティを使います。
.Fill.ForeColor.RGB = RGB(255, 0, 0)
この部分で図形の塗りつぶしを指定しています。
RGB関数については上述の通りですが、本サンプルでは「赤」としています。
3.まとめ
図形(オートシェイプ)を作成する上で必要となりそうな項目を書いてみましたが、よほど凝ったことをしない限り、これらの指定方法がわかっていれば実用上困ることは少ないのではないかと思います。
色も自身でカスタマイズ出来ますから、知っておくと便利ですので用途に応じて必要性があれば検討されてみると良いかもしれませんね。
以上、図形(オートシェイプ)やシェイプ内文字の色を操作する方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo