'범위구간의 행 전체가 비어 있을 경우 삭제'에 해당되는 글 1건

728x90

구간범위 내의 행 전체가 비어 있는 경우에만 삭제하고 싶은 경우의 VBA 코드입니다.

항상 삭제를 할 때에는 아래행부터 시작해서 위로 시작한다는 것을 명심하셔야 합니다.




Sub 행전체가빈셀인경우()
    Dim rngDB As Range
    Dim r, LastRow, k As Double
   
    Application.ScreenUpdating = False  '// 화면 업데이트 일시정지
    LastRow = Cells(Rows.Count, "C").End(3).Row  '// 마지막 셀이 있는 행을 찾기 위해서
   
    For r = LastRow To 1 Step -1
        Set rngDB = Range(Cells(r, "A"), Cells(r, "D")) '// 각 행의 D열까지를 범위구간으로 선언
        If Application.WorksheetFunction.CountA(rngDB) = 0 Then  '// 범위구간 전부가 비어 있으면
            Rows(r).EntireRow.Delete   '// 해당 행 전체 삭제
            k = k + 1       '// 삭제되는 행의 숫자를 카운트 하기 위해
        End If
    Next r   
    MsgBox k & "행 삭제완료"
End Sub

그런데 해당행 전체가 아니라 표의 해당구간내의 경우에만 삭제를 하고 싶다면 어떻게 해야 할까요?


Sub 범위구간의빈셀인경우행삭제()
    Dim rngDB As Range
    Dim r, LastRow, k As Double
   
    Application.ScreenUpdating = False  '// 화면 업데이트 일시정지
    LastRow = Cells(Rows.Count, "C").End(3).Row  '// 마지막 셀이 있는 행을 찾기 위해서
   
    For r = LastRow To 1 Step -1
        Set rngDB = Range(Cells(r, "A"), Cells(r, "D")) '// 각 행의 D열까지를 범위구간으로 선언
        If Application.WorksheetFunction.CountA(rngDB) = 0 Then  '// 범위구간 전부가 비어 있으면
            rngDB.Delete   '// 범위구간의 행 전체 삭제
            k = k + 1       '// 삭제되는 행의 숫자를 카운트 하기 위해
        End If
    Next r   
    MsgBox k & "행 삭제완료"
End Sub


위의 코드와 아래 코드 전부 동일한테 적색으로 표시한 부분만 다릅니다.


결과화면은


블로그 이미지

Link2Me

,