excel学习库

excel表格_excel函数公式大全_execl从入门到精通

EXCEL之VBA应用实例-一秒拆分生成工资条

这里我分成了三个步骤,分别是“自动选择已经使用区域”,“为选择区域添加边框”,“拆分工资条”,因为前两项功能使用频率也是比较,所以单独分开,在实际应用中,合成到一个sub程序块里面就可以了。现在分别分享一下这三个代码 ’第一个代码,自动选择已使用区域 '自动选择当前活动表格上选择的区域,只有一行代码,这个一看就知道意思的就不多说。 Sub 选择已使用区域() ActiveSheet.usedrange.Select End Sub '第二个代码,自动为选择区域设置实线边框 '由于边框的属性比较多,比如边框的线条,上下左右,线条颜色,粗细,宽度,高度等等,需要详细了解的可以在帮助文档里查找borders查看相关的属性,实线边框应该是最常用的一个 sub 为选择区域添加边框() 'selection.Borders.LineStyle = xlDouble ‘这里是设置双线边框 selection.Borders.LineStyle = xlContinuous 'xlContinuous实线边框, end sub '第三个代码 '下面的代码就是这次分享的主要内容 Sub 拆分工资条() Application.ScreenUpdating = False '禁止屏幕刷新,直接等待显示结果,这个可以不添加,如果数据量比较大可以看到数据表在闪动在工作。 c = Selection.Column ‘获取选择单元格的列数,如果选择的单元格是一个区域则获取左上角第一个单元格的列数 a = Cells(Rows.Count, c).End(xlUp).Row ’获取上面获取的所在列最后一个有数据的单元格所在行数,End(xlUp).row,是从该列最后一行往上查到第一个有数据的单元格,并返回其所在的行号,注意,如果这里row写成rows则是返回该单元格的值. Dim r As Integer 'For r = 3 To A * 3 - 4 Step (3) '从第三行开始,在上面插入两行,下面执行两次插入命令代表插入了两行,原来的第四行将移到第六行,所以 SETP步进值设为3,因为1行变成3行,所在总行数*3,如果是每隔一行插入一行,则总行数*2,步进值2,下面插入行命令只设一条就可以了 For r = 3 To (a - 2) * 3 Step (3) '上面一行和这一行是同样的效果,只是表达方式不一样,因为从第三行开始,第一行前面插入两行,等于把第三行到有数据的内容最后一行都变成三行,前面两行是不变的,所以先减掉前面两行再乘以3就是最后一行所在行 Rows(r).Insert ‘插入一行 Range("A1:L1").Copy Range("a" & r & ":l" & r & "") '把表头复制到这刚插入的这一行 Rows(r).Insert '然后在这一行前面再插入一行 ,并下面的的语句中把这一行左中右的线都去掉。变成空白行,这样可以让每一条工资条区分得更清晰 Rows(r).Borders(xlInsideVertical).LineStyle = xlNone '中间边框设置为空,如果是单个单元格这个参数无效,因为不存在中间线 Rows(r).Borders(xlEdgeLeft).LineStyle = xlNone '左边边框设置为空,选择多列单元格只对最左边单元格的左边线起作用 Rows(r).Borders(xlEdgeRight).LineStyle = xlNone '右边框设置为空,选择多列单元格只对最右边单元格的右边线起作用 'Rows(r).Borders(xlEdgeTop).LineStyle = xlNone '上边框设置为空,这里不需要设置,因为要保留上面一行的下边线 'Rows(r).Borders(xlEdgeBottom).LineStyle = xlNone '下边框设置为空,这里不需要设置,因为要保留下面一行的上边线 Rows(r).RowHeight = 8 '设置行高,每个工资条之间留一点空白,不需要留太多,可以节省纸 Next End Sub

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接