본문 바로가기


IT 이야기

[엑셀 VBA] 숨겨진 행 삭제하는 vba

by 낭만ii고양이 2018. 5. 15.








엑셀에 숨겨진 행이 있을때 필요에 의해 숨겨진 행만 삭제해야할경우가 있습니다. 양이 많다면 vba를 이용하는것이 훨신 빠르겠죠. 아래 소스는 숨겨진 행을 삭제하는 vba 입니다. 개인에 맞게 활용하시면 될것 같습니다.


■  엑셀파일에서 숨겨진 행 삭제하는 vba 


아래 예제는 엑사모 latinum님이 만든 소스입니다. 

제가 필요에 의해서 블로그에 정리하는 차원에서 올린소스이니 착오없으시길 바랍니다. 


Sub dhMain()
Const Es As String = "MagicSheet & 엑사모"
    If MsgBox("선택한 영역의 숨겨진 행들을 삭제하시겠습니까?", vbYesNo + vbQuestion, Es) = vbYes Then
        dhDeleteHideRow Selection
    Else
    End If
End Sub
Sub dhDeleteHideRow(rngDb As Range)
Dim rngVisible As Range
On Error Resume Next
    Set rngVisible = rngDb.SpecialCells(xlCellTypeVisible) '해당 범위의 눈에 보이는 영역을 변수에 담는다
    Application.ScreenUpdating = False '화면을 갱신하지 않는다
        If rngVisible Is Nothing Then '만약 눈에 보이는 영역이 없다면
            rngDb.EntireRow.Delete '모두 숨겨진 행이므로 삭제한다
        Else
            rngDb.EntireRow.Hidden = False '영역 전체의 숨김을 해제한 뒤
            rngVisible.EntireRow.Hidden = True '눈에 보이는 영역, 즉 숨겨지지 않은 영역을 숨긴다
            rngDb.SpecialCells(xlCellTypeVisible).EntireRow.Delete '눈에 보이는 영역(원래 숨겨졌던 영역)을 삭제한다
            rngDb.EntireRow.Hidden = False '숨겼던 영역을 원래대로 보이도록 만든다
        End If
    Application.ScreenUpdating = True '화면을 갱신한다
On Error GoTo 0
End Sub
cs




댓글