[英]Excel VBA Inserting a Row in a Loop for Each Occurrence
我正在尝试构建一个检查某个值的 VBA 应用程序,然后在每次找到该值时在顶部添加一行。
Sub copy()
Dim rng As Range
Dim row As Range
Dim cell As Range
Set rng = Range("B2:B10")
For Each row In rng.Rows
For Each cell In row.Cells
If cell.value = "test" Then
MsgBox "found" + cell.Address
cell.EntireRow.Insert
End If
Next cell
Next row
End Sub
然而,每次我尝试运行这个函数时,它都会不断地在彼此之上添加行,而不是每次出现。
如果您从上到下循环单元格,添加该行会将您的原始范围向下推,从而导致下一个循环评估前一个单元格。
为了避免这种情况,向后循环(即从下到上):
Sub copy_test()
Dim rng As Range
Set rng = Range("B2:B10")
Dim i As Long
For i = rng.Cells.Count To 1 Step -1
If rng.Cells(i).Value = "test" Then
Debug.Print "Found"
rng.Cells(i).EntireRow.Insert
End If
Next i
End Sub
注意: Set rng = Range("B2:B10")
告诉 VBA 您指的是ActiveSheet
单元格B2:B10
,这可能不是您想要的。
请完全限定您的范围以避免这种情况。 (例如ThisWorkBook.Worksheets("Sheet1").Range("B2:B10")
或使用工作表Sheet1.Range("B2:B10")
的代码名称。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.