長女が、算数で苦戦している。
「角度」を、なかなか感覚的に理解できないようだ。
そこで今回は、補助ツールの作成に挑戦する。
角度の理解のために、「円弧」を描画してみる。まず円弧の描画だが、これにはaddShapeメソッドを用いる。
docs.microsoft.com
円弧なので、描画するオートシェイプのタイプは「msoShapeArc」を指定する。
Sub Macro1() ActiveSheet.Shapes.AddShape(msoShapeArc, 150, 100, 100, 100).Select End Sub
上記は作成すると同時に選択しているが、選択は必須ではない。むしろ作成と同時に変数にセットしたほうが、何かと扱いやすい。
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
型の名前はShapeと出た。早速、変数の宣言に反映しよう。
このように適切な型で変数を宣言した場合、変数の後に「.」を付すと、取りうる選択肢が表示されて便利だ。
今回は、円弧だけだと物足りないので、中身も塗りつぶしてみよう。
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
これで、一直角の扇形を描画することが出来た。
さて、最終的に「90°」という数字の情報から、直感的にこの形状が連想できるようにしたい訳だが・・・これについては、明日に続きます。
参考まで。