2017-05-18 23 views
0

필터를 조정하고 고유 값을 콤보 상자 등으로 읽는 데 필요한 광범위한 코드가 있는데 거의 완벽하게 작동합니다. 그러나이 한 줄의 코드는 때로는 올바르게 식별되지 않습니다. 특정 값에 대한 필터). makro를 통해 적용된 필터로 인해 모든 행이 숨겨진 경우 오류를 방지합니다. 작동하고 수행하지 않을 때, 그래서 정말이 원인이 될 수있는 것을 모를 때전체 범위가 숨겨져 있는지 확인하는 일관된 방법

If RangeCombo.EntireRow.Hidden = False Then 

는 RangeCombo 숨겨진 및 숨김 모두 행이 포함되어 있습니다. 나는 이것을 시도했다 :

If RangeCombo.SpecialCells(xlCellTypeVisible).Count > 0 Then 

그러나 범위에 보이는 셀이 없다면 오류가 발생한다.

내가 나를 xlCellTypeVisible 일주 도움이되는 솔루션을 드리겠습니다 ...

Set x = RangeCombo.Find("*", , xlFormulas, xlWhole) 
    If Not x Is Nothing Then 

하지만 전체 범위가 숨겨져있는 경우에도 세포를 발견 할 것이다 :

나는 또한 시도 오류 (RangeCombo의 모든 셀이 비어있는 경우) 또는 내 목표를 달성 할 수있는 다른 방법.

답변

1

는 autofiltered 세포를 확인하면서, 항상 범위 헤더 행을 포함하고, 가시 세포 아래와 같이 1보다 큰 카운트 경우 ... LastRow 마지막 행에 데이터이다

If Range("A1:A" & LastRow).SpecialCells(xlCellTypeVisible).Count > 1 Then 

을 확인 그 종잇장. 요구 사항에 따라 범위를 변경하십시오.

자동 필터를 적용한 후에 행이 반환되지 않으면 헤더 행만 표시 될 수 있으므로 개수는 1과 같고 표시 행/셀에 대한 일부 작업을 건너 뛸 수 있습니다.

+0

와우, 그렇게 간단하지만 문제가 해결되었습니다. 정확히 내가 원했던 팁의 종류. 고맙습니다! –

1

일반적으로 오류를 무시하는 것은 좋지 않지만 경우에 따라 합법적입니다. 이렇게 할 수 있습니다

Sub x() 

Dim r As Range 

On Error Resume Next 
Set r = RangeCombo.SpecialCells(xlCellTypeVisible) 
On Error GoTo 0 

If Not r Is Nothing Then 
    MsgBox "Visible" 
Else 
    MsgBox "All hidden" 
End If 

End Sub