我有一个循环,用于在特定情况下插入行。循环通过大约2000行并插入大约500行。
由于插入的行,它没有循环我想要的全部范围。我用第一个循环来计算插入的行数,然后循环到LastRow +计数器,从而解决了这个问题。
我觉得一定有更好的方法做这件事。
Sub AddRows()
Dim i As Integer: i = 8
Dim LastRow As Integer: LastRow = Cells(8, 2).End(xlDown).Row
Dim counter As Integer: counter = 0
For i = 8 To LastRow
If Cells(i, 1) <> "" Then
counter = counter + 1
End If
Next i
NewLastRowAfterAddingRows = LastRow + counter
For i = 8 To NewLastRowAfterAddingRows
If Cells(i, 1) <> "" Then
Range(i + 1 & ":" & i + 1).Insert CopyOrigin:=xlFormatFromRightOrBelow
i = i + 1
End If
Next i
End Sub发布于 2019-03-18 18:53:12
在for/next循环中更改迭代器变量通常不是一个好主意。虽然您的代码有效,但这并不是一个好的实践。另外,初始化I到8也是多余的,因为循环也是从8开始的。以下是我的处理方法:
Sub AddRows()
Dim i As Integer
Dim LastRow As Integer
Dim counter As Integer
LastRow = Cells(8, 2).End(xlDown).Row
counter = 8
For i = counter To LastRow
If Cells(counter, 1) <> "" Then
counter = counter + 1
Range(counter & ":" & counter).Insert CopyOrigin:=xlFormatFromRightOrBelow
End If
counter = counter + 1
Next i
End Subhttps://codereview.stackexchange.com/questions/215693
复制相似问题