每当选定列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列)。
想法?
谢谢!
答案 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