ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[修改代码]过次页、承前页的插入问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-2-9 22:14 | 显示全部楼层 |阅读模式

会计中经常遇到如下问题:

1)按月插入本月合计、本年累计问题,此问题已经实现

2)在每页的最后一行插入过次页、承前页,此问题基本实现

第二个问题需要修改的代码是:

当点选:科目编码1001、年度为2005、月份为6时,从第2页开始时,每隔一页就会往上每页累进错移一行。

RFaYPWCG.rar (34.54 KB, 下载次数: 312)
[此贴子已经被作者于2007-2-10 8:52:25编辑过]

YReRWUF2.rar

34.64 KB, 下载次数: 354

[修改代码]过次页、承前页的插入问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-9 22:16 | 显示全部楼层

核心的代码如下:

  '以下对符合条件的记录信息进行复制到相应的单元格位置上
  PBar1.Max = Rcount   '进度条的最大值
  Maxrow = Range("F65536").End(xlUp).Row
  For I = 1 To Rcount
      PBar1.Value = K    '进度条的现值
     '以下判断是否满页
      UserRow = Maxrow - 5              '已经显示的记录数
      NoNum = UserRow - Fix(UserRow / 44) * 44
      If NoNum <> 0 Then GoTo ZWY112  '不满页时继续下一条
     '满页时插入过次页、承前页
      Range("F" & Maxrow + 1) = "    过  次  页"
      Range("F" & Maxrow + 2) = "    承  前  页"
      Maxrow = Range("F65536").End(xlUp).Row
      GoTo ZWY112  '不满页时继续下一条
             
ZWY112:  '不满页时进行数据复制
   Maxrow = Maxrow + 1  '复制数据的行位置
   Range("B" & Maxrow) = RST.Fields("月")
   Range("C" & Maxrow) = RST.Fields("日")
   Range("D" & Maxrow) = RST.Fields("字")
   Range("E" & Maxrow) = RST.Fields("号")
   Range("F" & Maxrow) = RST.Fields("摘要")
   RST.MoveNext  '下移一条记录
   K = K + 1     '进度条变量+1
   Next I
  Range("F" & Maxrow + 1) = "    本  月  合  计"  '本月合计处理
  Range("F" & Maxrow + 2) = "    本  年  累  计"  '本月合计处理
  RST.Close

TA的精华主题

TA的得分主题

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

我是如下思考这个插入过次页和承前页的问题:

Maxrow = Range("F65536").End(xlUp).Row
UserRow = Maxrow - 5        '已经显示的记录数
NoNum = UserRow - Fix(UserRow / 44) * 44
If NoNum <> 0 Then GoTo ZWY112  '不满页时继续下一条

当F列的已经使用行数减去满页时能够显示的行数,如果是为0时,说明此时要插入:过次页和承前页,每页显示为45行。

但是以上的条件只是在月份中作判断,并没有考虑插入过的本月合计和本年累计那2行,因为有时会出现本月合计在最后第2行,那此时就要插入:过次页和承前页,然后再显示本年累计那一行,如何完善一下?

 

[此贴子已经被作者于2007-2-9 22:44:59编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-9 22:48 | 显示全部楼层

1)第一页的第1行应为:上年结转、最后1行为:过次页

2)第二页的第1行应为:承前页、最后1行为:过次页

3)第三页的第1行应为:承前页、最后1行为:过次页

......

TA的精华主题

TA的得分主题

发表于 2007-2-9 23:12 | 显示全部楼层
      UserRow = (Maxrow - 5) Mod 45              '已经显示的记录数

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-10 08:56 | 显示全部楼层

[求助]本月合计和本年累计在当页的最后第2行时

谢谢版主!

以上的插入过次页和承前页的条件只是在月份中作判断,并没有考虑插过后的本月合计和本年累计那2行,因为有时会出现本月合计在最后第2行或最后第1行,那此时就要插入:过次页和承前页,然后再显示本年累计那一行。

本楼的附件,当点选:科目编码1001、年度为2005、月份为6时,在第1页的最后一行位置并没有显示出:过次页和承前页,应该如何完善一下?

YG7BMjLq.rar (34.54 KB, 下载次数: 288)


[此贴子已经被作者于2007-2-10 9:00:29编辑过]

TA的精华主题

TA的得分主题

发表于 2007-2-10 09:34 | 显示全部楼层

没看明白.

我这儿按你说的点选:科目编码1001、年度为2005、月份为6时,在第1页的最后一行位置显示出了:过次页和承前页啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-10 11:15 | 显示全部楼层
qee用版主用6楼的附件测试,因为我把数据库修改了。让本月合计刚好落在最后第2行,谢谢版主再次进来修改完善!

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-10 14:02 | 显示全部楼层
如果本月合计和本年累计刚好落在本页的最后2行时,那么就会出现过次页和承前页在下一页的情况,应该达到的要求是:过次页和承前页插入这中间的,不知道如何处理了,求解,谢谢!

TA的精华主题

TA的得分主题

发表于 2007-2-10 14:31 | 显示全部楼层

看不明白过次页的规则,只能你说到哪,我改到哪.其实原理很简单,就是加一下判断,以你的水平是可以自己完成的.

6楼问题修改:(加入一段判断代码)
....
   K = K + 1     '进度条变量+1
  
   Next I
      UserRow = (Maxrow - 5) Mod 45              '已经显示的记录数
      NoNum = UserRow - Fix(UserRow / 44) * 44
      If NoNum = 0 Then
       '满页时插入过次页、承前页
        Range("F" & Maxrow + 1) = "    过  次  页"
        Range("F" & Maxrow + 2) = "    承  前  页"
        Maxrow = Maxrow + 2
      End If
     
  Range("F" & Maxrow + 1) = "    本  月  合  计"  '本月合计处理
  Range("F" & Maxrow + 2) = "    本  年  累  计"  '本月合计处理
  JFsg = 0
  DFsg = 0
  RST.Close
End Sub

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

本版积分规则

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

GMT+8, 2024-11-18 08:38 , Processed in 0.047944 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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