[[20090919115924]] 『VBAのオートフィルターについて』(まー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAのオートフィルターについて』(まー)
毎度お世話になっています。
あまりやらなほうがよいのはわかっていますが、リストからいらないデータを削除するのにフィルターをかけて削除しています。
そこで質問なんですが、下記のような構文で  Criteria1:=">1", の1より大きいデータがなかった場合なぜかすべて削除されてしまい、タイトル行しか残りません。
この構文の前に IF文をいれるなどして”>1”がない場合とある場合でそこからの命令文をかえたいのですが、フィルターのフィールド内を参照できるのでしょうか?

ws1.Range("A1").AutoFilter Field:=11, Criteria1:=">1", Operator:=xlAnd

  ws1.Range("A1").CurrentRegion.Select
  Selection.Offset(1).Resize(Selection.Rows.Count - 1).Select
  Selection.Delete
  ws1.Range("A1").AutoFilter Field:=11

 Deleteする前に Worksheetfunction の Countif で数えたら如何ですか?

   With Selection
     If WorksheetFunction.CountIf(.Resize(, 1).Offset(, 10), ">1") Then
        .Delete
     End If
   End With

 (半平太) 2009/09/19 16:18

 私は、フィルターでは、こんな方法をよく使います。

 Sub test()
    Dim ws1 As Worksheet
    Set ws1 = ActiveSheet
    ws1.Range("A1").AutoFilter Field:=11, Criteria1:=">1", Operator:=xlAnd
    On Error Resume Next
    With ws1.AutoFilter.Range
       .Range("a2").Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible).Delete
    End With
    On Error GoTo 0
    ws1.Range("A1").AutoFilter Field:=11
 End Sub

 もっとも
 >よく使います。
 は、嘘・・・、オートフィルタを滅多に使わなかった。

 ichinose


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.