如何使“私人” Sub与“普通” Sub一起使用?

时间:2019-04-29 19:53:21

标签: excel vba printing pivot-table

我有大约200多家公司的大型电子邮件数据库。我正在尝试为每个公司创建单独的列表,其中包括该公司的所有用户。这个想法是要有一个目标单元格,公司名称在该单元格中循环,然后根据目标单元格更新数据透视表。结果列表将打印为PDF。

在下面的代码中,顶部过滤掉目标单元格中​​的公司名称,并每次打印为PDF。

底部的代码根据目标单元格中​​的公司名称过滤数据透视表。此部分也适用,但仅当我在工作表中并自行更改公司名称时(即)。没有上面的宏。

Sub UserList_Creation()
'Define Worksheet
Dim wk As Worksheet

Set wk = Worksheets("Users")

'Add +1 to the Lookup Cell
Do
Range("F1").Value = Range("F1").Value + 1


' SavePDF Macro
'

'
ChDir "C:\Users\jhercksen\Desktop\Q2_2019"
wk.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\jhercksen\Desktop\Q2_2019\Inactive Companies\" & Range("B4").Value _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

'Loop through last three steps until the below is satisfied
Loop Until Range("F1") >= Range("F2")
End Sub

++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'This line stops the worksheet updating on every change, it only updates when cell H6 or H7 is touched
If Intersect(Target, Range("B3")) Is Nothing Then Exit Sub

'Variables
Dim pt As PivotTable
Dim Field As PivotField
Dim NewCat As String

'Details for Pivottable location
Set pt = Worksheets("Users").PivotTables("PivotTable1")
Set Field = pt.PivotFields("Company ")
NewCat = Worksheets("Users").Range("B3").Value

'This updates and refreshes the PIVOT table
With pt
Field.ClearAllFilters
Field.CurrentPage = NewCat
pt.RefreshTable
End With

End Sub

我想弄清楚如何使这两个宏一起工作,以便当第一个宏更改目标单元格中​​的公司名称时,第二个宏将枢纽分析表筛选为正确的公司电子邮件列表,然后再打印为PDF。

非常感谢您的帮助!

0 个答案:

没有答案