2012-06-08 9 views
0

열 E의 셀 값이 0 인 경우 해당 행을 자동으로 숨기거나 숨기기를 시도하고 있습니다. 이 셀에는 수식이 있으며 다른 수식의 셀이 변경되면이 수식은 0을 반환합니다. 그 변화에 나는 코드가 숨기기/숨기기 해제 마법을 수행하고 싶습니다.셀 값이 0 일 때 해당 행 숨기기

도움 주시면 감사하겠습니다.

답변

0

사용이 mhetod : 당신은 Microsoft Excel에서 필요한 시트에 다음 방법을 버튼을 추가하고 Button_Click 이벤트에 의해이 메소드를 호출하거나 추가 할 수 있습니다

Sub HideRows() 
Dim i As Integer 
i = 1 
Do While Not Cells(i, 5) = "" 
    If Cells(i, 5).Value = 0 Then 
     Rows(CStr(i) + ":" + CStr(i)).EntireRow.Hidden = True 
    ElseIf Cells(i, 5).Value <> 0 And Rows(CStr(i) + ":" + CStr(i)).EntireRow.Hidden = True Then 
     Rows(CStr(i) + ":" + CStr(i)).EntireRow.Hidden = False 
    End If 
i = i + 1 
Loop 
End Sub 

Private Sub Worksheet_Change() 
    Module1.HideRows 
End Sub 

이 개체 메서드는 일부 셀이 변경 될 때 HideRow 메서드를 호출합니다.

1

다음은 자동 필터를 사용하는 더 빠른 방법입니다. 이 코드를 직접 호출하거나 Worksheet_Calculate 이벤트에서 사용할 수 있습니다. 셀 E1에 헤더가 있다고 가정합니다. 이 당신이 원하는 경우에 행을 숨김 해제 못하게 나는 자동으로이 코드를 호출하지 않는 것이 좋습니다

을 권장하지 않음 - 버튼

Option Explicit 

Sub Sample() 
    Dim rRange As Range, RngToHide As Range 
    Dim lRow As Long 

    '~~> Remove any filters 
    ActiveSheet.AutoFilterMode = False 

    With Sheets("Sheet1") 
     lRow = .Range("E" & Rows.Count).End(xlUp).Row 
     Set rRange = .Range("E1:E" & lRow) 

     With rRange 
      .AutoFilter Field:=1, Criteria1:="0" 
      Set RngToHide = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow 
     End With 
    End With 

    '~~> Remove any filters 
    ActiveSheet.AutoFilterMode = False 

    If Not RngToHide Is Nothing Then RngToHide.Hidden = True 
End Sub 

워크 시트 계산 경우에도

숨겨진 행의 내용을 변경하십시오. 행을 숨김 해제하려면 Worksheet_Calculate 이벤트의 전체 코드를 주석 처리하거나 연결된 셀에서 값을 0이 아닌 값으로 변경해야합니다 (은 연결된 셀이 숨겨진 행이 아닌에 있음).

골 E의 값이 0

Option Explicit 

Private Sub Worksheet_Calculate() 
    Dim rRange As Range, RngToHide As Range 
    Dim lRow As Long 

    On Error GoTo Whoa 

    Application.ScreenUpdating = False 
    Application.EnableEvents = False 

    '~~> Remove any filters 
    ActiveSheet.AutoFilterMode = False 

    With Sheets("Sheet1") 
     lRow = .Range("E" & Rows.Count).End(xlUp).Row 
     Set rRange = .Range("E1:E" & lRow) 

     With rRange 
      .AutoFilter Field:=1, Criteria1:="0" 
      Set RngToHide = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow 
     End With 
    End With 

    '~~> Remove any filters 
    ActiveSheet.AutoFilterMode = False 

    If Not RngToHide Is Nothing Then RngToHide.Hidden = True 

LetsContinue: 
    Application.ScreenUpdating = True 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 
로 변경 될 때이 행을 숨 깁니다
관련 문제