2014-05-23 2 views
0

Excel 2007에서 VBA에 문제가 있습니다. 특정 문자열이 셀에있을 때 행을 숨기려면 매크로가 필요합니다.특정 문자열이 셀에있을 때 행 숨기기

내 매크로 (예를 들어, "시스템 PPP 취소") :

Sub HideRows() 
    Dim Cell As Range 
    If InStr(Cell, "cancelled") And Rows(Cell.Row).Hidden = False _ 
    Then Rows(Cell.Row).Hidden = True 
    Next Cell 
End Sub 

불행하게도, 나는 런타임 오류 '13'를 얻을 ... 은 당신이 나를 도와 드릴까요?

+0

내 VBA 조금 녹슨 열 2. 변경에 검색 값을 기대하지만 난 당신의 코드에서 몇 가지 실수가 있다고 생각; Do not if 일치하는 end if 문이 필요한 경우? –

+2

또한 필립 (Philip)의 질문에는 범위를 통과하는 루프가 있어야 함을 의미하는 ** Next Cell **이 있습니다. 예를 들면 다음과 같습니다. http://msdn.microsoft.com/en-us/library/office/aa221353(v=office.11).aspx – Alex

+1

@PhilipAdler 일반적으로 예입니다. 그러나 전체 문이 한 줄에 포함되어있는 경우에는 그렇지 않습니다. 위와 마찬가지로 –

답변

1

이 엑셀 2010에서 작동이 스프레드 시트에있는 모든 행을 반복합니다

Sub hide_cancelled() 
For i = 1 To Rows.Count 
If InStr(Cells(i, 2).value, "cancelled") And Rows(i).Hidden = False Then 
    Rows(i).Hidden = True 
End If 
Next i 
End Sub 

하는 것으로, 그들은 어떤 데이터 또는 완전히 비어을 상관없이 포함 된 경우. 이 작업은 오래 걸릴 수 있습니다! 따라서 Rows.Count 대신에 더 정상적인 값을 입력해야합니다.

또한 이것은이 Cells(i,xxx)

+0

감사합니다. 코드가 잘 작동합니다. 주의 사항 : Excel 2007에서는 "End If"가 작동하지 않으므로 Excel에서 "if if statement"또는 그 이상으로 오류가 발생합니다 ... –