Vba 检查每行中列的范围,如果所有列中都没有值,则删除行
我想创建一个宏,它遍历工作表中的每一行,并检查F:I列中是否有值。 如果所有列均为空,则应删除当前行 我试图循环使用一些代码,但当我运行它时,由于某种原因,该工作表中的所有行都被删除 这是我目前掌握的代码:Vba 检查每行中列的范围,如果所有列中都没有值,则删除行,vba,excel,Vba,Excel,我想创建一个宏,它遍历工作表中的每一行,并检查F:I列中是否有值。 如果所有列均为空,则应删除当前行 我试图循环使用一些代码,但当我运行它时,由于某种原因,该工作表中的所有行都被删除 这是我目前掌握的代码: Sub DeleteRowBasedOnCriteria() Dim RowToTest As Long Dim noValues As Range, MyRange As Range For RowToTest = Cells(Rows.Count, 3).End(xlUp).Row
Sub DeleteRowBasedOnCriteria()
Dim RowToTest As Long
Dim noValues As Range, MyRange As Range
For RowToTest = Cells(Rows.Count, 3).End(xlUp).Row To 2 Step -1
Set MyRange = Range("F" & RowToTest & ":I" & RowToTest)
On Error Resume Next
Set noValues = Intersect(ActiveCell.EntireRow.SpecialCells(xlConstants), MyRange)
On Error GoTo 0
If noValues Is Nothing Then
Rows(RowToTest).EntireRow.Delete
End If
Next RowToTest
End Sub
尝试使用
工作表函数.CountA
Option Explicit
Sub DeleteRowBasedOnCriteria()
Dim RowToTest As Long
Dim MyRange As Range
For RowToTest = Cells(Rows.Count, 3).End(xlUp).Row To 2 Step -1
Set MyRange = Range("F" & RowToTest & ":I" & RowToTest)
If WorksheetFunction.CountA(MyRange) = 0 Then
MyRange.EntireRow.Delete
End If
Next RowToTest
End Sub
尝试使用
工作表函数.CountA
Option Explicit
Sub DeleteRowBasedOnCriteria()
Dim RowToTest As Long
Dim MyRange As Range
For RowToTest = Cells(Rows.Count, 3).End(xlUp).Row To 2 Step -1
Set MyRange = Range("F" & RowToTest & ":I" & RowToTest)
If WorksheetFunction.CountA(MyRange) = 0 Then
MyRange.EntireRow.Delete
End If
Next RowToTest
End Sub
可以这样做(使用Union一次性删除所有行更有效):
可以这样做(使用Union一次性删除所有行更有效):
请尝试以下操作:
On Error Resume Next
Set noValues = Intersect(myRange.EntireRow.SpecialCells(xlConstants), MyRange)
On Error GoTo 0
If noValues Is Nothing Then
Rows(RowToTest).EntireRow.Delete
Else
Set noValues = Nothing
End If
请尝试以下操作:
On Error Resume Next
Set noValues = Intersect(myRange.EntireRow.SpecialCells(xlConstants), MyRange)
On Error GoTo 0
If noValues Is Nothing Then
Rows(RowToTest).EntireRow.Delete
Else
Set noValues = Nothing
End If
您有一个输入错误:
Set neValues
,如果noValues,则输入。。。在代码开头使用Option Explicit
,它会捕捉到类似这样的错误。@BigBen A是的,我之前已经修复了这个错误,但一定是将旧版本复制到了这里,谢谢你指出了这一点。但一般问题仍然存在。您有一个输入错误:Set neValues
,然后是If noValues
。。。在代码开头使用Option Explicit
,它会捕捉到类似这样的错误。@BigBen A是的,我之前已经修复了这个错误,但一定是将旧版本复制到了这里,谢谢你指出了这一点。不过,一般问题仍然存在。谢谢你的建议,很遗憾,我得到了完全相同的结果。代码运行得很快,但什么也没发生。似乎它可能无法正确地遍历所有行并查看请求的列。您是否正在处理多个工作表?您没有限定正在处理的工作表,但应该这样做。感谢您的建议,很遗憾,我得到了完全相同的结果。代码运行得很快,但什么也没发生。似乎它可能无法正确地遍历所有行并查看请求的列。您是否正在处理多个工作表?您尚未确定您正在处理的工作表,但应该这样做。刚刚测试了您的第一个解决方案,它似乎按照预期工作,尽管我不完全理解如何工作。所以谢谢你!我可以解释你想知道的任何事情。请告诉我。我在代码中添加了更多注释。刚刚测试了您的第一个解决方案,它似乎按照预期工作,尽管我不完全理解如何工作。所以谢谢你!我可以解释你想知道的任何事情。请告诉我。我在代码中添加了更多注释。