このコードは、データの列ヘッダー(複数のファイルをインポートした後)を削除するように設計されています。しかし、私はエラーが発生します: "1004"は "アプリケーション定義またはオブジェクト定義のエラー"です。私はSO上のさまざまなソリューションを参照しましたが、役に立たないものです。セルの値に基づいて行を削除します
私はこのコードスニペットを実行する前に、空白の行を削除し、これを含めて何がうまくいくかを示し、キーを保持することさえできます。
'Remove all rows with blanks first
Set wb = Workbooks(ThisWorkbook.Name)
'Remove blank rows based on if column 'B' is blank as a and B are filled when there is risk key showing
wb.Worksheets("BatchData").Activate
Columns("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'Now to delete based on column headers!
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Filter Column A and delete selection
'############# Error line below
ActiveSheet.Range("A1:" & A & ":" & LastRow).AutoFilter Field:=2, Criteria1:= _
"=Item", Operator:=xlOr, Criteria2:="="
Selection.EntireRow.Delete
EDIT:
改正コード、いくつかの微調整もコメントと私はフィールド "2" 参照していたと1
Dim LastRow As Long
LastRow = wb.Worksheets("BatchData").Cells(Rows.Count, 1).End(xlUp).Row
'Filter Column A and delete selection
ActiveSheet.Range("A1:A" & LastRow).AutoFilter Field:=1, Criteria1:= _
"=Item", Operator:=xlOr, Criteria2:="="
ActiveSheetは 'A' を使用しようとしていたあたりとして.Range( "$ A $ 1:$ A $" & LASTROW)に基づいて.Offset(0、0).SpecialCells _ (xlCellTypeVisible).EntireRow.Delete
最終ラインエディット; VBA: How to delete filtered rows in Excel?オフセットは1,0から0,0
まず、「Set wb = ThisWorkbook」を使用できます。第2に、 'LastRow'を使うときは、' LastRow = wb.Worksheets( "BatchData")のような特定のシートリファレンスを使う方が良いです。また、Range( "A1:A"&LastRow)に 'Range(" A1: "&A:"&LastRow) 'を変更してください。 –
私は勘違いしています..." "A1: &A& ":"&LastRow'を追加して投稿に追加してください。 – FDavidov
ところで、列/行全体ではなく、列/行内の範囲を削除しています。 – FDavidov