EXCEL技能

您所在的位置:网站首页 excel自动填写表单 EXCEL技能

EXCEL技能

#EXCEL技能| 来源: 网络整理| 查看: 265

大家都知道运用vba可以让我们在excel操作中节省时间,但是vba毕竟需要编程的知识储备,也因此劝退了绝大部分Excel使用者。 其实如果通过案例,在解决实际问题中学习,往往有事半功倍的效果。 今天DADO就给大家讲解一个比较有代表的简单案例,希望能对大家有所帮助。

案例背景图1公司经常需要编制付款单(如图1)每次付款单编制完之后,往往就另存为一份电子版。 这不能满足在同一个地方查找付款单记录的要求。所以需要编制一个单独的付款记录表,把每次编制完的付款单信息登记到这个汇总记录表中。这样就可以一目了然付款单出具的情况。(如图2)图2需求

用vba编写一个宏,并将这个宏关联到“付款单”表的一个“保存”按钮上。 实现在一键将编制完成的付款单信息登记到“付款记录”表中。

解法Sub payrec() '//2023.4.8 Dim payinfo(1 To 1, 1 To 6) As Variant With Sheets("付款单") payinfo(1, 1) = .[I5] payinfo(1, 2) = CDate(.[d4]) payinfo(1, 3) = .[c11] payinfo(1, 4) = "付" & .[C6] & .[C9] payinfo(1, 6) = .[c10] End With With Sheets("付款记录") r = .Cells(.Rows.Count, "a").End(xlUp).Row '求第一个空行并赋值给变量r .Cells(r + 1, 1).Resize(1, 6) = payinfo End With End Sub思路大致上主要分为两部分, 一是从“付款单”表中将所需要的信息提取出来保存在数组中;二是将刚才保存的数组按规定粘贴到“付款记录”表的相应单元格内。根据以上思路,我们需要首先声明一个数组 payinfo, 数组的大小根据“付款记录”表的列数确定。 这里我们定义为一个1行6列的数组。接下来通过with … end with 语句对数组payinfo赋值,完成提取“付款单”表中所需信息的功能。 With Sheets("付款单") payinfo(1, 1) = .[I5] payinfo(1, 2) = CDate(.[d4]) payinfo(1, 3) = .[c11] payinfo(1, 4) = "付" & .[C6] & .[C9] payinfo(1, 6) = .[c10] End With然后我们开始操作“付款记录”表,为了避免覆盖已有数据,我们先找出第一个空行: r = .Cells(.Rows.Count, "a").End(xlUp).Row最后将数组payinfo的值赋予第一个空行所在的六个单元格: .Cells(r + 1, 1).Resize(1, 6) = payinfo在“付款单”表中插入一个长方形形状, 然后右键点击下拉菜单中选择“指定宏”,在弹出的窗口中选择刚才我们保存的宏payrec。

哦,对了,有的同学不知道如何打开vba编辑器,请看我另一篇介绍。

以上都是我自己学习的理解,如有不对之处,请不吝赐教,DADO欢迎大家在评论区交流。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3