2017-05-18 10 views
0

フィルタを調整してユニークな値をコンボボックスなどに読み込むためのコードが豊富で、ほぼ完全に動作しますが、この1行のコードは特定の値をフィルタリングする)。 makroによって適用されたフィルタのために、すべての行が隠されている場合のエラーを防ぐことが想定されています。範囲全体が隠されているかどうかを確認する一貫した方法

If RangeCombo.EntireRow.Hidden = False Then 

それが動作するときとそうでないときRangeComboは両方の隠しと再表示の行が含まれているので、私は本当にこれを引き起こしている可能性がありますか分かりません。私はこれを試しました:

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

しかし、それは範囲内の目に見えるセルがない場合、エラーをスローアップします。

私も試してみました:

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

が、それは全体の範囲が隠されている場合でも、細胞を見つけるだろう...

を、私は私がxlCellTypeVisibleを一周役立つ可能性のあるソリューションのための幸せになると思いますエラー(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 
関連する問題