通过VBA从Excel删除单元格

时间:2018-12-10 00:37:53

标签: excel

我正在使用下面的代码从A13中删除所有数据到Col A中的“最后一行”。

Dim lastRowA As Long
With Application
  .Calculation = xlCalculationManual
  .ScreenUpdating = False
   lastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row
   Range("A13:A" & lastRowA).Select

   For i = Selection.Rows.Count To 13 Step -1
      If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
          Selection.Rows(i).EntireRow.Delete
      End If
   Next i
  .Calculation = xlCalculationAutomatic
  .ScreenUpdating = True
End With

它正在清除预期的值。但是,这并不删除这些行。也就是说,即使这些单元格中没有数据,我仍然可以向下滚动到10000行(通过滚动条)。但是,单元格中最后一行包含数据的行是第12行。

如果我选择所有这些单元格,请右键单击并删除这些行+保存工作表,我将无法再通过scroolbar访问第10000行。这就是我要通过VBA实现的目标。

很显然,由于某些原因,我使用的代码没有对行进行干净删除。请帮忙!

1 个答案:

答案 0 :(得分:1)

如果我做对了,并且您要删除范围“ A13”中“ A”列中没有任何内容的所有数据,则可以尝试:

Sub delete()
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
        On Error Resume Next
        Range("A13:A" & Rows.Count).SpecialCells(xlCellTypeBlanks).EntireRow.delete
        On Error GoTo 0
        ActiveWorkbook.Save
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

确保在发生问题之前先进行文件副本。 请注意,这预计将在活动表上运行。

相关问题