Style(스타일)을 삭제해야 하는 이유는 불필요한 스타일로 인해 발생하는 문제를 방지하기 위해서 입니다.
1. 스타일 개수가 많으면 엑셀 파일이 느려짐
2. 스타일 개수가 많으면 저장 및 로딩 속도 저하
3. 외부에서 복사한 데이터가 스타일을 자동으로 추가하는 경우
4. 스타일이 많으면 Excel 오류 발생 가능 (Too Many Cell Formats 오류)
5. 스타일이 많으면 엑셀과 충돌하여 강제 종료 되는 경우 발생
엑셀 VBA에서 스타일(Style)은 셀의 서식을 저장하고 적용하는 기능입니다.
VBA를 사용하여 특정 스타일을 삭제하려면 Style.Delete 메서드를 사용하면 됩니다.
1. Style.Delete 기본 문법
ThisWorkbook.Styles("스타일이름").Delete
|
매개변수
|
설명
|
"스타일이름"
|
삭제할 스타일의 이름
|
📌 삭제할 스타일이 존재하지 않으면 Run-time error '1004' 발생
📌 기본 스타일(Normal)은 삭제할 수 없음
2. 특정 스타일 삭제
Sub 특정스타일삭제()
Dim 스타일이름 As String
스타일이름 = "CustomStyle" ' 삭제할 스타일 이름
On Error Resume Next
ThisWorkbook.Styles(스타일이름).Delete
On Error GoTo 0
MsgBox 스타일이름 & " 스타일이 삭제되었습니다!"
End Sub
|
📌 On Error Resume Next를 사용하여 스타일이 존재하지 않을 경우 오류 방지
📌 "CustomStyle" 스타일이 삭제됨
3. 모든 사용자 지정 스타일 삭제
Sub 모든사용자스타일삭제()
Dim 스타일 As Style
On Error Resume Next
For Each 스타일 In ThisWorkbook.Styles
If 스타일.BuiltIn = False Then ' 기본 스타일이 아닌 경우 삭제
스타일.Delete
End If
Next 스타일
On Error GoTo 0
MsgBox "모든 사용자 지정 스타일이 삭제되었습니다!"
End Sub
|
📌 엑셀의 기본 스타일은 삭제되지 않고, 사용자 정의 스타일만 삭제됨
4. 특정 패턴이 포함된 스타일 삭제
Sub 특정패턴스타일삭제()
Dim 스타일 As Style
Dim 삭제된개수 As Integer
삭제된개수 = 0
On Error Resume Next
For Each 스타일 In ThisWorkbook.Styles
If 스타일.BuiltIn = False And InStr(스타일.Name, "Temp") > 0 Then
스타일.Delete
삭제된개수 = 삭제된개수 + 1
End If
Next 스타일
On Error GoTo 0
MsgBox 삭제된개수 & "개의 스타일이 삭제되었습니다!"
End Sub
|
📌 스타일 이름에 "Temp"가 포함된 모든 스타일 삭제
5. 특정 스타일이 존재하는지 확인 후 삭제
Sub 스타일존재확인후삭제()
Dim 스타일이름 As String
스타일이름 = "CustomStyle"
If 스타일존재여부(스타일이름) Then
ThisWorkbook.Styles(스타일이름).Delete
MsgBox 스타일이름 & " 스타일이 삭제되었습니다!"
Else
MsgBox 스타일이름 & " 스타일이 존재하지 않습니다!"
End If
End Sub
Function 스타일존재여부(이름 As String) As Boolean
Dim 스타일 As Style
On Error Resume Next
Set 스타일 = ThisWorkbook.Styles(이름)
스타일존재여부 = Not 스타일 Is Nothing
On Error GoTo 0
End Function
|
📌 스타일이 존재하는 경우에만 삭제하여 오류 방지
📌 Style.Delete 사용 시 주의할 점
- 기본 스타일(Normal)은 삭제할 수 없음
- If 스타일.BuiltIn = False Then 스타일.Delete로 기본 스타일은 제외하고 삭제.
- 삭제할 스타일이 없으면 오류 발생 (Run-time error '1004')
- 해결 방법: On Error Resume Next로 오류 방지.
- 삭제 후 스타일이 완전히 제거됨 (복구 불가)
- 삭제 전 백업이 필요하면 스타일을 목록으로 저장해둘 것.
📝 정리
기능
|
VBA 코드 (Style.Delete 활용)
|
특정 스타일 삭제
|
ThisWorkbook.Styles("CustomStyle").Delete
|
모든 사용자 스타일 삭제
|
For Each 스타일 In ThisWorkbook.Styles: If 스타일.BuiltIn = False Then 스타일.Delete
|
특정 패턴 포함 스타일 삭제
|
If InStr(스타일.Name, "Temp") > 0 Then 스타일.Delete
|
스타일 존재 여부 확인 후 삭제
|
If 스타일존재여부("CustomStyle") Then ThisWorkbook.Styles("CustomStyle").Delete
|
🔥 VBA의 Style.Delete를 활용하면 불필요한 스타일을 정리하여 엑셀 파일을 최적화할 수 있습니다!