同心球の断面

 言語:ExcelVBA
 機能:同心球の断面に現れる同心円を表示する
 入力:球の中心と断面の距離(セルへの入力)
 出力:同心球の断面の現れる同心円を画像表示
     同心円の半径をM列に表示
 実行画面:



 ファイル: concentricSphere.xlsm



Sub CommandButton1_Click()
    Dim sr As Long
    Dim cr, d As Double
    d = ActiveSheet.Cells(1, 2).Value
    For sr = 10 To 300 Step 10
        'sr: 球の半径
        cr = Sqr(sr ^ 2 - d ^ 2)
        'cr: 断面に現れる円の半径
        ActiveSheet.Shapes.AddShape(msoShapeOval, 320 - cr, 320 - cr, cr * 2, cr * 2).Select
        Selection.ShapeRange.Fill.Transparency = 1#
        Selection.ShapeRange.Line.Visible = msoTrue
        ActiveCell.Activate
        Cells(sr / 10, 13).Value = cr
        'M列に実際の断面上の円の半径を表示
    Next
    
End Sub

Private Sub CommandButton2_Click()
    ActiveSheet.Range("M:M").Value = ""
    For i = ActiveSheet.Shapes.Count To 1 Step -1
        If ActiveSheet.Shapes(i).Type <> 12 Then ActiveSheet.Shapes(i).Delete
    Next i
End Sub