【问题标题】:Delete Entirerow only if row is blank otherwise if any row contains any data remains仅当行为空白时删除整行,否则如果任何行包含任何数据,则保留
【发布时间】:2016-01-13 00:27:04
【问题描述】:

您好,我正在编写 VBA 代码,该代码会遍历我的所有数据,如果它是空白的,则只会删除整行。因此,一旦空白行被删除,行上移。

但是,如果我有一行包含一些数据。我希望该行保持不变。

我在那里看到的所有示例都会删除整行,即使该行中有一些数据。其中一些会删除该行但不会删除该行,以便单元格向上移动。

请帮帮我。

【问题讨论】:

  • “所有解决方案” - 你能提供这样的解决方案吗?

标签: vba excel row


【解决方案1】:

试试下面的-

Option Explicit
Sub DeleteBlankRow()
    Dim i As Long

    ActiveSheet.UsedRange.Select
    '//- Turn off calculation and screenupdating.
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
            '//- Work backwards because we are deleting rows.
            For i = Selection.Rows.Count To 1 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
End Sub

【讨论】:

    【解决方案2】:

    你可以使用这个算法:
    1) 找到包含任何值的最后一行;
    2)通过行中的值计数执行循环,并在行中的值计数等于0时删除行,它看起来像下面的例子:

    Sub DeleteBlankRows()
        Dim i&: i = Cells.Find("*", , , , xlByRows, xlPrevious).Row
        While i <> 0
            If WorksheetFunction.CountA(Rows(i)) = 0 Then Rows(i).Delete
            i = i - 1
        Wend
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 2019-07-05
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多