У меня есть код, который создает несколько листов (путем копирования существующего мастер-листа) на основе массива, а затем применяет автоматический фильтр.Программно обновлять автофильтр перед экспортом PDF
Вот код, который я использую для применения автофильтра, поскольку вы можете видеть, что он настроен для применения на активируемом листе и изменении любой ячейки.
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, в котором указать листы не были активированы в изменились (так поэтому фильтр не применяется)
Ниже мой сохранить рабочий лист код:
'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
есть ли способ заставить обновление/активацию для каждого из этих листов, чтобы вызвать автофильтр перед экспортом?
NB. Если я нажимаю каждый лист вручную перед экспортом, это нормально.