输入明细表时,自动复制上一行内容,到末尾自动加新行

场景:在勤哲Excel服务器软件的使用过程中,当我们操作明细表的时候,往往是通过列表选择数据类型来填充数据的。但是,有时候会遇到明细数据有不少项目是重复的,只有个别项目的值有不同,这种情况下,对操作员最方便的做法,是能自动复制已经输入的数据到新的一行上。另外,当明细表的空白行都填满了之后,希望能够自动增加一个新的空行出来,而不需要点击工具栏上的插行按钮。

分析:针对这种情况就需要写VBA了。写VBA的时候,要思考以下几个问题:

什么时候执行VBA代码?在这个问题中,我们希望在每一行输入单价之后自动把本行内容复制到下一行,因此,执行VBA代码的时机,是“输入单价后”,“输入xxx之后”,是Excel的 worksheet_change 事件,因此,我们的代码要写在 worksheet_change 事件处理程序中,还要判断当前单元格是否落在字段“单价”的行列范围内。

如何复制?这个很简单,取当前行的B列和C列单元格的值,分别复制到下一行的B列和C列中。什么是当前行?当前行的行号是 worksheet_change 事件的参数 target 的 row 属性,取单元格的值和对单元格赋值,就是对 range 对象的操作,这个属于VBA的基本知识了。

如何判断到了最后一行?本例的做法是,在模板上,对单价所在的单元区域做了命名,实际填报的时候,取该命名区域的末行行号---range(xx).row+range(xx).rows.count-1,如果当前行行号等于此行号,则说明当前已经到了最后一行。

如何加新行,这个要用到勤哲Excel服务器软件的VBA接口函数 insertRow。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180613G11KNQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券