描写する前に全図形を削除
何度でも試行できるように、TESTマクロを実行する前にアクティブシートの全図形を削除します。
Sub 全図形削除()
For Each S In ActiveSheet.Shapes
S.Delete
Next S
End Sub
EXCEL方眼の1枡を5mmにする
1枡の四角をB2に作成します。B2の高さ、幅を変更すると
つられて四角形も形を変えるので、5mm四角になるように調整します。
図形の書式設定をみると、縦横19ピクセルで5mm方眼ができることがわかりました。
Sub TEST()
Call 全図形削除
Call 方形("B2")
End Sub
Sub 方形(R, Optional T = 1)
Set R = Range(R)
With ActiveSheet.Shapes.AddShape(T, R.Left, R.Top, R.Width, R.Height)
.Line.ForeColor.RGB = vbBlack
.Fill.Visible = False
End With
End Sub
方眼に図形を合わせる比率
20枡x20枡の方形と100x100の図形を比較します。
方形が10.05cm x 10.05cm
方形が 3.53cm x 3.53cm
比率 2.847 ≒ 10.05 / 3.53
なので、関数RF_で補正をかけます。
Sub TEST()
Call 全図形削除
Call 方形("B2")
Call 方形("B2:U21")
Call 図形("B2", 1, 100, 100)
End Sub
'Function RF_(L, Optional 倍率 = 1)
' RF_ = L
'End Function
Function RF_(L, Optional 倍率 = 1)
RF_ = L * 2.847 * 倍率
End Function
Sub 図形(R, Optional T = 1, Optional RH = 100, Optional RW = 100, Optional B = 1)
With ActiveSheet.Shapes.AddShape(T, Range(R).Left, Range(R).Top, RF_(RW, B), RF_(RH, B))
.Line.ForeColor.RGB = RGB(0, 0, 0)
.Fill.Visible = False
End With
End Sub
XZ軸を表示する。
旋盤の場合は、縦方向がX軸。横方向がZ軸になるため、D10が原点になるようにXZ軸を表示させます。
セル幅、セル高さの変更時に図形が変形、移動しないように図形のplacement を xlFreeFloating
とします。
Sub TEST()
Call 全図形削除
Call 方形("B2")
Call 方形("B2:U21")
Call 図形("B2", 1, 100, 100)
Call XZ_AXIS("D10")
For Each S In ActiveSheet.Shapes
S.Placement = xlFreeFloating
Next S
End Sub
Sub XZ_AXIS(Optional R = "D10", Optional X = 60, Optional Z = 80, Optional B = 1)
GX = Range(R).Top
GZ = Range(R).Left
RZ = Range(R).Width
X = RF_(X, B)
Z = RF_(Z, B)
With ActiveSheet.Shapes.AddLine(GZ - RZ, GX, GZ + Z, GX).Line
.ForeColor.RGB = vbRed
.Weight = 1.2
.DashStyle = msoLineDashDot
End With
With ActiveSheet.Shapes.AddLine(GZ, GX - X / 2, GZ, GX + X / 2).Line
.ForeColor.RGB = vbBlue
.Weight = 1.2
.DashStyle = msoLineDashDot
End With
End Sub
色々付け加えて、下図のようになります。