场景:在勤哲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。
领取专属 10元无门槛券
私享最新 技术干货