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
展开
 我来答
百度网友8bf0b78
2020-03-26
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cnbubble
2015-06-12
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
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也改成相应的区域

右击工作表——查看代码——将代码粘贴过去,运行。

追问
我测试了一下,为什么在打印预览里只能看到第一个部门的人员,其它的部门在打印预览里都看不到?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzhilling
2015-06-12
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
收费代码,请回复 ^+^
追问
多少钱?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式