【发布时间】:2016-01-13 00:27:04
【问题描述】:
您好,我正在编写 VBA 代码,该代码会遍历我的所有数据,如果它是空白的,则只会删除整行。因此,一旦空白行被删除,行上移。
但是,如果我有一行包含一些数据。我希望该行保持不变。
我在那里看到的所有示例都会删除整行,即使该行中有一些数据。其中一些会删除该行但不会删除该行,以便单元格向上移动。
请帮帮我。
【问题讨论】:
-
“所有解决方案” - 你能提供这样的解决方案吗?
您好,我正在编写 VBA 代码,该代码会遍历我的所有数据,如果它是空白的,则只会删除整行。因此,一旦空白行被删除,行上移。
但是,如果我有一行包含一些数据。我希望该行保持不变。
我在那里看到的所有示例都会删除整行,即使该行中有一些数据。其中一些会删除该行但不会删除该行,以便单元格向上移动。
请帮帮我。
【问题讨论】:
试试下面的-
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
【讨论】:
你可以使用这个算法:
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
【讨论】: