用于更改列中的值时插入空白行的Excel宏

时间:2018-08-29 20:39:52

标签: excel

每当选定列B中的值发生更改时,我就一直在Excel 2016中使用以下宏来插入空白行:

Sub InsertDividerRows()
'
' InsertDividerRows Macro
' Insert a blank row whenever a value in a sorted list changes
'

'
    Selection.LastRow = Cells(Cells.Rows.Count, "B").End(xlUp).Row
    For i = LastRow To 2 Step -1
    If Cells(i, "B").Value <> Cells(i - 1, "B").Value Then Rows(i).Insert
    Next i
End Sub

问题1:今天,此宏突然停止了工作。我收到运行时错误(438),并且在调试时突出显示了“ Selection.LastRow”行。 (我没有成功重启PC。)

问题2:我想修改此宏,以使其适用于我突出显示的任何列范围(而不仅仅是整个B列)。

想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

问题1的叙述位于问题2的叙述中。您已经在.LastRow = ...前面添加了Selection,以使子过程适用于所选的任何列。

我假定从值更改为空白单元格或将空白单元格更改为值不应启动插入的行。

Sub InsertDividerRows()
'
' InsertDividerRows Macro
' Insert a blank row whenever a value in a sorted list changes
'
    dim c as long, i as long

    with selection.parent

        c = selection.cells(1).column

        for i=.cells(.rows.count, c).end(xlup).row to 2 step -1
            if application.counta(.range(.cells(i, c), .cells(i-1, c))) = 2 and _
               .cells(i, c).value <> .cells(i-1, c).value then
                .rows(i).entirerow.insert
            end if
        next i

    end with

End Sub