Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

VBA

VBA를 사용하여 Excel에 도형 삽입하기

권현욱(엑셀러) 2023. 11. 11. 16:00
반응형

Excel 통합 문서에 도형을 삽입하는 것은 매우 쉽습니다. [삽입] 탭 - [일러스트레이션] 그룹 - [도형]에서, 원하는 도형을 선택하고 그려 넣으면 됩니다. 그런데 만들어야 할 도형이 많다면 어떻게 할까요?

VBA를 이용하면 많은 도형을 한꺼번에 삽입할 수 있습니다. 뿐만 아니라 도형을 셀이나 범위에 맞춰서 작성할 수도 있습니다.

권현욱(엑셀러) | 아이엑셀러 닷컴 대표 · Microsoft Excel MVP · Excel 솔루션 프로바이더 · 작가

※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.


  • 원문: Use VBA to Insert Checkboxes in Excel
  • URL: https://turbofuture.com/computers/use-vba-to-insert-checkboxes-in-excel

VBA 코드 작성

엑셀 워크시트 상태에서 Alt + F11을 눌러 Visual Basic Editor를 표시합니다. [삽입] - [모듈] 메뉴를 선택하여 모듈을 하나 삽입하고 다음 코드를 복/붙합니다.

Sub InsertShapes()
    Dim rng As Range
    Dim shapeType As Integer
    Dim shape As Shape
    Dim cell As Range
    On Error Resume Next
    Set rng = Application.InputBox("Select the range to insert shapes:", Type:=8)
    On Error GoTo 0
    If rng Is Nothing Then
        MsgBox "No range selected. Macro canceled."
        Exit Sub
    End If
    shapeType = InputBox("Choose a shape type:" & vbCrLf & _
                        "1 - Rectangle" & vbCrLf & _
                        "2 - Oval" & vbCrLf & _
                        "3 - Arrow" & vbCrLf & _
                        "4 - Star")
    For Each cell In rng
        ' Calculate the center position of the cell
        Dim centerX As Double
        Dim centerY As Double
        centerX = cell.Left + cell.Width / 2
        centerY = cell.Top + cell.Height / 2
        Dim shapeWidth As Double
        Dim shapeHeight As Double
        shapeWidth = cell.Width
        shapeHeight = cell.Height
        Select Case shapeType
            Case 1
                Set shape = ActiveSheet.Shapes.AddShape(msoShapeRectangle, centerX - shapeWidth / 2, centerY - shapeHeight / 2, shapeWidth, shapeHeight)
            Case 2
                Set shape = ActiveSheet.Shapes.AddShape(msoShapeOval, centerX - shapeWidth / 2, centerY - shapeHeight / 2, shapeWidth, shapeHeight)
            Case 3
                Set shape = ActiveSheet.Shapes.AddShape(msoShapeDownArrow, centerX - shapeWidth / 2, centerY - shapeHeight / 2, shapeWidth, shapeHeight)
            Case 4
                Set shape = ActiveSheet.Shapes.AddShape(msoShape5pointStar, centerX - shapeWidth / 2, centerY - shapeHeight / 2, shapeWidth, shapeHeight)
            Case Else
                MsgBox "Invalid shape type. Shape not added."
                Exit Sub
        End Select
    Next cell
End Sub

VBA 코드 실행

작성한 VBA 코드를 실행하는 방법에는 여러 가지가 있습니다만, 이번에는 단축키를 이용해 보도록 하죠. 

(1) 워크시트로 가서 Alt + F8을 누릅니다(Mac에서는 Fn + Option + F8).

(2) [매크로] 대화상자가 나타납니다. 실행할 매크로를 선택하고 [실행] 버튼을 누릅니다. 만약 여러 개의 엑셀 통합 문서가 열려 있고, 매크로가 많다면 [매크로 위치]를 [현재 통합 문서]로 지정하면 쉽게 선택할 수 있습니다.

(이미지: 아이엑셀러 닷컴)

(3) 도형을 삽입할 영역을 선택합니다(마우스로 드래그하여 선택). Ctrl 키를 이용하여 떨어져 있는 영역을 지정하는 것도 가능합니다.

(이미지: 아이엑셀러 닷컴)

(4) [확인] 버튼을 누르면 도형을 선택할 수 있는 대화상자(InputBox)가 나타납니다. 직사각형, 원, 화살표, 별 중 하나를 선택할 수 있습니다. 작성하려는 도형의 숫자를 입력합니다. 예를 들어 화살표를 입력하려면 3을 입력합니다.

(이미지: 아이엑셀러 닷컴)

(5) [확인] 버튼을 누르면 지정한 영역에 여러 개의 도형이 자동으로 삽입됩니다.

(이미지: 아이엑셀러 닷컴)