Excel VBA 7.70间隔插入空行,VBA快又准!职场生存效率高于一切!

间隔插入空行,VBA快又准!职场生存效率高于一切!


点击上方“Excel和VBA”,选择“置顶公众号”

致力于原创分享Excel的相关知识,源码,源文件打包提供

一起学习,一起进步~~


昨天我们学习了通过VBA来一次性插入多列的操作,当然有很多的小伙伴对于这个方法并不是很感冒,毕竟插入多列的操作,其实我们也可以通过鼠标来完成的,虽然并不是很快,但是肯定比写代码要快,既然如此,我今天就放个大招吧,来一个通过鼠标无法一次实现的功能,批量间隔插入空行。

场景说明

这是我们今天的工作表,我们现在需要在其中间隔插入几行,随我们自己心情的输入的, 非常的灵活

代码区

Sub Sss()Dim rng As Range, trng As RangeSet rng = Application.InputBox("请选择要插入空行的单元格区域", "区域的确定", , , , , , 8)CountR = rng.Rows.CountFirstR = rng.RowFirstC = rng.Columnk = 0num = 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 SubEnd Iftrng.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAboveEnd Sub

虽然代码看起来很长,但是走到现在,大家应该都能够看出其中不过就是两个循环而已的事情了吧

先来看看代码执行的最终成果

相信上面的动图已经非常清晰的展示了最终的效果了,不管我们的工作表的数据在什么区域,又或者我们想要插入的间隔并不是一个平均的数据,都可以通过这个代码插入,非常的方便简单。

代码解析

来看看今天的代码解析

其实间隔插入行的关键核心所在,就是你要判断你要插入的行的位置,然后执行插入的操作,但是我们又不能和普通的插入采用一样的方式,选择一行我插入一行

为什么不能呢?

因为你在插入的过程中,导致工作表的总行数就出现了变化,但是代码读数的行数是一个固定的状态,他不会随着你增加行数而增加,

所以这里我们要明确,我们不能够通过循环遍历所有行数,然后间隔插入的方式来实现了,那么我们要如何实现呢?

这里我们采用选中单元格之后, 在直接插入空行的方式来进行。

所以我们的重点就变成了如何选择多个单元格了。

单元格的选择应该是我们下一个系列的重点,而不是这个系列的,但是工作表的部分操作有不可避免的会涉及到部分单元格的操作,这里我们就先大致的了解下

Union(trng, Cells(FirstR + i - 1, FirstC))

union(range1,range2,......)这个就是用来组合多个单元格区域的,相当于将range1,range2,即括号里面的单元格都组合在一起,形成一个整体

可以同时被选择,也可以同时被操作,有点类似于我们按照CTRL,然后鼠标选择单元格的效果

我们在代码中加上选择的按钮,我们来看看

当然我们可以看到每隔两列,每行的首个单元格点就已经被选中了,然后我们就可以执行后面的代码执行一次性插入空行了。

trng.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove

这句代码就是执行插入空行的操作的。

上面这一段讲述的就是我们第一个循环的内容,那么很明显,我们这里有两个循环,那第二个循环的作用是干嘛的呢?

还有一种特殊情况,那就是当我们是需要隔行就是每隔一行插入一个空行的时候,我们就不能一次性全部选中再插入了,这就变成了我们之前批量插入多个空行的效果了

所以如果是之间隔一行的话,我们就需要用另外一种方法了,就是第二个循环,每找到一个单元格就执行一次插入

==========================

本节课的案例源码已经上传,需要的小伙伴后台私信“7-69-Z9”,希望大家多支持~~,多多关注 ~ ~

好了,明晚21:00,准时再见!

因为公众号没有留言功能(开的比较晚),所以建立一个线下微信群,主要为大家提供一个交流的平台,同时大家也可以提一些对公众号的意见和看法,大家一起学习,一起进步。

(0)

相关推荐