ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA 总表拆分不同工作表后,添加序号,一键打印总表与分表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-6-8 14:55 | 显示全部楼层 |阅读模式
本帖最后由 田蘖 于 2019-6-8 15:13 编辑

VBA 总表拆分不同工作表后,添加序号,一键打印总表与分表

这是我在论坛中找到的一段代码,但我还需要在分表A列中自动添加序号,还可以一键打印总表与分表怎么办?请各位老师指点。
QQ截图.jpg

总表拆分 (示例) - 副本.zip

42.24 KB, 下载次数: 8

附件

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-8 14:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个是我在论坛中找到的代码



Option Explicit
Sub 筛选()
Dim d As Object, lr&, ar, r&, k, sh As Worksheet, tt As Range, shtnm$
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each sh In Sheets
    If sh.Name <> "物料清单" Then sh.Delete
Next
Application.DisplayAlerts = True
Set d = CreateObject("scripting.dictionary")
With Sheets("物料清单")
    lr = .[b65536].End(2).Row
    ar = [a1].Resize(lr, 10)
    For r = 2 To UBound(ar)
        If Len(ar(r, 9)) Then
            shtnm = ar(r, 9)
            If Not d.exists(shtnm) Then
                Set d(shtnm) = .Cells(r, 1).Resize(1, 10)
            Else
                Set d(shtnm) = Union(d(shtnm), .Cells(r, 1).Resize(1, 10))
            End If
        End If
    Next
End With
If d.Count Then
    Set tt = Sheets("物料清单").[a20].Resize(1, 10)
    For Each k In d.keys
        Sheets.Add After:=Sheets(Sheets.Count)
        With ActiveSheet
            .Name = k
            tt.Copy .[a1]
            d(k).Copy .[a2]
            .Columns("a:v").AutoFit
            .DrawingObjects.Delete
        End With
    Next
End If
Set d = Nothing
Set tt = Nothing
Sheets("物料清单").Activate
Application.ScreenUpdating = True
MsgBox "分类完成"
End Sub



TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-8 15:06 | 显示全部楼层
本帖最后由 田蘖 于 2019-6-8 15:09 编辑

这是附件,请老师指点。

总表拆分 (示例) - 副本.zip

42.24 KB, 下载次数: 20

附件

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2019-6-8 15:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-8 15:09 | 显示全部楼层
朱荣兴 发表于 2019-6-8 15:08
没有附件,没人帮得了你的,是在上传不了,加我QQ

刚刚上传成功,浏览器不太好用....
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2019-6-8 15:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-8 15:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
朱荣兴 发表于 2019-6-8 15:20
删除你的代码中强制定义变量的代码
Sub 筛选()
Application.ScreenUpdating = False

老师你好,谢谢您的帮助,确实是自动添加了序号,不过分表的数量不对,目前是5个工作表,用您的代码“拆分”后是3个,缺少2个(分表的数量以后可能会增加,数量不固定)

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-8 15:38 | 显示全部楼层
朱荣兴 发表于 2019-6-8 15:20
删除你的代码中强制定义变量的代码
Sub 筛选()
Application.ScreenUpdating = False

老师,你好,我将您的  lr = .Cells(Rows.Count, 1).End(xlUp).Row  改回  lr = .[b65536].End(2).Row   就好用了,感谢您的帮助。
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2019-6-8 17:49 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-10 08:25 | 显示全部楼层
朱荣兴 发表于 2019-6-8 17:49
其实,把1改成2即可

谢谢老师,还有个问题需要您帮忙,我想将分表中提取标题行的行数向上在加几行能实现吗?另外能批量自动根据单元格内容调整单元格行高与列宽与根据分表中的内容范围自动设置打印区域,然后批量打印除总表外的所有分表吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-26 03:24 , Processed in 0.039962 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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