Excel VBA 7.70间隔插入空行,VBA快又准!职场生存效率高于一切!
间隔插入空行,VBA快又准!职场生存效率高于一切!
点击上方“Excel和VBA”,选择“置顶公众号”
致力于原创分享Excel的相关知识,源码,源文件打包提供
一起学习,一起进步~~
昨天我们学习了通过VBA来一次性插入多列的操作,当然有很多的小伙伴对于这个方法并不是很感冒,毕竟插入多列的操作,其实我们也可以通过鼠标来完成的,虽然并不是很快,但是肯定比写代码要快,既然如此,我今天就放个大招吧,来一个通过鼠标无法一次实现的功能,批量间隔插入空行。
场景说明
这是我们今天的工作表,我们现在需要在其中间隔插入几行,随我们自己心情的输入的, 非常的灵活
代码区
Sub Sss()
Dim rng As Range, trng As Range
Set rng = Application.InputBox("请选择要插入空行的单元格区域", "区域的确定", , , , , , 8)
CountR = rng.Rows.Count
FirstR = rng.Row
FirstC = rng.Column
k = 0
num = Application.InputBox("请输入间隔的行数", "间隔行数的确定", , , , , , 1)
If num <> 1 Then
For i = 1 To CountR Step num
If i <> 1 Then
k = k + 1
If k = 1 Then
Set trng = Cells(FirstR + i - 1, FirstC)
Else
Set trng = Union(trng, Cells(FirstR + i - 1, FirstC))
End If
End If
Next i
Else
For i = 1 To CountR Step num
If i <> 1 Then
k = k + 1
If k = 1 Then
Set trng = Cells(FirstR + k, FirstC)
trng.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
j = j + 1
Else
Set trng = Cells(FirstR + k + j, FirstC)
trng.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
j = j + 1
End If
End If
Next i
Exit Sub
End If
trng.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
虽然代码看起来很长,但是走到现在,大家应该都能够看出其中不过就是两个循环而已的事情了吧
先来看看代码执行的最终成果
相信上面的动图已经非常清晰的展示了最终的效果了,不管我们的工作表的数据在什么区域,又或者我们想要插入的间隔并不是一个平均的数据,都可以通过这个代码插入,非常的方便简单。
代码解析
来看看今天的代码解析
其实间隔插入行的关键核心所在,就是你要判断你要插入的行的位置,然后执行插入的操作,但是我们又不能和普通的插入采用一样的方式,选择一行我插入一行
为什么不能呢?
因为你在插入的过程中,导致工作表的总行数就出现了变化,但是代码读数的行数是一个固定的状态,他不会随着你增加行数而增加,
所以这里我们要明确,我们不能够通过循环遍历所有行数,然后间隔插入的方式来实现了,那么我们要如何实现呢?
这里我们采用选中单元格之后, 在直接插入空行的方式来进行。
所以我们的重点就变成了如何选择多个单元格了。
单元格的选择应该是我们下一个系列的重点,而不是这个系列的,但是工作表的部分操作有不可避免的会涉及到部分单元格的操作,这里我们就先大致的了解下
Union(trng, Cells(FirstR + i - 1, FirstC))
union(range1,range2,......)这个就是用来组合多个单元格区域的,相当于将range1,range2,即括号里面的单元格都组合在一起,形成一个整体
可以同时被选择,也可以同时被操作,有点类似于我们按照CTRL,然后鼠标选择单元格的效果
我们在代码中加上选择的按钮,我们来看看
当然我们可以看到每隔两列,每行的首个单元格点就已经被选中了,然后我们就可以执行后面的代码执行一次性插入空行了。
trng.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
这句代码就是执行插入空行的操作的。
上面这一段讲述的就是我们第一个循环的内容,那么很明显,我们这里有两个循环,那第二个循环的作用是干嘛的呢?
还有一种特殊情况,那就是当我们是需要隔行就是每隔一行插入一个空行的时候,我们就不能一次性全部选中再插入了,这就变成了我们之前批量插入多个空行的效果了
所以如果是之间隔一行的话,我们就需要用另外一种方法了,就是第二个循环,每找到一个单元格就执行一次插入
==========================
本节课的案例源码已经上传,需要的小伙伴后台私信“7-69-Z9”,希望大家多支持~~,多多关注 ~ ~
好了,明晚21:00,准时再见!
因为公众号没有留言功能(开的比较晚),所以建立一个线下微信群,主要为大家提供一个交流的平台,同时大家也可以提一些对公众号的意见和看法,大家一起学习,一起进步。