繁体   English   中英

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

[英]Excel Macro for Inserting a Blank Row Whenever a Value in a Column Changes

每当选择的列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”行。 (我没有成功重启计算机。)

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

想法?

谢谢!

问题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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM