如何使Selection.AutoFilter从第3行开始,而不是第1行

我有这个代码:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Application.ScreenUpdating = False If Target.Value <> "" Then Set wbks = Workbooks.Open("\\MyPath\Workbook.xlsx") wbks.Sheets("Control").Activate ActiveSheet.Range("A1").Select Selection.AutoFilter Selection.AutoFilter Field:=7, Criteria1:=Target.Value '7 is the filter # column End If End Sub 

只有在工作表control中的标题位于第1行时才能正常工作。
我的问题是\\MyPath\Workbook.xlsx是一个只读文件,它的标题从第3行开始。

尝试下面的代码:

  • 避免在代码中使用select。
  • 当您closures更新过程的屏幕时,总是将Application.ScreenUpdating = True设置为底部。

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Application.EnableEvents = False Application.ScreenUpdating = False If Target.Value <> "" Then Set wbks = Workbooks.Open("\\MyPath\Workbook.xlsx") wbks.Sheets("Control").Activate wbks.Sheets("Control").Range("A3:G3").AutoFilter Field:=7, Criteria1:=Target.Value '7 is the filter # column End If Application.EnableEvents = True Application.ScreenUpdating = True End Sub 

尝试在自动filter之前添加此代码

 Rows("3:3").Select 

制作代码:

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Application.ScreenUpdating = False If Target.Value <> "" Then Set wbks = Workbooks.Open("\\MyPath\Workbook.xlsx") wbks.Sheets("Control").Activate ActiveSheet.Range("A1").Select Rows("3:3").Select Selection.AutoFilter Selection.AutoFilter Field:=7, Criteria1:=Target.Value '7 is the filter # column End If End Sub 

希望它有帮助,布鲁诺