2016-06-29 1 views
1

나는 2 장, 시트 번호를 만들었습니다. 1은 데이터를 잘 보여주고 다른 하나는 데이터를 가져옵니다. 따라서 시트 번호. 1 시트 번호에서 데이터를 가져옵니다. 2. 때로는 시트 번호 2에 데이터가 없습니다. 이것은 시트 1의 셀에 "#REF!"를 부여합니다. 이 내가 시트의 특정 행을 숨길 필요가 발생하면 데이터가 0이고 내가 #를 잡을 방법에 대한 단서를 가지고하지 않는 경우 1.# REF! 다음 특정 행을 숨기기

그래서 나는이

Sub HideCharts() 

BeginRow = 132 
EndRow = 138 
ChkCol = 8 

For RowCnt = BeginRow To EndRow 
    If Cells(RowCnt, ChkCol).Value = 0 Then 
     Cells(RowCnt, ChkCol).EntireRow.Hidden = True 
    End If 
Next RowCnt 

     For RowCnt = BeginRow To EndRow 
      If Cells(RowCnt, ChkCol).Value <> 0 Then 
       Cells(RowCnt, ChkCol).EntireRow.Hidden = False 
      End If 
     Next RowCnt 
End Sub 

그러나이 단지 작품 같은 것을 상상 REF! 또한 이것은 0 값을 포함하는 행을 숨 깁니다. 그러나 130-140과 같은 특정 행을 잡을 필요가 있습니다.

그래서 다른 사람이 스택 오버플로를 선택해야한다고 생각하십니까? 이처럼

+0

사용'ISERROR' 함수는 셀에 오류의 종류를 확인하는 것입니다 – newguy

답변

1

:

변경 If Cells(RowCnt, ChkCol).Value = 0 Then 시도

Sub HideCharts() 

BeginRow = 132 
EndRow = 138 
ChkCol = 8 

For RowCnt = BeginRow To EndRow 
    If Cells(RowCnt, ChkCol).Value = 0 or iserror(Cells(RowCnt, ChkCol).Value) Then 
     Cells(RowCnt, ChkCol).EntireRow.Hidden = True 
    Else 
     'You don't need this if all the rows are visible at start 
     Cells(RowCnt, ChkCol).EntireRow.Hidden = False 
    End If 
End Sub 
+0

는 완벽하게 작동, 감사합니다! 데이터가 다시있을 경우 행을 다시 표시하기 위해 else 문을 작성한 다음 검사 할 매크로를 작성했습니다. 개인 하위 Worksheet_Change (범위로 ByVal 대상) Target.Address = "$ B $ 2"이면 호출 Sheet1.HideCharts End If –

2

If Cells(RowCnt, ChkCol).Value = 0 or iserror(Cells(RowCnt, ChkCol).Value)로는 if 문이 작동해야합니다에서 "ISERROR"를 사용합니다.

For RowCnt = BeginRow To EndRow 
    If IsError(Cells(RowCnt, ChkCol)) Then 
     Cells(RowCnt, ChkCol).EntireRow.Hidden = True 
    End If 
Next RowCnt 
1

당신은 IsError 기능을 사용하여 셀 값 오류를 잡을 수 있습니다.

데이터가 누락되었지만 손상된 데이터로 인해 발생하지 않는 오류를 숨기지 않으려는 경우와 같이 특정 셀 값 오류 만 필요하면 CVErr 함수를 사용하십시오. 가능한 오류 값 목록은 this을 참조하십시오. 귀하의 경우는

If CVErr(Cells(...)) = xlErrRef Then