つらつら Excel VBA

私の備忘録です。

波線を作る(BuildFreeform)

オートシェイプを自分で自由に書ける!

Sub 波線作成テスト()
    
    Dim myShape As Shape
    Dim ffb As FreeformBuilder
    
    Dim r As Range
    Set r = Range("A3")
    
    Set ffb = Shapes.BuildFreeform(msoEditingAuto, r.Left, r.Top)
    
    Dim i As Integer
    For i = 1 To 3
        
        Set r = r.Offset(-1, 1)
        ffb.AddNodes msoSegmentCurve, msoEditingAuto, r.Left, r.Top
        
        Set r = r.Offset(1, 1)
        ffb.AddNodes msoSegmentCurve, msoEditingAuto, r.Left, r.Top
        
    Next
    
    Set myShape = ffb.ConvertToShape '作成

    With myShape.Line
        .DashStyle = msoLineSolid
        .Weight = 3
        .ForeColor.RGB = rgbDarkRed
    End With

End Sub


曲線はmsoSegmentCurve、直線はmsoSegmentLineに書き換える。

ffb.AddNodes msoSegmentLine, msoEditingAuto, r.Left, r.Top


開始地点と終了地点を結ぶと、普通のオートシェイプの様に塗りつぶしなど自由自在。
直線と曲線の混在も可能。扇型を4つ作って重ねてみた。三角関数

Excel標準のオートシェイプでも扇型は作れるけど、上記の様には作れないはず。

以上。