首页 > 解决方案 > 在 VBA 中插入行

问题描述

我正在尝试在 Excel 中创建一个循环,以在 A 列中发生值更改时插入整行。它通过循环一次并且工作正常。它像假设的那样插入行,但是当它循环并且值再次更改时,它会直接跳转到 end sub 而不是插入新行。我试图以多种方式做到这一点。

下面是我制作的简单循环,看看它是否有效。此代码自下而上工作。

Do Until ActiveCell = ""

    If ActiveCell.Value <> ActiveCell.Offset(-1, 0).Value Then
    ActiveCell.EntireRow.Insert
    ActiveCell.Offset(-1, 0).Select
    Else
    ActiveCell.Offset(-1, 0).Select
End If
Loop

标签: excelvbainsertrow

解决方案


@Bradon我可以看到您的代码,它可能会进入无限循环[假设您正在使用 WorkSheet_Change 事件来捕获工作表中的任何更改] 工作表中的任何更改都会触发 WorkSheet_Change 事件;在您的情况下,将行插入工作表会触发 Worksheet_Change 事件

如果可能,我会建议您发布您的整个代码或更改您的代码,如下所示[仍然假设您正在使用 WorkSheet_Change 事件]

添加新工作表说“配置”,并且只有一次手动将 A1 值设置为“真”

在工作表更改事件中使用 if 条件

if Sheets("Config").Range("A1").Value = "True" then
call MyProcedure
end if

程序中

sub MyProcedure()
Sheets("Config").Range("A1").Value = "False"
your Do while loop here
Sheets("Config").Range("A1").Value = "True"

推荐阅读