2012-01-24 6 views
1

ワークシートを最初の条件に基づいてオートフィルタするコードがあります。 条件文は(私は明らかにヘッダをインクルードする必要はありません)私は助けを必要とするところ、それはデータが2行目の最初のセルにある場合でもerroringし続けている:オートフィルタ - 表示セルの2番目の行が空白であるかどうかを調べる

With ActiveSheet 
    .AutoFilterMode = False 
    With .Range("A1:F1") 
     .AutoFilter Field:=1, Criteria1:="FirstTest" 

     'See if first cell in second row is blank 
     If (.Offset(2,1).SpecialCells(xlCellTypeVisible).Value = "") Then 

      'if blank, change criteria 
      .AutoFilter Field:=1, Criteria1:="SecondTest" 
     End If 

    End With 
End With 

私が知っています複数の条件に対してVBA.Arrayを使用することはできますが、これはより複雑になります。今度は、2行目の可視データを参照するだけで済みます。

ありがとうございました。

答えて

3

はこれを試してみてください:私は銃を跳んだ

With ActiveSheet 
    .AutoFilterMode = False 
    With .Range("A1:F1") 
     .AutoFilter Field:=1, Criteria1:="FirstTest" 

     'See if first cell in second row is blank 
     If (.Parent.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Count < 2) Then 

      'if blank, change criteria 
      .AutoFilter Field:=1, Criteria1:="SecondTest" 
     End If 

    End With 
End With 
+0

申し訳ありませんが、これはエラーなしで働いてではなく、正確されます。 私は画面上に10行(1つは見出し)を返し、それは126を返します。私が3に見えるようにフィルタリングすれば、それは18を返します。 –

+0

ああ!それは細胞を計数していて、列は計数していません。ヤッツェー。ありがとうございました。あなたの解決策は間違いありませんでした。 –

+0

.Rows.Countは時々奇妙な結果を返すことがありましたが、これを修正するために、セルの数を私が持っていたカラムの数で割っただけです。 rowCount = .Parent.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Count/6 –