我循环遍历列(M),如果值为> = 1,我想在下面插入一行。它应该与上面的行具有相同的格式,并从列A:I
中复制数据Sub insertRow()
Dim LastRow As Long
Dim rng As Range, Cell As Range, rng2 As Range, rng3 As Range
LastRow = xlLastRow
Set rng = Range("M3:M" & LastRow)
For Each Cell In rng
If Cell.Value >= 1 Then Rows.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Set rng2 = Range("A3:I3")
rng2.Copy
set rng3 = Range("A4")
rng3.PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Next Cell
xlLastRow函数在别处定义。我在“Then”语句中收到“应用程序定义或对象定义的错误”。谢谢你的帮助。
答案 0 :(得分:2)
当插入(或删除)行时,您需要向后退步行计数(从最后一行开始向上移动)。这是因为一旦你插入一行,它将通过范围关闭,如果你从头到尾,你会错过行。
这是一个问题。另一个问题是,您没有具体指出要插入的单元格和行。避免错误的最佳方法是限定并直接使用您的对象。还有第三个问题是你似乎没有结束你的If
块,但我可能会误解代码。请参阅下面的笔记。
请参阅此代码,该代码应该更顺畅地为您服务:
Dim LastRow As Long
Dim x as Long
Dim ws as Worksheet
Set ws = Sheets("Sheeet1") 'change as needed
LastRow = xlLastRow
For x = LastRow to 3 Step -1
If ws.Range("M" & x).Value >= 1 Then
ws.Rows(x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'this will copy data A:I from same row into newly inserted row
ws.Range("A" & x & ":I" & x).Copy
ws.Range("A" & x +1 & ":I" & x + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
End If
Next Cell
答案 1 :(得分:0)
在开始'next'之前,您需要一个if if语句。在'then'之后缩进以制作更明确定义的
也是正常的答案 2 :(得分:0)
您必须指定相对于它插入新行的行。
行(x)。插入