Excel vba如何判断筛选好的某一区域是否为空(即均为空单元格)?

2025-04-14 03:11:27
推荐回答(3个)
回答1:

Sub 筛选后判断()
Dim rng As Range
Dim cng As Range
Dim arr, r%
r = ActiveSheet.[a65536].End(3).Row
ActiveSheet.Range(Cells(1, 1), Cells(r, 4)).AutoFilter Field:=4, Criteria1:="="
For Each cng In Range("A2", [a65536].End(3)).SpecialCells(xlCellTypeVisible)
Set rng = cng
arr = rng.EntireRow
If arr(1, 5) = "" Then
MsgBox rng.Address
End If
Next
Set rng = Nothing
End Sub
假设第4列是自动筛选列 ,第5列是筛选后需要判断是否为空的列, 第1行为标题行

回答2:

Sub 筛选后判断()
Dim rng As Range
Dim cng As Range
Dim arr, r%
r = ActiveSheet.[a65536].End(3).Row
ActiveSheet.Range(Cells(1, 1), Cells(r, 4)).AutoFilter Field:=4, Criteria1:="="
For Each cng In Range("A2", [a65536].End(3)).SpecialCells(xlCellTypeVisible)
Set rng = cng
arr = rng.EntireRow
If arr(1, 5) = "" Then
MsgBox rng.Address
End If
Next
Set rng = Nothing
End Sub
假设第4列是自动筛选列 ,第5列是筛选后需要判断是否为空的列, 第1行为标题行

回答3:

Sub 筛选后判断()

Dim rng As Range

Dim cng As Range

Dim arr, r%

r = ActiveSheet.[a65536].End(3).Row

ActiveSheet.Range(Cells(1, 1), Cells(r, 4)).AutoFilter Field:=4, Criteria1:="="

For Each cng In Range("A2", [a65536].End(3)).SpecialCells(xlCellTypeVisible)

Set rng = cng

arr = rng.EntireRow

If arr(1, 5) = "" Then

MsgBox rng.Address

End If

Next

Set rng = Nothing

End Sub