Excel VBA删除行超出范围

时间:2017-10-02 14:57:57

标签: excel vba excel-vba

我有VBA代码,它在两个单独的标签上创建两个单独的报告。代码生成的第一个报告工作正常,并产生所需的输出。但是,第二份报告却没有。第一个报告使用此代码:

'Find the last row of the table
lastRow = Cells(Rows.Count, 1).End(xlUp).Row

'Autofit all columns
Cells.Select
Cells.EntireColumn.AutoFit

'Filter then delete all rows that don't have a client
Selection.AutoFilter
ActiveSheet.Range("$A$1:$P" & lastRow).AutoFilter Field:=3, Criteria1:="="
ActiveSheet.Range("$A$2:$P" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.Range("$A$1:$P$256").AutoFilter Field:=3 'unfilter this column

第二个报告(在另一个标签上)使用下面的代码,它以某种方式删除第1行(列标题),从而导致下游影响。

'Find the last row of the table
lastRow = Cells(Rows.Count, 1).End(xlUp).Row

'Autofit all columns
Cells.Select
Cells.EntireColumn.AutoFit

'Filter then delete all rows that don't have a client
Selection.AutoFilter
ActiveSheet.Range("$A$1:$P" & lastRow).AutoFilter Field:=3, Criteria1:="="
ActiveSheet.Range("$A$2:$P" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.Range("$A$1:$P$256").AutoFilter Field:=3 'unfilter this column

看起来,这是相同的代码,但它产生了不同的行为。知道是什么导致了这个吗?

1 个答案:

答案 0 :(得分:0)

问题可能是根据您运行宏的位置与您在工作簿中的活动位置相关而呈现的问题。尝试限定您的对象。

LastRow = Sheets("YOUR SHEET NAME").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("YOUR SHEET NAME").Cells.Select
Sheets("YOUR SHEET NAME").Cells.EntireColumn.AutoFit

希望这有帮助。

第二个代码是按第3列过滤的。你确定单元格C1不是" ="?