2013-05-22 129 views
0

单击按钮时,我想在包含内容的单元格之后添加3行。我如何改善我的代码?对于前3行,单元格中已经有内容。我试图复制3行然后删除它的内容。我的问题是,如果我已经把数据放在第4行到第6行,然后再次点击按钮,前面的第4行到第6行现在会向下移动,新的空行将总是插在第1行第3行之后不是我想要的。前3行有一个格式,这就是为什么我先复制它。我希望前3行的格式也被复制,而不是内容,只是空行。在活动单元格中插入空白行visual basic excel

Sub newRow() 
     Rows("1:3").Select 
     Selection.Copy 
     Selection.Insert shift:=xlDown 
     Range("4:6").ClearContents 
End Sub 
+0

下面的行肯定是空白的?或者你有数据行,空白单元格之间?另外,您不需要复制或使用'Selection',只需使用'Range'对象。 –

+1

[检查出来](http://stackoverflow.com/questions/16519178/excel-vba-insert-a-rows-based-on-specific-cell-value/16523444#16523444)[excel-vba-insert-一个-行基于上特异性细胞值](http://stackoverflow.com/questions/16519178/excel-vba-insert-a-rows-based-on-specific-cell-value/16523444#16523444 ) – 2013-05-22 08:42:56

回答

1

尝试:

Range("1:3").copy 
range("4:6").pastespecial paste:=xlpasteformats 

格式仅从行1复制到3到行4,5和6

因此,如果行3具有一种颜色,然后排6会有这种颜色。

如果你想让它动态的,你需要确定与内容的最后一行:

Activesheet.usedrange.rows.count 

将返回使用的行包括具有格式的行,但没有内容的数量(我只是想它)

那么你只要把它插入到你的复制粘贴代码:

Dim lngLastRow As Long 

lngLastRow = ActiveSheet.UsedRange.Rows.Count 
Range(lngLastRow - 2 & ":" & lngLastRow).Copy 
Range(lngLastRow + 1 & ":" & lngLastRow + 3).PasteSpecial Paste:=xlPasteFormats 

尝试在事件处理程序为您的按钮

+0

它的作品,但我希望它仍然工作,每次我点击一个按钮,而不仅仅适用于第3和第4行。 – kazSone

+0

@kazSone:尝试新代码 –

+0

更容易,当我只选择一个活动的单元格,然后它会插入在这个活动单元下面3行?那个怎么样? – kazSone

相关问题