![]() |
自信的冰淇淋 · 人工智能作曲、算法作曲指南开发者社区· 1 月前 · |
![]() |
正直的茶叶 · 网络游戏究竟应该靠什么赢得未来-新华网· 1 年前 · |
![]() |
飘逸的课本 · 小米Watch ...· 1 年前 · |
![]() |
闷骚的黑框眼镜 · 针灸康复临床医学院-广州中医药大学· 1 年前 · |
![]() |
俊逸的西瓜 · 百年前选择独身终老的“自梳女”,如今都怎样了?· 1 年前 · |
![]() |
正直的硬币 · 音乐制作人到底是干什么的?科普来了~ - 知乎· 1 年前 · |
场景:在勤哲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。
领取 专属20元代金券
Get大咖技术交流圈
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
![]() |
自信的冰淇淋 · 人工智能作曲、算法作曲指南开发者社区 1 月前 |
![]() |
正直的茶叶 · 网络游戏究竟应该靠什么赢得未来-新华网 1 年前 |
![]() |
闷骚的黑框眼镜 · 针灸康复临床医学院-广州中医药大学 1 年前 |
![]() |
俊逸的西瓜 · 百年前选择独身终老的“自梳女”,如今都怎样了? 1 年前 |
![]() |
正直的硬币 · 音乐制作人到底是干什么的?科普来了~ - 知乎 1 年前 |