パッチワークで使うペンタゴンボールの型紙をExcelVBAで作図する方法のPart 2です。
エクセルのマクロで作図する方法として、正五角形に外接する円を五等分し、各点を結んで正五角形を作図するマクロをご紹介しました。
※ExcelVBAで作図する方法
ペンタゴンボールの型紙 ~ エクセルVBAで正五角形を作図してみました(2012年10月23日)
正五角形をExcelVBAで作図する方法Part 2では、正五角形の内角108°と外角72°から作図するマクロをご紹介します。
![](https://blogimg.goo.ne.jp/user_image/54/1e/c04b747eb9b0edd68da9673cee600274.jpg)
1.標準モジュールに下記のVBAコード(プログラム)を貼り付けてください。
留意点は、角度計算にラジアンを使うこと、cm(mm)をポイントに変換して作図することの2点です。
※VBAコードには、私の備忘録として多くのコメント(注釈)をつけました。
'ここから---------------------------------------------------------------------
Option Explicit
Sub 一辺がaの正5角形2()
Dim 正5角形 As Object
Dim a, x座標, y座標 As Double
'a = 一辺の長さ
Const PAI As Double = 3.14159265358979
'円周率 = PAI
'円周率は PAI = 4 * Atn(1) 又は
'ワークシート関数から PAI = Application.WorksheetFunction.Pi PAI = WorksheetFunction.Pi() で求めることもできます
If MsgBox("選択したセルの左上を基点に正5角形を作図しますか?", vbYesNo) = vbNo Then Exit Sub
' 一辺がaの正5角形に外接する円の半径rを求める公式 … r=a/2sin(180/5)
a = Application.InputBox("一辺の長さは(cm単位、例4.5)", Type:=1) '数値を受け取る(数値以外は受け取れない)
a = a * 10 * 72 / 25.4 'ポイントへ変換… 1ポイント = 1インチ ÷ 72 = 25.4mm ÷ 72 = 0.353mm
'正5角形作図 (for next 配列を使って簡略化できます)
'選択セルの左上位置が点0
With ActiveCell
x座標 = .Left
y座標 = .Top
End With
Set 正5角形 = ActiveSheet.Shapes.BuildFreeform(msoEditingCorner, x座標, y座標)
'点1
x座標 = x座標 - a * Cos(72 * PAI / 180) 'ラジアンの計算 360°= 2 * PAI
y座標 = y座標 + a * Sin(72 * PAI / 180)
正5角形.AddNodes msoSegmentLine, msoEditingCorner, x座標, y座標
'点2
x座標 = x座標 - a
y座標 = y座標
正5角形.AddNodes msoSegmentLine, msoEditingCorner, x座標, y座標
'点3
x座標 = x座標 - a * Cos(72 * PAI / 180)
y座標 = y座標 - a * Sin(72 * PAI / 180)
正5角形.AddNodes msoSegmentLine, msoEditingCorner, x座標, y座標
'点4
x座標 = x座標 + a * Sin(54 * PAI / 180)
y座標 = y座標 - a * Cos(54 * PAI / 180)
正5角形.AddNodes msoSegmentLine, msoEditingCorner, x座標, y座標
'点5
With ActiveCell
x座標 = .Left
y座標 = .Top
End With
正5角形.AddNodes msoSegmentLine, msoEditingCorner, x座標, y座標
正5角形.ConvertToShape.Select
With Selection
.Placement = xlMove 'セルに合わせて移動するがサイズ変更はしない
.ShapeRange.LockAspectRatio = msoTrue '図形の縦横の比率を固定
.ShapeRange.Fill.Visible = msoFalse '塗りつぶしなし
.ShapeRange.Name = "正5角形" '図形の名前
.ShapeRange.Line.Weight = 0.75 '線の太さ
.ShapeRange.Line.ForeColor.ObjectThemeColor = msoThemeColorText1 '線の色=黒
End With
End Sub
'ここまで---------------------------------------------------------------------
1.正五角形の基点となる位置のセルを選択します。
作成する正五角形の大きさにもよりますが、「I30」前後のセルを選択します。
3.マクロを実行すると、作成する正五角形の一辺の長さを入力する画面が表示されますので、任意の大きさを入力します。例えば5.5cm(55mm)の場合は5.5と入力します。
4.選択したセルの左上を基点とした正五角形が作図されます。
※目印として選択したセルをオレンジ色にしました。
・底辺が水平になるように作図は正五角形の右上の点(中心点から見て18°の位置)から始めます。
・以下、時計回りで 4点の移動距離の座標を求めます。
![](https://blogimg.goo.ne.jp/user_image/75/fd/579089745dc578f1dcb00f42e0f409a4.jpg)
5.作図した正五角形はワードで印刷した方が、寸法通りに印刷されます。
エクセルで印刷する場合は、拡大印刷が必要です。(我が家のプリンターは109%で寸法通りです)
パッチワークの型紙印刷は、エクセルそれともワード ~ 餅屋は餅屋で役割分担
エクセルのマクロで作図する方法として、正五角形に外接する円を五等分し、各点を結んで正五角形を作図するマクロをご紹介しました。
※ExcelVBAで作図する方法
ペンタゴンボールの型紙 ~ エクセルVBAで正五角形を作図してみました(2012年10月23日)
正五角形をExcelVBAで作図する方法Part 2では、正五角形の内角108°と外角72°から作図するマクロをご紹介します。
![](https://blogimg.goo.ne.jp/user_image/54/1e/c04b747eb9b0edd68da9673cee600274.jpg)
1.標準モジュールに下記のVBAコード(プログラム)を貼り付けてください。
留意点は、角度計算にラジアンを使うこと、cm(mm)をポイントに変換して作図することの2点です。
※VBAコードには、私の備忘録として多くのコメント(注釈)をつけました。
'ここから---------------------------------------------------------------------
Option Explicit
Sub 一辺がaの正5角形2()
Dim 正5角形 As Object
Dim a, x座標, y座標 As Double
'a = 一辺の長さ
Const PAI As Double = 3.14159265358979
'円周率 = PAI
'円周率は PAI = 4 * Atn(1) 又は
'ワークシート関数から PAI = Application.WorksheetFunction.Pi PAI = WorksheetFunction.Pi() で求めることもできます
If MsgBox("選択したセルの左上を基点に正5角形を作図しますか?", vbYesNo) = vbNo Then Exit Sub
' 一辺がaの正5角形に外接する円の半径rを求める公式 … r=a/2sin(180/5)
a = Application.InputBox("一辺の長さは(cm単位、例4.5)", Type:=1) '数値を受け取る(数値以外は受け取れない)
a = a * 10 * 72 / 25.4 'ポイントへ変換… 1ポイント = 1インチ ÷ 72 = 25.4mm ÷ 72 = 0.353mm
'正5角形作図 (for next 配列を使って簡略化できます)
'選択セルの左上位置が点0
With ActiveCell
x座標 = .Left
y座標 = .Top
End With
Set 正5角形 = ActiveSheet.Shapes.BuildFreeform(msoEditingCorner, x座標, y座標)
'点1
x座標 = x座標 - a * Cos(72 * PAI / 180) 'ラジアンの計算 360°= 2 * PAI
y座標 = y座標 + a * Sin(72 * PAI / 180)
正5角形.AddNodes msoSegmentLine, msoEditingCorner, x座標, y座標
'点2
x座標 = x座標 - a
y座標 = y座標
正5角形.AddNodes msoSegmentLine, msoEditingCorner, x座標, y座標
'点3
x座標 = x座標 - a * Cos(72 * PAI / 180)
y座標 = y座標 - a * Sin(72 * PAI / 180)
正5角形.AddNodes msoSegmentLine, msoEditingCorner, x座標, y座標
'点4
x座標 = x座標 + a * Sin(54 * PAI / 180)
y座標 = y座標 - a * Cos(54 * PAI / 180)
正5角形.AddNodes msoSegmentLine, msoEditingCorner, x座標, y座標
'点5
With ActiveCell
x座標 = .Left
y座標 = .Top
End With
正5角形.AddNodes msoSegmentLine, msoEditingCorner, x座標, y座標
正5角形.ConvertToShape.Select
With Selection
.Placement = xlMove 'セルに合わせて移動するがサイズ変更はしない
.ShapeRange.LockAspectRatio = msoTrue '図形の縦横の比率を固定
.ShapeRange.Fill.Visible = msoFalse '塗りつぶしなし
.ShapeRange.Name = "正5角形" '図形の名前
.ShapeRange.Line.Weight = 0.75 '線の太さ
.ShapeRange.Line.ForeColor.ObjectThemeColor = msoThemeColorText1 '線の色=黒
End With
End Sub
'ここまで---------------------------------------------------------------------
1.正五角形の基点となる位置のセルを選択します。
作成する正五角形の大きさにもよりますが、「I30」前後のセルを選択します。
3.マクロを実行すると、作成する正五角形の一辺の長さを入力する画面が表示されますので、任意の大きさを入力します。例えば5.5cm(55mm)の場合は5.5と入力します。
4.選択したセルの左上を基点とした正五角形が作図されます。
※目印として選択したセルをオレンジ色にしました。
・底辺が水平になるように作図は正五角形の右上の点(中心点から見て18°の位置)から始めます。
・以下、時計回りで 4点の移動距離の座標を求めます。
![](https://blogimg.goo.ne.jp/user_image/75/fd/579089745dc578f1dcb00f42e0f409a4.jpg)
5.作図した正五角形はワードで印刷した方が、寸法通りに印刷されます。
エクセルで印刷する場合は、拡大印刷が必要です。(我が家のプリンターは109%で寸法通りです)
パッチワークの型紙印刷は、エクセルそれともワード ~ 餅屋は餅屋で役割分担
※コメント投稿者のブログIDはブログ作成者のみに通知されます