感觉这个过程有点繁琐,后面再改进吧。
/**
* 每隔3行插入2行空白行
*/
function Macro5()
{
//1、选中第一行
Range("A1").EntireRow.Select();
//2、统计表格有多少行数据,用于for循环控制次数,End(xlDown):一直向下直到空单元格停止
var a = Range("A1").Rows.End(xlDown).Row;
Console.log("表格有:"+a+"行数据");
var b = a/3;
Console.log("隔3插2要插:"+b+"次");
//3、Insert()方法只能插入1行,写for循环,插几行就循环几次,先插入两行用于后面copy
var c = 2;
for(var j=1;j<=c;j++){
Range("A5").EntireRow.Insert(xlShiftDown, true);
}
//4、选择框下移,目前在A5这行
ActiveCell.Offset(4, 0).EntireRow.Select();
//5、设置for循环条件,开始循环插入2行
for(var i=1;i<=b;i++){
/*知识点:
ActiveCell.Offset(5, 0) 光标向下移动到第四行位置,即第三行上方的位置
ActiveCell.EntireRow来引用当前活动单元格所在的整行
在Excel VBA中,Insert方法用于在指定的行之前插入新的行。Insert方法接受两个参数: ShiftRows和CopyOrigin。ShiftRows参数决定了插入行之后的行如何移动,可以是xlShiftDown或xlShiftToRight。CopyOrigin参数决定了新插入行的内容,可以是True或False,或者是一个Range对象
*/
//选择框下移5行,插入复制的A5、A6行,原有的行向下移动
ActiveCell.Offset(5, 0).EntireRow.Insert(xlShiftDown, Range("A5:A6").EntireRow.Copy());
ActiveCell.Offset(5, 0).EntireRow.Select();
}
}