excel vba怎么按部门自动分页打印 50
1、怎么实现按部门自动分页打印?我知道要用vba,代码请解释一下。2、此表部门在A列,若在其它列我怎么修改代码?3、此表有好几千行。部门姓名性别年龄人事姓名1女20技术姓...
1、怎么实现按部门自动分页打印?我知道要用vba,代码请解释一下。
2、此表部门在A列,若在其它列我怎么修改代码?
3、此表有好几千行。
部门
姓名
性别
年龄
人事
姓名1
女
20
技术
姓名2
女
20
财务
姓名3
女
20
销售
姓名4
女
20
生产
姓名5
女
20
安全
姓名6
女
20
人事
姓名7
女
20
技术
姓名8
女
20
财务
姓名9
女
20
销售
姓名10
女
20
生产
姓名11
女
20
安全
姓名12
女
20
人事
姓名13
女
20
技术
姓名14
女
20
财务
姓名15
女
20
销售
姓名16
女
20
生产
姓名17
女
20
安全
姓名18
女
20
人事
姓名19
女
20
技术
姓名20
女
20
财务
姓名21
女
20
销售
姓名22
女
20
生产
姓名23
女
20
安全
姓名24
女
20
人事
姓名25
女
20
技术
姓名26
女
20
财务
姓名27
女
20
销售
姓名28
女
20
生产
姓名29
女
20
安全
姓名30
女
20 展开
2、此表部门在A列,若在其它列我怎么修改代码?
3、此表有好几千行。
部门
姓名
性别
年龄
人事
姓名1
女
20
技术
姓名2
女
20
财务
姓名3
女
20
销售
姓名4
女
20
生产
姓名5
女
20
安全
姓名6
女
20
人事
姓名7
女
20
技术
姓名8
女
20
财务
姓名9
女
20
销售
姓名10
女
20
生产
姓名11
女
20
安全
姓名12
女
20
人事
姓名13
女
20
技术
姓名14
女
20
财务
姓名15
女
20
销售
姓名16
女
20
生产
姓名17
女
20
安全
姓名18
女
20
人事
姓名19
女
20
技术
姓名20
女
20
财务
姓名21
女
20
销售
姓名22
女
20
生产
姓名23
女
20
安全
姓名24
女
20
人事
姓名25
女
20
技术
姓名26
女
20
财务
姓名27
女
20
销售
姓名28
女
20
生产
姓名29
女
20
安全
姓名30
女
20 展开
3个回答
展开全部
Sub 按部门打印()
Dim Dic As Object
Dim i As Integer, r As Integer
Dim strPart
r = Range("A65536").End(xlUp).Row
Set Dic = CreateObject("scripting.dictionary") '创建字典对象
For i = 2 To r '将第一列数据添加到字典的key值中
Dic(CStr(Cells(i, 1))) = ""
Next i
'因字典对象的Key不能重复,结果就是字典对象中保留了所有的部门(每个部门只存有一个)
Range("A1:D1").Select '标题行
Selection.AutoFilter '筛选
ActiveSheet.PageSetup.PrintArea = "$A$1:$D$" & r '设置打印区域
For Each strPart In Dic.keys
ActiveSheet.Range("$A$1:$D$" & r).AutoFilter Field:=1, Criteria1:=strPart '对每个部门进行筛选
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False '打印命令(份数=1,……)
Next
Set Dic = Nothing
End Sub
A在其他列时或列数较多时更改代码中的 区域,即将代码中提到的“A"列换到应该在的一列,比如C列; "$A$1:$D" & r 更改为 "$C$1:$H" & r, A1:D1也改成相应的区域
右击工作表——查看代码——将代码粘贴过去,运行。
追问
我测试了一下,为什么在打印预览里只能看到第一个部门的人员,其它的部门在打印预览里都看不到?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
收费代码,请回复 ^+^
追问
多少钱?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询