19

いくつかのデータを含む Excel テーブルがあります。次のvbaコードを使用して、いくつかのフィールドで空白のセルのみをフィルタリングし、これらの行を削除しようとしています

ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=7, Criteria1:= _
        "="
ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=8, Criteria1:= _
        "="
ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=9, Criteria1:= _
        "="
ActiveSheet.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.rows.Count - 1).rows.Delete
ActiveSheet.ShowAllData

この列に空白のセルがある場合にのみ機能します。しかし、空白のセルがなく、上記のコードを使用すると、すべての範囲がシートから削除されるという問題に直面しました。この問題を回避するには?フィルター条件などを変更する必要がありますか?

4

2 に答える 2

18

UsedRange を使用するか、明示的な範囲アドレスを指定する代わりに、AutoFilter.Range プロパティで影響を受ける範囲を指定することもできます。

ActiveSheet.AutoFilter.Range.Offset(1,0).Rows.SpecialCells(xlCellTypeVisible).Delete(xlShiftUp)

ここで使用されているように、Offset を使用すると、AutoFilter 範囲の後の最初の行も削除されます。それを避けるために、.Offset() の後に .Resize() を使用してみます。

于 2016-04-18T17:28:19.197 に答える