ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5482|回复: 18

[求助] 怎样能自动筛选打印?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-6-6 17:55 | 显示全部楼层 |阅读模式
我的成绩表B列是很多学校名,我想按学校分别把成绩表打印出来,如果用自动筛选,一张一张打印,很麻烦,也很慢,怎样能自动把这些成绩表按学校名分别打印出来?
谢谢!!

成绩表.rar

15.93 KB, 下载次数: 80

TA的精华主题

TA的得分主题

发表于 2009-6-9 19:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 yelang2005 于 2009-6-6 17:55 发表
我的成绩表B列是很多学校名,我想按学校分别把成绩表打印出来,如果用自动筛选,一张一张打印,很麻烦,也很慢,怎样能自动把这些成绩表按学校名分别打印出来?
谢谢!!

给你化了点时间,能让你为工作带来便利就好
说明:
   1、打开文件时,要点启用宏,
   2、一按“打印成绩单”按钮轻松搞定,当然打印机要保证正常
   说明:代码仅限打印一页和现工作表有的校名

[ 本帖最后由 ayu330602 于 2009-6-10 10:42 编辑 ]

成绩表.rar

27.94 KB, 下载次数: 235

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-10 12:34 | 显示全部楼层

回复 2楼 ayu330602 的帖子

非常感谢!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-10 12:36 | 显示全部楼层

回复 2楼 ayu330602 的帖子

如果能详细说一下过程就更好了!

TA的精华主题

TA的得分主题

发表于 2009-6-10 14:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub yanjie()
Dim ws As Worksheet, d, i&, rg As Range, arr
Set ws = ActiveSheet
Set d = CreateObject("scripting.dictionary")
i = ws.Range("b65536").End(xlUp).Row
For Each rg In ws.Range("b3:b" & i)
If Not d.exists(rg.Value) Then d.Add rg.Value, ""
Next rg
arr = d.keys
For i = 0 To UBound(arr)
Range("b2:b" & i).AutoFilter 1, arr(i), xlFilterValues
'ws.PrintPreview 可以打印预览!
ws.PrintOut copies:=1, collate:=True
Next i
End Sub

TA的精华主题

TA的得分主题

发表于 2009-6-10 19:23 | 显示全部楼层
原帖由 yelang2005 于 2009-6-10 12:36 发表
如果能详细说一下过程就更好了!

仅有一个过程呀,代码是写按钮的点击事件上。
Range("B2:B65536").Select   '选择B2单元格到末尾,目的是只以B列为对象,也就是说只有B2上才有自动筛选功能
Selection.AutoFilter                '对指定工作表的自动筛选
Selection.AutoFilter Field:=1, Criteria1:="中心1班"    '选择打印班级
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True  'PrintOut,指定打印对象,copies:=1打印第1页
如果要按实有记录的页数打印,得先测试行数,通过变量,然后确定copies:=?比较复杂点.
班级的多少问题得加判断
版主老师的代码比较深点,初学者理解可能有点难度

[ 本帖最后由 ayu330602 于 2009-6-10 19:26 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-10 22:12 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-10 22:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 5楼 yanjie 的帖子

谢谢大家的帮助,使我的工作更加便捷!

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-10 22:23 | 显示全部楼层

回复 5楼 yanjie 的帖子

版主老师:
    我用你的代码为什么执行不了呢?请你做个附件上来,可以吗?
   对不起,我对代码还是一窍不通。

TA的精华主题

TA的得分主题

发表于 2009-6-11 10:50 | 显示全部楼层
如果你仅为了工作的便捷,没有进一步学习VBA编程打算的话,用我这种初级的方法就可以了,如果班级有变化,只要进入VBA编辑器复制或删除以下两句代码就可以了
Selection.AutoFilter Field:=1, Criteria1:="中心1班"    '红色部分根据实际
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True  'PrintOut   '上下两句应连用
可把这个工作簿作为模板使用,
有超 过一页的班级时,超过的页可单独打印

[ 本帖最后由 ayu330602 于 2009-6-11 10:58 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-12 15:45 , Processed in 0.024637 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表