Range 개체

Delete 메서드

노만e 2025. 3. 10. 19:36

엑셀 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를 활용하면 데이터를 자동으로 정리하고 최적화할 수 있습니다! 🚀