Shape 개체

Shape 개체

노만e 2025. 3. 16. 17:32

엑셀 VBA에서 Shape 개체도형, 이미지, 텍스트 상자, 버튼 등을 조작할 때 사용됩니다.

Shapes 컬렉션을 사용하면 워크시트에 있는 모든 개체(Shape)를 관리할 수 있습니다.

1. Shape 개체 접근 방법

✅ 특정 도형(Shape) 접근

Dim shp As Shape
Set shp = ActiveSheet.Shapes("도형이름")

📌 "도형이름"은 수동으로 지정하거나 VBA로 가져올 수 있음.

✅ 모든 도형(Shapes) 접근

Dim shp As Shape
For Each shp In ActiveSheet.Shapes
Debug.Print shp.Name ' 도형 이름 출력
Next shp

📌 현재 시트에 있는 모든 도형을 순회하며 이름 출력.


2. Shape 개체의 주요 속성 (Properties)

속성
설명
예제
Name
도형 이름 반환 또는 변경
shp.Name = "새도형"
Height
높이 설정
shp.Height = 50
Width
너비 설정
shp.Width = 100
Top
Y축 위치 설정
shp.Top = 10
Left
X축 위치 설정
shp.Left = 20
TextFrame.TextRange.Text
도형 내 텍스트 변경
shp.TextFrame.TextRange.Text = "Hello"
Fill.ForeColor.RGB
도형 배경 색 변경
shp.Fill.ForeColor.RGB = RGB(255,0,0) (빨강)
Line.ForeColor.RGB
테두리 색 변경
shp.Line.ForeColor.RGB = RGB(0,0,255) (파랑)
Visible
도형 숨기기/표시
shp.Visible = msoFalse (숨김)

3. Shape 개체의 주요 메서드 (Methods)

메서드
설명
예제
Select
도형 선택
shp.Select
Delete
도형 삭제
shp.Delete
Copy
도형 복사
shp.Copy
Cut
도형 잘라내기
shp.Cut
ZOrder
도형 정렬 순서 변경
shp.ZOrder msoBringToFront
Duplicate
도형 복제
shp.Duplicate.Select

4. Shape 개체 활용 예제

📌 1) 도형 추가 (사각형)

Sub 도형_추가()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 50, 50, 100, 50)
shp.Name = "사각형1"
shp.TextFrame.TextRange.Text = "버튼"
shp.Fill.ForeColor.RGB = RGB(0, 255, 0) ' 초록색
End Sub

📌 사각형을 추가하고 "버튼" 텍스트를 삽입


📌 2) 특정 도형 찾기 & 색상 변경

Sub 도형_색변경()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("사각형1")
shp.Fill.ForeColor.RGB = RGB(255, 0, 0) ' 빨간색으로 변경
End Sub

📌 3) 특정 도형 이동

Sub 도형_이동()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("사각형1")
shp.Top = 100 ' 아래로 이동
shp.Left = 200 ' 오른쪽으로 이동
End Sub

📌 4) 도형 크기 변경

Sub 도형_크기변경()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("사각형1")
shp.Width = 150 ' 너비 변경
shp.Height = 80 ' 높이 변경
End Sub

📌 5) 도형 삭제

Sub 도형_삭제()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("사각형1")
shp.Delete
End Sub

📌 6) 모든 도형 삭제

Sub 모든_도형_삭제()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
shp.Delete
Next shp
End Sub

📌 현재 시트에 있는 모든 도형 삭제


📌 7) 모든 도형 이름 출력

Sub 도형_이름_출력()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
Debug.Print shp.Name ' 즉시 실행 창에 이름 출력
Next shp
End Sub

📌 현재 시트에 있는 모든 도형의 이름을 출력


📌 8) 도형 숨기기 / 표시

Sub 도형_숨기기()
ActiveSheet.Shapes("사각형1").Visible = msoFalse ' 도형 숨김
End Sub
Sub 도형_보이기()
ActiveSheet.Shapes("사각형1").Visible = msoTrue ' 도형 보이기
End Sub

📌 도형을 숨기거나 다시 표시


📌 9) 도형 정렬 (맨 앞으로 가져오기)

Sub 도형_맨앞으로()
ActiveSheet.Shapes("사각형1").ZOrder msoBringToFront
End Sub

📌 도형을 다른 개체 위로 올리기


📌 10) 도형 클릭 시 매크로 실행 (매크로 버튼 만들기)

Sub 매크로_버튼_만들기()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 100, 100, 120, 50)

shp.TextFrame.TextRange.Text = "클릭하세요"
shp.OnAction = "버튼_클릭" ' 클릭하면 "버튼_클릭" 매크로 실행
End Sub
Sub 버튼_클릭()
MsgBox "버튼이 클릭되었습니다!"
End Sub

📌 클릭하면 메시지 박스를 띄우는 버튼 생성


📝 정리

  1. ActiveSheet.Shapes("이름") → 특정 도형 선택
  2. Shapes.AddShape(도형종류, X, Y, 너비, 높이) → 도형 추가
  3. .TextFrame.TextRange.Text = "내용" → 텍스트 삽입
  4. .Fill.ForeColor.RGB = RGB(255,0,0) → 도형 색상 변경
  5. .Delete → 도형 삭제
  6. .Visible = msoFalse → 도형 숨기기
  7. .OnAction = "매크로이름" → 도형 클릭 시 매크로 실행

🔥 Shape 개체를 활용하면 엑셀에서 다양한 자동화 UI를 만들 수 있습니다! 🚀