直感的な「角度の理解」に向けて ① ~ 円弧を描画 ~

長女が、算数で苦戦している。
「角度」を、なかなか感覚的に理解できないようだ。
そこで今回は、補助ツールの作成に挑戦する。
f:id:Infoment:20190520205445p:plain

角度の理解のために、「円弧」を描画してみる。まず円弧の描画だが、これにはaddShapeメソッドを用いる。
docs.microsoft.com

円弧なので、描画するオートシェイプのタイプは「msoShapeArc」を指定する。

Sub Macro1()
    ActiveSheet.Shapes.AddShape(msoShapeArc, 150, 100, 100, 100).Select
End Sub

f:id:Infoment:20190520211018p:plain

上記は作成すると同時に選択しているが、選択は必須ではない。むしろ作成と同時に変数にセットしたほうが、何かと扱いやすい。

Sub Macro1()
    Dim Shape
    Set Shape = ActiveSheet.Shapes.AddShape(msoShapeArc, 150, 100, 100, 100)
End Sub

こんな時、いつも迷うのが変数の型だ。円弧の場合、何を指定すればよいだろう。
そんな時は、バリアント型(万能型)で一度受け取って、TypeNameで型の名前を調べると便利だ。

Sub Macro1()
    Dim Shape
    Set Shape = ActiveSheet.Shapes.AddShape(msoShapeArc, 150, 100, 100, 100)
    MsgBox TypeName(Shape)
End Sub

f:id:Infoment:20190520212349p:plain
型の名前はShapeと出た。早速、変数の宣言に反映しよう。

このように適切な型で変数を宣言した場合、変数の後に「.」を付すと、取りうる選択肢が表示されて便利だ。
f:id:Infoment:20190520212526p:plain

今回は、円弧だけだと物足りないので、中身も塗りつぶしてみよう。

Sub Macro1()
    Dim Shape As Excel.Shape
    Set Shape = ActiveSheet.Shapes.AddShape(msoShapeArc, 150, 100, 100, 100)
    With Shape.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent1
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Solid
    End With
End Sub

これで、一直角の扇形を描画することが出来た。
f:id:Infoment:20190520213230p:plain
さて、最終的に「90°」という数字の情報から、直感的にこの形状が連想できるようにしたい訳だが・・・これについては、明日に続きます。

参考まで。