bootstrap insertrow始终插入到最后一行_用VBA批量隔行插入时要避免陷入这个误区!...

博主致力于提升大学生和职场人士的Office技能,分享如何正确使用VBA进行Excel表格的批量隔行插入操作。文章通过对比三种不同的插入方法,详细解释了如何避免在使用InsertRow时总是插入到最后一行的问题,帮助读者理解并优化代码效率。
摘要由CSDN通过智能技术生成

我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!

前几天刚写过一篇文章:

《听说这是制作工资单最快的办法》

里面代码是这么写的:

Sub 制作工资条()Dim i%, r$, r1$, n%, r2$, r3$For i = 3 To [a1].End(xlDown).Row  r = r & i & ":" & i & ","  r1 = Left(r, Len(r) - 1)NextRange(r1).InsertRange("a1", Cells(Rows.Count, "f").End(xlUp)).SpecialCells(xlCellTypeBlanks) = Range("a1:f1").ValueFor n = 3 To [a1].End(xlDown).Row Step 2  r2 = r2 & n & ":" & n & ","  r3 = Left(r2, Len(r2) - 1)NextRange(r3).InsertWith Range("a1", Cells(Rows.Count, "f").End(xlUp)).SpecialCells(xlCellTypeBlanks)  .RowHeight = 13  .Borders(xlEdgeLeft).LineStyle = xlNone  .Borders(xlEdgeRight).LineStyle = xlNone    .Borders(xlInsideVertical).LineStyle = xlNoneEnd WithEnd Sub
代码里包括了隔行插入、批量填充空白单元格、设置单元格格式三个部分。 前几天,有位同学拿个这个代码练习的时候发现一个问题,当工资表中的数据条数比较多时,代码运行就会弹出错误提示,如下:

064b25fceb7a7792af15b463871083a6.gif

这是为什么呢?

上面代码中的隔行插入,我是模拟在工作表中按住Ctrl然后分别选中每行,然后再插入,这样如果数据行数多时就会出现一种情况:

Range("1:1","2:2","3:3",……) 中间的红色部分可能会超过255个字符,超过255个字符后就会报错,因为变量名的长度是不允许超过255个字符的。 遇到这种情况该怎么解决呢? 我们可以在循环时直接插入,比如:
Sub 制作工资单2()Dim i%, r%, rng As Range, rng1 As Ranger = Cells(Rows.Count, 1).End(3).RowFor i = 3 To (r - 1) * 2 Step 2    Range(i & ":" & i).InsertNextr = Cells(Rows.Count, 1).End(3).RowSet rng = Range("a2", Cells(r, "h")).SpecialCells(xlCellTypeBlanks)[a1:h1].Copy rngEnd Sub
如上代码中,每插入一行,原有行数就要下移一行,所以循环时步长应该为2。

也可以从最后往前面循环插入:

Sub 制作工资单1()Dim i%, r%, rng As Ranger = Cells(Rows.Count, 1).End(3).RowSet rng = Range("3:3")For i = r To 3 Step -1    Range(i & ":" & i).InsertNextr = Cells(Rows.Count, 1).End(3).RowSet rng = Range("a2", Cells(r, "h")).SpecialCells(xlCellTypeBlanks)[a1:h1].Copy rngEnd Sub

效果如下:

09ba6c0eb7d315e8fa2465cb211801da.gif

此种方法不需要把行数用字符串完整表达出来后再插入:

大家仔细对比三段代码,细品其中的区别,一定会有所收获!

本节的分享就到这里,鹏哥祝大家每天都有进步。

想学习更多,请在电脑端打开网址: www.mihong.top  

6571c4a52070c90aefc0412df6d8579b.gif

鼓励一下,赞完再走

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值