どのアプリケーションソフトの件かハッキリしませんが、
「vba 図形の枠線 種類」
「VBA 図形の枠線の色を変更」
「VBA 図形の枠線の太さの変更」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがあります。
上図のような[図形の枠線]の書式設定を、VBAから行うには、どのようなコードを書けばいいのかを探していたのでしょう。
図形の枠線の書式設定はLineFormatオブジェクト
「Excel VBA TextFrame2.TextRange 枠線の太さ」
といった検索キーワードでのアクセスもありますけれど、図形の枠線を操作するに使うのは、TextFrame2オブジェクトのTextRangeプロパティで取得できるTextRange2オブジェクトではありません。
Office.TextRange2オブジェクトは、少々わかりにくいオブジェクトですが、文字列に関連する操作を行うためのオブジェクトです。
図形の枠線書式を設定するには、ShapeオブジェクトのLineプロパティで取得できる、
LineFormatオブジェクトを利用します。
図形の枠線書式を設定するサンプルマクロ
以下のSubプロシージャを実行すると、1枚目のシートの、1つ目の図形の枠線書式を設定できます。
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ステートメントでステップ実行モードになります。
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ステートメント後にステップ実行しましょう。
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
- Newer:条件付き書式で2番目に小さいデータを目立たせる-SMALL関数
- Older:関数を使わない比較演算子の使い方
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAで図形の枠線書式を設定する-LineFormatオブジェクト