[엑셀 매크로] 일정한 간격으로 증/감소 원 그리기

2021. 1. 23. 14:49사무용 엑셀-매크로

일정한 간격으로 증가/ 감소하는 원을 그리기

 

실행 이미지 / 실행 화면

 

VBA 코드로 생성한 원 이미지

 

 

 

일정한 간격으로 증 / 감소 원 그리기 코드아래 코드

Option Explicit

Public Sub setting()
    Dim tmp As Single
    Dim i As Integer
    Dim left As Single
    Dim top As Single
    Dim diameter As Single
    
    tmp = 10
    
    For i = 3 To 8
        
        If i = 3 Then
            left = 150 + i
            top = 150 + i
            diameter = i * tmp
        Else
            left = left + (diameter - (i * tmp)) / 2
            top = top + (diameter - (i * tmp)) / 2
            diameter = i * tmp
        End If
    
        Call drawCircle(left, top, diameter)
    
    
    Next i
    
   
    
End Sub

Sub drawCircle(left As Single, top As Single, diamater As Single)

   ActiveSheet.Shapes.AddShape(msoShapeOval, left, top, diamater, diamater).Select
    Selection.ShapeRange.Fill.Visible = msoFalse
    With Selection.ShapeRange.Line
        .ForeColor.ObjectThemeColor = msoThemeColorText1
    End With
    With Selection.ShapeRange.Line
        .ForeColor.ObjectThemeColor = msoThemeColorText1
    End With
      
      
End Sub


코드 수정 시 참조 사항

1. 원의 개수를 수정하고 싶을 때

 For i  = 3 To 8 

 

 

위 부분에서 "8" 부분을 수정하면 됨. 혹은 "3"부분을 수정하거나.

원의 개수는 (a To a1) 일 때, (a1 - a)+1 만큼 그려지기 때문에 이 부분을 염두하면 된다.

 

2. 원의 위치를 수정하고 싶을 때

    left = 150 + i
    top = 150 + i

 

위 부분에서 left 150 , top 150 대신 다른 값을 설정하면 된다. (left, top이 x,y 역할을 하고 있는 것.)

 

3. 원의 지름/ 지름의 간격을 수정하고 싶을 때

    tmp = 10

 

해당 부분을 수정하면 됨. tmp는 일종의 지름의 간격. 

원은 (3 To 8) => * tmp

원의 반지름은 30,40,50,60,70,80 이렇게 그려진다.

 

tmp 를 20으로 수정한다면 

 

원은 (3 To 8) => * tmp

원의 반지름은 60,80,100,120,140,160 이렇게 그려진다.

 

4. 원의 정보를 수정하고 싶을 때

   ActiveSheet.Shapes.AddShape(msoShapeOval, left, top, diamater, diamater).Select
    Selection.ShapeRange.Fill.Visible = msoFalse
    With Selection.ShapeRange.Line
        .ForeColor.ObjectThemeColor = msoThemeColorText1
    End With
    With Selection.ShapeRange.Line
        .ForeColor.ObjectThemeColor = msoThemeColorText1
    End With
      

해당부분을 수정하면 됨.

해당 원의 추가 세팅에 대해서 궁금한 사람은 댓글 달아주세요.