엑셀 VBA에서 Delete 메서드는 행, 열, 셀, 시트, 워크북 등의 항목을 삭제할 때 사용됩니다.
즉, 특정 범위를 완전히 제거하고 나머지 데이터를 이동시키거나 정리할 수 있습니다.
1. 기본 문법
Range("삭제할 범위").Delete (Shift:=xlShiftUp 또는 xlShiftToLeft)
|
- Shift (선택 사항): 삭제 후 나머지 데이터 이동 방식
- xlShiftUp → 위로 이동 (기본값)
- xlShiftToLeft → 왼쪽으로 이동
2. 셀 삭제
📌 A1 셀 삭제 후 아래 셀 이동 (xlShiftUp)
Sub 셀삭제_위로이동()
Range("A1").Delete Shift:=xlShiftUp
End Sub
|
📌 A1을 삭제하고 아래 데이터를 위로 이동
📌 B2 셀 삭제 후 왼쪽으로 이동 (xlShiftToLeft)
Sub 셀삭제_왼쪽이동()
Range("B2").Delete Shift:=xlShiftToLeft
End Sub
|
📌 B2를 삭제하고 오른쪽 데이터를 왼쪽으로 이동
3. 행 삭제
📌 3행 삭제
Sub 행_삭제()
Rows(3).Delete
End Sub
|
📌 3행 전체 삭제 후 아래 데이터가 위로 이동
📌 여러 개의 행 삭제
Sub 여러행_삭제()
Rows("2:4").Delete
End Sub
|
📌 2~4행을 삭제하고 아래 데이터가 위로 이동
📌 마지막 사용된 행 삭제
Sub 마지막행_삭제()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' 마지막 데이터가 있는 행 찾기
Rows(lastRow).Delete
End Sub
|
📌 A열에서 마지막 데이터를 포함한 행 삭제
4. 열 삭제
📌 C열 삭제
Sub 열_삭제()
Columns(3).Delete
End Sub
|
📌 C열을 삭제하고 오른쪽 열이 왼쪽으로 이동
📌 여러 개의 열 삭제
Sub 여러열_삭제()
Columns("B:D").Delete
End Sub
|
📌 B~D열 삭제 후 오른쪽 열들이 왼쪽으로 이동
📌 마지막 사용된 열 삭제
Sub 마지막열_삭제()
Dim lastCol As Long
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column ' 마지막 데이터 열 찾기
Columns(lastCol).Delete
End Sub
|
📌 1행에서 마지막 데이터를 포함한 열 삭제
5. 특정 조건을 만족하는 행 삭제
📌 A열에서 "삭제"가 포함된 행 삭제
Sub 특정값_행삭제()
Dim rng As Range, cell As Range
Set rng = Range("A1:A100")
For Each cell In rng
If cell.Value = "삭제" Then
cell.EntireRow.Delete
End If
Next cell
End Sub
|
📌 A열에서 값이 "삭제"인 행을 찾아 삭제
6. 빈 행 삭제
Sub 빈행_삭제()
Dim rng As Range
Set rng = Range("A1:A100").SpecialCells(xlCellTypeBlanks)
rng.EntireRow.Delete
End Sub
|
📌 A1:A100 범위 내 빈 행을 모두 삭제
7. 시트 삭제
📌 현재 시트 삭제
Sub 현재시트_삭제()
Application.DisplayAlerts = False ' 삭제 확인 메시지 비활성화
ActiveSheet.Delete
Application.DisplayAlerts = True ' 메시지 다시 활성화
End Sub
|
📌 현재 활성화된 시트를 삭제 (확인 메시지 없이 바로 삭제)
📌 특정 시트 삭제
Sub 특정시트_삭제()
Application.DisplayAlerts = False
Sheets("Sheet2").Delete
Application.DisplayAlerts = True
End Sub
|
📌 "Sheet2" 시트 삭제 (경고 메시지 없이 실행)
8. 워크북(엑셀 파일) 삭제
📌 현재 열려 있는 특정 파일 닫고 삭제
Sub 워크북_삭제()
Dim wb As Workbook
Set wb = Workbooks("삭제할파일.xlsx")
wb.Close SaveChanges:=False
Kill "C:\Users\사용자\Desktop\삭제할파일.xlsx"
End Sub
|
📌 "삭제할파일.xlsx"를 닫고 파일 시스템에서 삭제
📌 Kill 문을 사용하면 파일이 영구적으로 삭제됨 (주의!)
9. 필터링된 데이터만 삭제
Sub 필터링된_행_삭제()
Dim rng As Range
On Error Resume Next ' 필터링된 행이 없으면 오류 무시
Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
rng.EntireRow.Delete
On Error GoTo 0 ' 오류 처리 복원
End Sub
|
📌 필터링된 데이터만 삭제하고 숨겨진 행은 유지
📝 정리
기능
|
VBA 코드
|
셀 삭제 (위로 이동)
|
Range("A1").Delete Shift:=xlShiftUp
|
셀 삭제 (왼쪽으로 이동)
|
Range("B2").Delete Shift:=xlShiftToLeft
|
행 삭제
|
Rows(3).Delete
|
여러 개의 행 삭제
|
Rows("2:4").Delete
|
마지막 사용된 행 삭제
|
Rows(lastRow).Delete
|
열 삭제
|
Columns(3).Delete
|
여러 개의 열 삭제
|
Columns("B:D").Delete
|
마지막 사용된 열 삭제
|
Columns(lastCol).Delete
|
특정 값이 포함된 행 삭제
|
If cell.Value = "삭제" Then cell.EntireRow.Delete
|
빈 행 삭제
|
Range("A1:A100").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
|
현재 시트 삭제
|
ActiveSheet.Delete
|
특정 시트 삭제
|
Sheets("Sheet2").Delete
|
워크북 삭제
|
Kill "C:\Users\사용자\Desktop\삭제할파일.xlsx"
|
필터링된 데이터만 삭제
|
ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).EntireRow.Delete
|
🔥 VBA의 Delete를 활용하면 데이터를 자동으로 정리하고 최적화할 수 있습니다! 🚀