在PDF导出之前以编程方式更新自动filter

我有一些代码,通过基于数组创build大量工作表(通过复制现有的工作表),然后应用自动filter。

这里是我用来应用自动filter的代码,你可以看到它被configuration为应用在被激活的表格和任何单元格的变化。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = False ActiveSheet.AutoFilterMode = False Range("A19").AutoFilter Range("A19").AutoFilter Field:=1, Criteria1:=Range("F17").Value End Sub Private Sub Worksheet_Activate() Application.ScreenUpdating = False ActiveSheet.AutoFilterMode = False Range("A19").AutoFilter Range("A19").AutoFilter Field:=1, Criteria1:=Range("F17").Value End Sub 

我的问题是,我然后运行一些进一步的代码来保存工作表到PDF,在这一点上表未被激活的变化(所以因此filter不适用)

以下是我的保存工作表代码:

 'Code to Save PDF Dim wks As Worksheet Dim WksCell As Range ' Look at each cell within the range and obtain worksheet names For Each WksCell In ActiveSheet.Range("A2:A" & iHighest).Cells ' Attempt to reference the worksheet using this name Set wks = Excel.Worksheets(WksCell.Value) Set rng = wks.Range("A2:F20") pdfName = wks.Name ChDir ActiveWorkbook.Path & "\" fileSaveName = wks.Name wks.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ fileSaveName _ , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ :=False, OpenAfterPublish:=False Next End Sub 

有没有办法强制更新/激活每个这些表来触发导出之前的自动filter?

NB。 如果在导出之前手动点击每张纸,那就没有问题了。

您可以添加.Sheets集合的迭代,并调用.Activate()方法来执行Worksheet_Activate()事件( 模拟每个选项卡上的单击

IE浏览器。

 Dim sh as Worksheet For Each sh in sheets sh.Activate() Next