ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助:EXCEL工资表用VBA代码自动生成“本页小计”,“总计”

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-30 11:48 | 显示全部楼层 |阅读模式
各位老师好:我套用了论谈上某一老师的代码,“研究”了那位老师上传的”代码“,但还是不太明白。大家能帮我改下代码吗?
我想:
1、把”本页小计“和最后一页的”总计“放在E列(”身份证号码“列),”本页小计“和”总计“字体显示为红色;
2、每张工资表分28行打印;
3、每页小计(总计)列从G(”基本工资‘)列到T(”实发工资‘)列;
4、每页显示表头和表尾的”制表人,备注等“内容
5、单元格能根据单元格大小自动缩小字体;
万分感谢,谢谢!!

自动分页小计(带总计)2.rar

25.52 KB, 下载次数: 60

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-9-30 14:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-30 17:34 来自手机 | 显示全部楼层
这是2014年那位老师上传的,我同时也在求助于他,但不知道能不能有好消息。谢谢您!

TA的精华主题

TA的得分主题

发表于 2018-10-2 21:41 | 显示全部楼层
ljxlwq_0803 发表于 2018-9-30 17:34
这是2014年那位老师上传的,我同时也在求助于他,但不知道能不能有好消息。谢谢您!
  1. Sub 插入小计合计()
  2.     Dim x, y%, r%, a%, b%, i%, n%, j%
  3.     Worksheets("工资表").Activate
  4.     x = InputBox("请输入每页拟打印的行数:                   (不能超过一页的范围!!!)")
  5.     r = Range("a65536").End(3).Row - 1
  6.     y = WorksheetFunction.RoundUp((r - 5) / x, 0)
  7.     For i = 1 To y
  8.         a = (i - 1) * 1 * x + 4 + i
  9.         If i = y Then
  10.             b = r + i - 1
  11.         Else
  12.             b = a + x - 1
  13.         End If
  14.         Rows(b + 1).Insert Shift:=xlDown 'B+1行之上插入一行
  15.         MsgBox b
  16.         If i = y Then
  17.             Rows(b).Copy Rows(b + 1)
  18.             Rows(b + 1).ClearContents
  19.         End If
  20.         Cells(b + 1, 1) = "本页小计"
  21.         For j = 6 To 20
  22.             Cells(b + 1, j).Value = Application.WorksheetFunction.Sum(Range(Cells(a, j), Cells(b, j)))
  23.         Next
  24.         If i = y Then
  25.             Rows(b + 2).Insert Shift:=xlDown 'B+2行之上插入一行
  26.             Rows(b).Copy Rows(b + 2)
  27.             Rows(b + 2).ClearContents
  28.             Cells(b + 2, 1) = "总    计"
  29.             For n = 5 To b + 1
  30.                 For j = 6 To 20
  31.                     If Cells(n, 1) = "本页小计" Then
  32.                         Cells(b + 2, j) = Cells(b + 2, j) + Cells(n, j)
  33.                     End If
  34.                 Next
  35.             Next
  36.         End If
  37.      Next
  38.   End Sub

  39. Sub 删除小计合计()
  40.     r = Range("a65536").End(3).Row
  41.     For i = r To 5 Step -1
  42.         If Cells(i, 1) = "本页小计" Or Cells(i, 1) = "总    计" Then
  43.             Rows(i).Delete
  44.         End If
  45.     Next
  46. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-10-2 21:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
自动分页小计(带总计)2.rar (38.96 KB, 下载次数: 145)
动态设置,每张主表内容可在弹出的消息框中随意输入每张表的行数,小计合计行自动调整。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-3 07:39 来自手机 | 显示全部楼层
收到,谢谢帮助!下载后学习学习。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-3 10:09 | 显示全部楼层
hzruziniu 发表于 2018-10-2 21:48
动态设置,每张主表内容可在弹出的消息框中随意输入每张表的行数,小计合计行自动调整。

老师您好:如果我每页打印25行的话,预览时显示是这样的,该如何设置?
图片2.png
图片1.png

自动分页小计(带总计)2.rar

37.1 KB, 下载次数: 25

TA的精华主题

TA的得分主题

发表于 2018-10-3 10:33 | 显示全部楼层
ljxlwq_0803 发表于 2018-10-3 10:09
老师您好:如果我每页打印25行的话,预览时显示是这样的,该如何设置?

你设置的是纵向打印,设置成横向打印,或者用VBA设置打印格式

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-3 11:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
hzruziniu 发表于 2018-10-3 10:33
你设置的是纵向打印,设置成横向打印,或者用VBA设置打印格式

老师您好:VBA设置打印格式(横向打印)的代码能帮我一起写进去吗?我是新手,不太懂。万分感谢!!

TA的精华主题

TA的得分主题

发表于 2018-10-3 11:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ljxlwq_0803 发表于 2018-10-3 11:15
老师您好:VBA设置打印格式(横向打印)的代码能帮我一起写进去吗?我是新手,不太懂。万分感谢!!

插入人工分页符

Sub 插入小计合计()
    Dim x, y%, r%, a%, b%, i%, n%, j%
    Worksheets("工资表").Activate
    x = InputBox("请输入每页拟打印的行数:                   (不能超过一页的范围!!!)")
    r = Range("a65536").End(3).Row - 1
    y = WorksheetFunction.RoundUp((r - 5) / x, 0)
    For i = 1 To y
        a = (i - 1) * 1 * x + 4 + i
        If i = y Then
            b = r + i - 1
        Else
            b = a + x - 1
        End If
        Rows(b + 1).Insert Shift:=xlDown 'B+1行之上插入一行
        MsgBox b
        If i = y Then
            Rows(b).Copy Rows(b + 1)
            Rows(b + 1).ClearContents
        End If
        Cells(b + 1, 1) = "本页小计"
       ActiveSheet.HPageBreaks.Add Before:=Cells(b + 2, 1) ''插入人工分页符
        For j = 4 To 20
            Cells(b + 1, j).Value = Application.WorksheetFunction.Sum(Range(Cells(a, j), Cells(b, j)))
        Next
        If i = y Then
            Rows(b + 2).Insert Shift:=xlDown 'B+2行之上插入一行
            Rows(b).Copy Rows(b + 2)
            Rows(b + 2).ClearContents
            Cells(b + 2, 1) = "总    计"
            ActiveSheet.HPageBreaks.Add Before:=Cells(b + 3, 1) ''插入人工分页符
            For n = 5 To b + 1
                For j = 4 To 20
                    If Cells(n, 1) = "本页小计" Then
                        Cells(b + 2, j) = Cells(b + 2, j) + Cells(n, j)
                    End If
                Next
            Next
        End If
     Next
  End Sub

Sub 删除小计合计()
    ActiveSheet.ResetAllPageBreaks ''删除人工分页符
    r = Range("a65536").End(3).Row
    For i = r To 5 Step -1
        If Cells(i, 1) = "本页小计" Or Cells(i, 1) = "总    计" Then
            Rows(i).Delete
        End If
    Next
End Sub

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 11:29 , Processed in 0.050194 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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