如何使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
希望它有帮助,布鲁诺