在VBA中,表的处理方式是否不同?
我有一个简单的宏,我试图删除列S中的单元格为空白的所有行作为表的一部分(“Table1
”)。但是我收到一个带有“400
”的错误框,谷歌没有帮助我。
如果我用“& LastRow
”替换“S2:S1000
”,例如“Sub deleteBlankRows()
Dim LastRow As Long
LastRow = Range("B" & Rows.Count).End(xlUp).Row
With Range("S2:S" & LastRow)
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub
”,这个宏工作。
Rows
发生此错误的原因是您要从表中删除整个行。您可以将表转换为范围,或者在宏中使用EntireRow
而不是Sub deleteBlankRows()
Dim LastRow As Long
With ThisWorkbook.Worksheets("YourSheetName")
LastRow = .Range("B" & .Rows.Count).End(xlUp).Row
With .Range("S2:S" & LastRow)
.SpecialCells(xlCellTypeBlanks).Rows.Delete
End With
End With
End Sub
:
With ListObjects("Table1")
.ListColumns("myColumnName").DataBodyRange.SpecialCells(xlCellTypeBlanks).Rows.Delete
End With
假设您要删除的行仅在表中,您还可以直接使用表对象本身。
qazxswpoi