Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAで図形の枠線書式を設定する-LineFormatオブジェクト

VBAで図形の枠線書式を設定する-LineFormatオブジェクト

対象:Excel2010, Excel2013, Windows版Excel2016

どのアプリケーションソフトの件かハッキリしませんが、
「vba 図形の枠線 種類」
「VBA 図形の枠線の色を変更」
「VBA 図形の枠線の太さの変更」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがあります。

上図のような[図形の枠線]の書式設定を、VBAから行うには、どのようなコードを書けばいいのかを探していたのでしょう。

図形の枠線の書式設定はLineFormatオブジェクト

「Excel VBA TextFrame2.TextRange 枠線の太さ」
といった検索キーワードでのアクセスもありますけれど、図形の枠線を操作するに使うのは、TextFrame2オブジェクトのTextRangeプロパティで取得できるTextRange2オブジェクトではありません。

オブジェクトブラウザー:TextRange2オブジェクト

Office.TextRange2オブジェクトは、少々わかりにくいオブジェクトですが、文字列に関連する操作を行うためのオブジェクトです。

図形の枠線書式を設定するには、ShapeオブジェクトのLineプロパティで取得できる、

オブジェクトブラウザー:Shape.Lineプロパティ

LineFormatオブジェクトを利用します。

オブジェクトブラウザー:LineFormatオブジェクト

図形の枠線書式を設定するサンプルマクロ

以下のSubプロシージャを実行すると、1枚目のシートの、1つ目の図形の枠線書式を設定できます。

Sub 図形の枠線書式を設定する()
 Dim line_format As LineFormat
 Set line_format = Sheets(1).Shapes(1).Line
 With line_format
  .ForeColor.RGB = RGB(255, 0, 0)
  .Weight = 6
  .Style = msoLineSingle
  .DashStyle = msoLineSolid
 End With
End Sub

前景色が赤色、
  .ForeColor.RGB = RGB(255, 0, 0)
太さは6ポイント、
  .Weight = 6
一重線の、
  .Style = msoLineSingle
実線になります。
  .DashStyle = msoLineSolid

LineFormat.StyleとDashStyleをステップ実行で確認するサンプルマクロ

StyleプロパティとDashStyleプロパティは、定数で指定できます。

どの定数を指定すると、どのような枠線になるかは、1枚目のシートの、1つ目の図形が見える状態で、以下のSubプロシージャをステップ実行してみるとわかるでしょう。

LineFormat. Styleプロパティを確認するサンプルマクロ

以下のSubプロシージャを実行すると、Stopステートメントでステップ実行モードになります。

Sub 図形の枠線書式をステップ実行で確認する_Styleプロパティ()
 Dim line_format As LineFormat
 Set line_format = Sheets(1).Shapes(1).Line
 With line_format
  .DashStyle = msoLineSolid
  .Weight = 6
  Stop
  .Style = msoLineSingle
  .Style = msoLineThickBetweenThin
  .Style = msoLineThickThin
  .Style = msoLineThinThick
  .Style = msoLineThinThin
 End With
End Sub

その後、以下の行をショートカットキー[F8]でステップ実行すると、線の形が変化する様子を観察できます。
  .Style = msoLineSingle
  .Style = msoLineThickBetweenThin
  .Style = msoLineThickThin
  .Style = msoLineThinThick
  .Style = msoLineThinThin

定数の名前と、実際の線の形を見れば、納得感があるはずです。

LineFormat.DashStyleプロパティを確認するサンプルマクロ

こちらもStopステートメント後にステップ実行しましょう。

Sub 図形の枠線書式をステップ実行で確認する_DashStyleプロパティ()
 Dim line_format As LineFormat
 Set line_format = Sheets(1).Shapes(1).Line
 With line_format
  .Style = msoLineSingle
  .Weight = 6
  Stop
  .DashStyle = msoLineDash
  .DashStyle = msoLineDashDot
  .DashStyle = msoLineDashDotDot
  .DashStyle = msoLineLongDash
  .DashStyle = msoLineLongDashDot
  .DashStyle = msoLineLongDashDotDot
  .DashStyle = msoLineRoundDot
  .DashStyle = msoLineSolid
  .DashStyle = msoLineSquareDot
  .DashStyle = msoLineSysDashDot
  .DashStyle = msoLineSysDot
 End With
End Sub

以下の行をステップ実行しながら、定数名と線の様子を見比べると、
  .DashStyle = msoLineDash
  .DashStyle = msoLineDashDot
  .DashStyle = msoLineDashDotDot
  .DashStyle = msoLineLongDash
  .DashStyle = msoLineLongDashDot
  .DashStyle = msoLineLongDashDotDot
  .DashStyle = msoLineRoundDot
  .DashStyle = msoLineSolid
  .DashStyle = msoLineSquareDot
  .DashStyle = msoLineSysDashDot
  .DashStyle = msoLineSysDot
納得できると思います。

最終更新日時:2021-12-17 15:26

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAで図形の枠線書式を設定する-LineFormatオブジェクト

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

検索


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

.