自动筛选功能正在删除我的列标题

时间:2019-08-02 13:58:25

标签: excel vba

我运行我的VBA代码,第一次运行它会得到想要的结果,但是如果第二次运行它,我的列标题就会被删除。仅供参考,我的表从E开始并经过N。我的按钮在O列上,并且在我第二次运行它时也被删除。

切换范围无济于事,将自动筛选设置为false也不起作用。 #

Sub Auto_filter()
Dim sh As Worksheet
Set sh = ThisWorkbook.Worksheets("HP Service Manager")
sh.AutoFilterMode = False
With sh
On Error Resume Next
.ShowAllData

.Range("E1:N1").AutoFilter 1, "IM*"
AutoFilter = False
End With
End Sub

# 期望不会删除列标题。

2 个答案:

答案 0 :(得分:0)

问题出在您共享的第二个代码中。

代码首先在此处设置范围:

Set Rng = Range("E1", Cells(iRow, "E"))

然后在此处尝试删除该范围内的所有可见单元格(应用过滤器之后)

Rng.SpecialCells(xlCellTypeVisible).EntireRow.Delete

其中还包括标题单元格。

因此,一种简单的处理方法可能是设置另一个这样的范围

Set Rng2 = Range("E2", Cells(iRow, "E"))

然后使用它删除数据

Rng2.SpecialCells(xlCellTypeVisible).EntireRow.Delete

以下是重写的功能,供您参考。这只会删除从第2行开始的空白行。如果没有要删除的空白行等,您可能需要添加一些错误处理。

Sub DeleteRowsAll()
Dim iRow As Long
Dim Rng As Range
Application.ScreenUpdating = False
Rows(1).Insert
Range("E1").Value = "rabbitohs"
With ActiveSheet
.UsedRange
iRow = .Cells.SpecialCells(xlCellTypeLastCell).Row
Set Rng = Range("E1", Cells(iRow, "E"))
Rng.AutoFilter Field:=1, Criteria1:=""
Set Rng2 = Range("E2", Cells(iRow, "E"))
Rng2.SpecialCells(xlCellTypeVisible).EntireRow.Delete
.UsedRange
End With
End Sub

答案 1 :(得分:0)

(async function () {

  reading reed permanent {

    if (reed === 1){
      post data to cloud;
      setTimeout( () => { if(reed still open) {/*do what you want after timeout*/}  }, 20 );
    }
  }
})();

结束子