excel - For循环不迭代VBA
问题描述
如果第 i 行第 2 列和第 i 行第 3 列中的值为空,我将尝试删除整行。我的 for 循环只迭代一次。知道为什么吗?
Sub DeleteEm()
RowCount = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To RowCount
If IsEmpty(Cells(i, 2).Value) = True And IsEmpty(Cells(i, 3).Value) = True Then
Rows(i).EntireRow.Delete
End If
Next i
End Sub
谢谢!
解决方案
删除两列中包含空单元格的行
- 您还可以考虑使用
Application.Union
“收集”一个范围内的行范围,然后一次性删除该范围。
编码
Option Explicit
Sub DeleteEm()
RowCount = Cells(Rows.Count, "A").End(xlUp).Row
Dim rng As Range
For i = 2 To RowCount
' Considering 'blank cells = empty cells + ""-cells'.
' Either (For empty cells)...
If IsEmpty(Cells(i, 2)) And IsEmpty(Cells(i, 3)) Then
' ...or (for blank cells)
'If Len(Cells(i, 2)) = 0 And Len(Cells(i, 3)) = 0 Then
If rng Is Nothing Then
Set rng = Rows(i)
Else
Set rng = Union(rng, Rows(i))
End If
End If
Next i
If Not rng Is Nothing Then
rng.Delete
End If
End Sub
推荐阅读
- javascript - 发出发布请求时出现NodeJS CORS错误
- alignment - 语法错误:预期的操作数(错误标记是“))”)
- javascript - 清空/清除 DOM 上的元素
- javascript - Mapbox 显示 Lat 和 Lng 并缩放,然后将它们放在文本框中
- javascript - 如何用JS制作列表并用localStorage保存
- java - 该路径不属于 Android Studio 中的目录
- javascript - 如何让光滑的滑块在 Shopify 中显示?
- kubernetes - Kubernetes 后端组合?
- python - 使用 Python 从网站中提取日期
- arrays - C - free() 后程序崩溃