【问题标题】:Delete empty rows of the last sheet using VBA使用 VBA 删除最后一张纸的空行
【发布时间】:2022-01-23 14:09:39
【问题描述】:
Sub DeleteEmptyRows()
    For b = 1 To 10
        If Worksheets(Sheets.Count).Range(b, 1).Value = "" Then Worksheets(Sheets.Count).Rows(b).Delete
    Next b
End Sub

我正在通过Module1 运行一个宏,它使用Sheets.Add After:=Sheets(Sheets.Count) 生成包含Sheet1 外推数据的新工作表

我可以使用 Worksheets(Sheets.Count).Rows(1) 引用此新工作表的行

但是,我无法使 Sub DeleteEmptyRows() 工作。

【问题讨论】:

  • 你可以使用EntireRow单元格属性,但是在这样的循环中这样做是不好的。如果删除第 3 行,删除后第 4 行变成 3,下面的都乱了。您可以按相反的顺序执行此操作,但更好的解决方案是使用Union 范围来填充必要的单元格和代码末尾要删除的行。

标签: excel vba


【解决方案1】:

请尝试下一个方法:

Sub DeleteEmptyRows()
   Dim b As Long, ws As Worksheet, rngDel As Range
   
   Set ws = Worksheets(Sheets.Count)
    For b = 1 To 10
        If ws.Range(b, 1).Value = "" Then
            If rngDel Is Nothing Then
                Set rngDel = ws.Range(b, 1)
            Else
                Set rngDel = Union(rngDel, ws.Range(b, 1))
            End If
    Next b
    If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
End Sub

【讨论】:

  • @Bhavesh Shaha 没时间测试上面的代码?如果经过测试,它没有按您的需要工作吗?它应该非常快,即使在非常大的范围内......
  • 我遇到了这个错误:运行时错误 1004:对象“_Worksheet”的方法“范围”失败。我怀疑这可能与它出现在Module1 中有关?
  • @Bhavesh Shaha 是否涉及图表或(非常)隐藏的工作表?如果不是机密内容,您可以分享您尝试代码的工作簿吗?清理敏感数据,如果是的话......
猜你喜欢
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多