如何使用;“插入行”;在VBA中用于一系列单元格(Excel 2013)

如何使用;“插入行”;在VBA中用于一系列单元格(Excel 2013),vba,excel,Vba,Excel,我是VBA新手&希望有人能帮我-我搜索了这个特定的问题,但我还没有找到确切的我要找的 我正在尝试编写一个模块(使用MS Office Professional Excel 2013),该模块将根据每行“O”列中的整数插入行 通过对单元格进行硬编码,我可以使其在一行工作: Sub InsertRow() Set currentcell = Sheets("Sheet1").Range("O2") Dim i As Integer, n As Integer, m As Long n = c

我是VBA新手&希望有人能帮我-我搜索了这个特定的问题,但我还没有找到确切的我要找的

我正在尝试编写一个模块(使用MS Office Professional Excel 2013),该模块将根据每行“O”列中的整数插入行

通过对单元格进行硬编码,我可以使其在一行工作:

Sub InsertRow()
Set currentcell = Sheets("Sheet1").Range("O2")
Dim i As Integer, n As Integer, m As Long
    n = currentcell.Value
    m = currentcell.Row
    For i = 1 To n
        Rows(m + 1 * i).Insert
    Next i
End Sub
我现在要做的是创建一个循环,该循环将对整个工作表执行此操作。以下是我现在拥有的:

Sub InsertRow()
Set currentcell = Sheets("Sheet1").Range("O2:O400")
Dim i As Integer, n As Integer, m As Long
    n = currentcell.Value
    m = currentcell.Row
    For i = 1 To n
        Rows(m + 1 * i).Insert
    Next i
    Loop
End Sub
这当前返回
编译错误:没有Do的循环。

我们将非常感谢您对此问题提供的任何帮助、资源和建议

提前谢谢

最好的,
Liz

从代码中删除
循环。它是
Do
循环结束的语法,而不是
for
循环结束的语法

Sub InsertRow()
Set currentcell = Sheets("Sheet1").Range("O2:O400")
Dim i As Integer, n As Integer, m As Long
    n = currentcell.Value
    m = currentcell.Row
    For i = 1 To n
        Rows(m + 1 * i).Insert
    Next i
End Sub

更新: 在注释之后显示循环范围

Sub InsertRow()
    Dim rng as Range
    Dim i as integer, n as integer, m as integer

    Set rng = Sheets("Sheet1").Range("O2:0400")

    For Each c in rng
        i = c.value
        m = c.row
        Rows(m + 1 * i).Insert
    Next c

从代码中删除
循环
。它是
Do
循环结束的语法,而不是
for
循环结束的语法

Sub InsertRow()
Set currentcell = Sheets("Sheet1").Range("O2:O400")
Dim i As Integer, n As Integer, m As Long
    n = currentcell.Value
    m = currentcell.Row
    For i = 1 To n
        Rows(m + 1 * i).Insert
    Next i
End Sub

更新: 在注释之后显示循环范围

Sub InsertRow()
    Dim rng as Range
    Dim i as integer, n as integer, m as integer

    Set rng = Sheets("Sheet1").Range("O2:0400")

    For Each c in rng
        i = c.value
        m = c.row
        Rows(m + 1 * i).Insert
    Next c

如果您正在为
执行
循环,则不需要
循环
。您已经有了
循环
,它是
执行
循环的结尾,而不是
for
。此外,在循环中,您似乎没有递增
m
。不确定这是故意的还是无意的,所以我们不会一直打汤姆。因此,将
currentcell
设置为循环中的一个单元格。如果要执行
for
,则不需要执行
循环
。这里有
循环
,它是
do
循环的结束,而不是
for
。此外,在循环中,您似乎没有递增
m
。不确定这是故意的还是无意的,所以我们不会一直打汤姆。因此,将
currentcell
设置为循环中的一个单元格。谢谢汤姆!这是有道理的。现在,我收到了错误“类型不匹配”参考行:“n=currentcell.Value”当前值是多少?如果它不包含整数,它将抛出错误。如果单元格不总是包含整数,也许可以将n的声明更改为
variant
。谢谢Tom!这是我在这里的第一篇文章,所以我为原始文章中缺少格式表示歉意。该值是一个整数,我得到的是“Variant”和“integer”两个错误。在我占用您更多时间之前,我将搜索此特定问题。@Liz该变量当前包含
范围(“O2:O400”)
。您只能从单个单元格中获取
value
。谢谢@findwindow-我可以使用“value”之外的其他选项来从多个单元格中获取值吗?谢谢Tom!这是有道理的。现在,我收到了错误“类型不匹配”参考行:“n=currentcell.Value”当前值是多少?如果它不包含整数,它将抛出错误。如果单元格不总是包含整数,也许可以将n的声明更改为
variant
。谢谢Tom!这是我在这里的第一篇文章,所以我为原始文章中缺少格式表示歉意。该值是一个整数,我得到的是“Variant”和“integer”两个错误。在我占用您更多时间之前,我将搜索此特定问题。@Liz该变量当前包含
范围(“O2:O400”)
。您只能从单个单元格中获取
value
。谢谢@findwindow-我可以使用“value”之外的其他选项来从多个单元格中提取吗?