ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]请帮忙改改这工资条

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-4-24 16:53 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这是本人建立的一个工资文件,其中的“工资表”是用EXCEL做的, “工资条”是用VB做的,“工资表”和“工资条”都是用132列的打印纸 在爱普生1600K3打印机上打印出来的, 工资条每页打印6个人的数据, 第1页就是1, 2, 3, 4, 5, 6 第2页就是7, 8, 9, 10, 11, 12 第3页就是13, 14, 15, 16, 17, 18 第4页就是19, 20, 21, 22, 23, 24 第5页就是25, 26, 27,28,29,30 第5页就是31, 32, 33, 34, 35, 36 第5页就是37, 38, 39, 40, 41, 42 第5页就是43, 44, 45, 46, 47, 48 第5页就是49, 50, 51, 52, 53, 54 在打印好工资条后要把每页叠起来,然后切开,切开后,每叠的顺序就变成了 第1叠是1, 7, 13, 19, 25, 31, 37, 43, 49 第2叠是2, 8, 14, 20, 26, 32, 38, 44, 50 第3叠是3, 9, 15, 21, 27, 33, 39, 45, 51 第4叠是4,10, 16, 22, 28, 34, 40, 46, 52 第5叠是5,11, 17, 23, 29, 35, 41, 47, 53 第6叠是6,12, 18, 24, 30, 36, 42, 48, 54 为了便于分发,就要重新按“序号”把已切开的工资条整理好, 这样在分发工资条时才会方便些。现在想对“工资条”做一个改进, 目的是使它在切开后就可以直接拿着每叠进行分发,而不必重新整理一次 所以在打印工资条时不是按1、2、3、4等顺序打, 而是按照1, 7, 13, 19, 25, 31, 37, 43, 49 2, 8, 14, 20, 26, 32, 38, 44, 50 3, 9, 15, 21, 27, 33, 39, 45, 51 4,10, 16, 22, 28, 34, 40, 46, 52 5,11, 17, 23, 29, 35, 41, 47, 53 6,12, 18, 24, 30, 36, 42, 48, 54这样的顺序打, 那么切开后的工资条每一叠的号码就是相连的,就可以直接拿着每叠进行分发了, 如果只是几十人的单位可能显示不出太大差别,如果单位有一千几百人差别就相当明显。 请各位兄弟帮忙解决一下,拜托! ss8DiaQw.rar (92.11 KB, 下载次数: 18)

TA的精华主题

TA的得分主题

发表于 2006-7-19 12:19 | 显示全部楼层
我记得应该是重复贴。

TA的精华主题

TA的得分主题

发表于 2006-7-19 12:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-7-19 16:28 | 显示全部楼层

楼主字太多了,看了头晕,

我做过几次例子,参考来参考去,捣鼓来捣鼓去,还是觉得Word的邮件合并方法简便,不象Excel可能要编程,邮件合并效果可做得“豪华”些。

要点:主文档最初开始一定要按下面来选择。这样就不用使用《NEXT》之类的域了。

楼主的要求很奇特,你做好的工资条不能整张整张地让分到手的每个部门自己裁去呀?为什么要裁好?不是找麻烦么?

硬要这样做,可以在数据源的序号上下工夫,这样打出来就是你的要求了。

[此贴子已经被作者于2006-7-19 16:35:00编辑过]

[求助]请帮忙改改这工资条

[求助]请帮忙改改这工资条

TA的精华主题

TA的得分主题

发表于 2006-7-20 09:44 | 显示全部楼层

我昨天在Excel开发组问了一下,这个问题应该能解决了:

我的方法是Word邮件合并,

1. 主文档类型开始选择“目录”类型,并自己设计出一页如a4能放多少m条。

2. 在Excel中将你的那些职工名单每条记录前加两空列,一列是123456...自然序列,旁边用VBA产生一个特殊的等差数列

Sub CountRows()
Application.ScreenUpdating = False
Dim n As Long, i As Long, j As Long, k As Long, arr
n = Range("a65536").End(xlUp).Row
arr = Range("a1:a" & n)
m = InputBox("please enter m", , 3)
For i = 1 To m
For j = i To n Step m
k = k + 1
arr(k, 1) = j
Next
Next
Range("b1:b" & n) = arr
Application.ScreenUpdating = True
End Sub

(这个vba不是我写的,是northwolves版主写的,我写不来,只不过能看懂些...)

即 将这个vba放在模块内运行一下,它已经考虑总人数不能被一张上打印人数m整除的问题。

运行后得到这个等差数列后,给它重新按升序排列。这样所有的职工跟着重新排列成楼主要的顺序。

3. 以这个Excel为数据源,邮件合并到Word主文档中去即得。

下面是那个数列的例子。

http://club.excelhome.net/viewthread.php?tid=178135&extra=&page=1#459493

[此贴子已经被作者于2006-7-20 9:45:09编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 18:59 , Processed in 0.032050 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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