VBA Excel 2007은 행을 숨기는 코드 속도를 높이는 데 도움이 됩니다.

VBA Excel 2007은 행을 숨기는 코드 속도를 높이는 데 도움이 됩니다.

행의 값이 ""와 같으면 자동으로 행을 숨기는 VBA 코드를 작성하려고 합니다. 내 값 범위는 A37:A400입니다. 내 범위가 너무 크기 때문에 이전 VbA는 속도를 늦추고 한 번에 한 줄씩 표시했습니다. 이 큰 목록을 통과하여 빠른 방식으로 행을 숨기는 빠른 코드를 만드는 아이디어. 지금은 너무 긴 행을 숨기는 데 약 1분 정도 걸립니다.

Sub HideRows()
    Dim cell As Range
    For Each cell In Range("A37:A400")
        If Not IsEmpty(cell) Then
            If cell.Value = "" Then
                cell.EntireRow.Hidden = True
            End If
        End If
    Next
End Sub

답변1

Application.ScreenUpdating = False숨김 코드 바로 앞에 추가하고 Application.ScreenUpdating = True숨김 코드 뒤에 추가해 보세요. 일반적으로 이 트릭을 사용하면 대부분의 VBA 매크로 속도가 약 10배 정도 빨라집니다. 코드가 실행될 때 응용 프로그램이 계속해서 다시 그릴 필요가 없기 때문입니다.

행 일괄 숨기기를 수행하는 대신 각 셀을 개별적으로 확인하고 행을 개별적으로 숨기기 때문에 이는 귀하의 경우에 도움이 될 것입니다.

답변2

귀하의 코드가 어떻게 작동하는지 알 수 없습니다.

다음 2줄이 있습니다

If Not IsEmpty(cell) Then
        If cell.Value = "" Then

첫 번째 줄이 비어 있지 않으면 두 번째 줄은 항상 false를 반환합니다. 첫 번째 줄은 "셀이 비어 있지 않은 경우"라고 말하고 다음 줄은 "줄이 비어 있는 경우"라고 말합니다... 음, 이미 비어 있지 않은 것으로 평가되었습니다. 따라서 코드가 어떻게 작동하는지 알 수 없도록 행을 숨길 수 없어야 합니다. 코드 외부에서 다른 일이 벌어지고 있는 것 같지만...

그러나 이것은 내 컴퓨터에서 잘 작동합니다.

Sub Button1_Click()
Dim cell As Range
    For Each cell In Range("A1:A1600")
        If cell.Value = "" Then
            cell.EntireRow.Hidden = True
        End If            
    Next
End Sub

행이 1600개 있어서 실행하는 데 5초 정도 걸립니다.

관련 정보