我写了一些VBA代码来提示复制行的次数。我现在想要按顺序为L列中的行添加一个要素编号。
Sub InsertRows()
Dim I As Long, J As Integer, x As Integer, N As Long
N = InputBox("type the number of rows to be inserted")
For I = Range("A65000").End(xlUp).Row To 1 Step -1
' MsgBox Range("A1").Value & vbNewLine & J
x = N
For J = 1 To N - 1
Rows(I + J).Insert xlDown
Rows(I).Copy
Rows(I + J).PasteSpecial
Range("L" & J).Value = J
Next
Next
Range("A1").Select
Application.CutCopyMode = False
End Sub
例如,如果我输入" 3"在消息框中,每个原始项目的行将复制3次,但列L中的值将不会正确地顺序编号1-3。这里出了什么问题?
结果如下:
答案 0 :(得分:0)
循环逻辑101 ......这里有多个问题。
首先,在您的3示例中,"rows to be inserted"
实际上不是3.因为您使用N-1,所以您只插入2行。因此,您的J计数已关闭。
另外,Range("L" & J).Value
只会更改第1行和第2行。由于您从botom开始执行所有操作,因此它永远不会将任何内容设置为原始行3.它只会将2
设置为原始行第2行。原始第1行混合了1
和2
。因此,您需要将I
偏移量添加到该等式中的J
值。
另外,为什么在x
从未使用过的时候分配给它?
希望有所帮助。 :)