こんばんわ。
今回はついにパワプロ以外の話をします。
何の話かといいますとVBAの話です。
とか言っても10000件のデータを条件に応じて抽出して条件ごとに別のシートに書き出すものではなくて、円弧(もどき)を描画するプログラムです
それではコードの紹介に参りましょう。
Sub PseudoArcDraw()
Dim x As Single
Dim y As Single
Dim Radius As Single
Dim Sine As Single
Dim Cosine As Single
Dim StartDegrees As Single
Dim EndDegrees As Single
Radius = 100
x = 200
y = 200
StartDegrees = 0
EndDegrees = 90
Sine = Sin(2 * 3.1416 * ((360 - StartDegrees) / 360))
Cosine = Cos(2 * 3.1416 * ((360 - StartDegrees) / 360))
With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x + (Cosine * Radius), y + (Sine * Radius))
For Degrees = StartDegrees To EndDegrees
Sine = Sin(2 * 3.1416 * ((360 - Degrees) / 360))
Cosine = Cos(2 * 3.1416 * ((360 - Degrees) / 360))
.AddNodes msoSegmentLine, msoEditingAuto, x + (Cosine * Radius), y + (Sine * Radius)
Next Degrees
.ConvertToShape.Select
End With
End Sub
…え?せっかく円弧(msoShapeArc)があるのだからそれで書けばいいじゃんって?
いやいや、今回この話をしたのは理由がある。それは…
ワイは実際の鉄道会社が使うような路線図をだれでも比較的簡単に書けるVBAプログラムを書く、という目標があるからだ!
そして今回このプログラムを書いた理由は…
円弧(msoShapeArc)使うと座標を取得したその後がいろいろとめんどくさいからだよ!!!!
(90度なら問題ないが、45度などにするとshapse.width等で取得した座標と線の終点がずれる)
なので「円弧(もどき)」でお茶を濁した、という具合です。
以上!
追記:コードに誤りがあったので修正しました。