Excel打印行WHERE(选择标准)

时间:2016-10-05 02:26:34

标签: excel vba excel-vba

我的文件有4列(A B C D),A列中有“经理”,B栏中有员工编号,C& D.我想要做的是能够有一个打印宏,打印每个经理下的所有员工在PDF上,标题重复在顶部。因此,当点击打印宏时,它会询问“哪个经理”?然后点击它然后它将打印PDF。

这可能吗?我一直在研究循环,我认为这样做是可行的,但似乎无法弄清楚如何替换下面的“范围”。这是我在具有静态范围的另一个文件中使用的示例代码。

非常感谢任何帮助!谢谢。附:抱歉代码格式化,我似乎无法习惯Stack Overflow的编辑方式。

<div class="chart">
  <div style="width: 49.81%;">1, $4,980,777</div>
  <div style="width: 41.10%;">2, $4,109,778</div>
</div>

End Sub

1 个答案:

答案 0 :(得分:1)

如果您有兴趣一次打印一位经理,那么您最好的选择可能就是使用AutoFilter。

Sub Dept_BGT_Print()
Dim Sel_Manager As String
'Specify headers to be repeated at the top
With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$1"
        .PrintTitleColumns = ""
End With

'Manager selection through simple Inputbox
 Sel_Manager = InputBox("Which manager?")
'Insert autofilter for worksheet
Cells.Select
Selection.AutoFilter
'Select manager defined in inputbox
ActiveSheet.Range("A1", Range("D1").End(xlDown)).AutoFilter Field:=1, Criteria1:=Sel_Manager
 'Select range to be printed and specify manager in filename
ActiveSheet.Range("A1", Range("D1").End(xlDown)).Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"Employees for manager " & manager & ".pdf", Quality:=xlQualityStandard, 
 _IncludeDocProperties:=True, IgnorePrintAreas:=False,  OpenAfterPublish:=True

 'remove autofilter
  ActiveSheet.ShowAllData
End Sub