|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(95,97,2000,xp,2003,2007):
* 아래줄에 질문을 작성하세요 >>
행 숨기기 매크로 속도
인터넷 검색 중에 필요한 매크로를 발견 하여 사용 중인데,
속도가 느린거 같아 질문 드립니다.
Application.ScreenUpdating = 0 '코드 실행 중 차트와 같은 화면 업데이트 방지'
Dim rngA As Range '변수 지정
For Each rngA In Sheets("출력양식").Range("K31:K57")
'파일에서 지정시트의 범위를 검사한다. 시트 순서나 범위는 알아서 조정
If rngA.Value = "" Or rngA.Value = 0 Then
'값이 "" 또는 "0"이면 행전체를 숨기고, 아니면 보인다
rngA.EntireRow.Hidden = True
Else
rngA.EntireRow.Hidden = False
End If
Next
Application.ScreenUpdating = 0
처리 속도가 빨리지게 가능한가요~?
==============[아이떼떼님 글에 대한 답변입니다]==============
Dim rData As Range, rngUnion As Range
Dim rngA As Range '변수 지정
' 실행속도을 항샹하기 위한 설정
With Application
.ScreenUpdating = False ' 코드 실행 중 차트와 같은 화면 업데이트 방지'
.EnableEvents = False ' 이벤트실행 중단
.Calculation = xlCalculationManual ' 계산모드 수동
.DisplayAlerts = False ' 경고 메세지 중단
End With
Set rData = Sheets("출력양식").Range("K31:K57")
rData.EntireRow.Hidden = False
For Each rngA In rData.Cells
'파일에서 지정시트의 범위를 검사한다. 시트 순서나 범위는 알아서 조정
If rngA.Value = "" Or rngA.Value = 0 Then
If rngUnion Is Nothing Then
Set rngUnion = rngA
Else
Set rngUnion = Union(runion, rngA)
End If
End If
Next
If Not rngUnion Is Nothing Then rngUnion.EntireRow.Hidden = False
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
End With
==============[dew님 글에 대한 답변입니다]==============
답변 감사합니다.
올려주신 매크로를 사용 해보니 ,
Set rngUnion = Union(runion, rngA)
이 부분에서 '424' 런타임 오류가 뜨는데,,,
수정을 해야 되는 곳이 있나요~? |
|