vba - Excel VBA宏代码不停地插入无限行

标签 vba excel rows

当指定列中的单元格发生更改并且该单元格不为空时,将自动运行以下代码。

Sub mergeCells()
    Dim num As Integer
    Dim countmerged As Integer
    If IsEmpty(ActiveCell.Value) Then
        Exit Sub
    Else
        countmerged = -1
        If ActiveCell.Offset(-1, 0).mergeCells Then
            countmerged = ActiveCell.Offset(-1, 0).MergeArea.Cells.Count * -1
        End If
        num = ActiveCell.Offset(countmerged, -1).Value
        If ActiveCell.Offset(countmerged, 0).Value = ActiveCell.Value Then
            ActiveCell.ClearContents
            ActiveCell.Offset(0, 1).ClearContents
            ActiveCell.Offset(0, 37).ClearContents
            ActiveCell.Offset(0, 36).ClearContents
            ActiveCell.Offset(0, -1).ClearContents
            ActiveCell.Offset(1, 0).EntireRow.Insert
            ActiveCell.Offset(2, 0).EntireRow.Copy ActiveCell.Offset(1, 0).EntireRow
            Range(ActiveCell.Offset(countmerged, 37), ActiveCell.Offset(0, 37)).Merge
            Range(ActiveCell.Offset(countmerged, 36), ActiveCell.Offset(0, 36)).Merge
            Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(countmerged, 1)).Merge
            Range(ActiveCell.Offset(countmerged, -1), ActiveCell.Offset(0, -1)).Merge
            Range(ActiveCell, ActiveCell.Offset(countmerged, 0)).Merge
            ActiveCell.Offset(1, -1).Value = num + 1
            ActiveCell.Offset(2, -1).Value = num + 2
        Else
            ActiveCell.Offset(1, 0).EntireRow.Insert
            ActiveCell.Offset(2, 0).EntireRow.Copy ActiveCell.Offset(1, 0).EntireRow
            Selection.Offset(1, -1).Value = num + 2
            Selection.Offset(2, -1).Value = num + 3
        End If
    End If
End Sub

如果该值与上述单元格的值相同,则它们将被合并,并插入具有相同公式的另一行。这可以正常工作。

但如果值与上面的单元格不同,则只需插入具有相同公式的行,但会不停地添加行。

最佳答案

我认为您没有向我们展示代码的重要部分(引发此问题)。

我会尝试禁用事件,因为宏可能会更改单元格并看到单元格已更改(插入,无论如何)再次启动您的事件。

尝试在宏的开头和结尾添加这些内容。

Application.EnableEvents = False  


Application.EnableEvents = True 

关于vba - Excel VBA宏代码不停地插入无限行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32339263/

相关文章:

ms-access - VBA 使用全局变量 Access 奇怪的行为

oracle - 多个 Oracle Smartview 刷新不在循环中工作(当我单步执行代码时有效)

vba - 如何将字符串拆分为多个单元格的单元格?

arrays - VBA从数组中定义一个范围

excel - header 签名无效;读取 0x54535543092E4F4E,预期为 0xE11AB1A1E011CFD0 - 您的文件似乎不是有效的 OLE2 文档

excel - 为什么使用 Range.Resize 属性不能输出预期的 Address 属性值?

具有相同 ID 和最新日期的 SQL 连接行

excel - 过滤掉百分比符号

c# - IDataReader - 有什么方法可以获取总行数?

MySQL 查询根据条件限制查找行重复项