excel vba检查范围内的任何单元格是否为空

excel vba检查范围内的任何单元格是否为空,excel,vba,range,cell,Excel,Vba,Range,Cell,我需要使用Excel中的VBA检查范围内的任何单元格是否为空。如果是这样,那么写一个混乱的方框。 我有类似的数据 ID列B 1A 2 aa 三, 4 ab 我尝试了很多代码,但它总是编写混乱的方框,即使columnB没有空单元格 其中一个代码是 For Each cell In Range(Range("A4").End(xlDown).Offset, Range("A4").End(xlDown).End(xlUp)).Offset(0, 1) If IsEmpty(cell) = True

我需要使用Excel中的VBA检查范围内的任何单元格是否为空。如果是这样,那么写一个混乱的方框。 我有类似的数据

ID列B

1A

2 aa

三,

4 ab

我尝试了很多代码,但它总是编写混乱的方框,即使columnB没有空单元格

其中一个代码是

For Each cell In Range(Range("A4").End(xlDown).Offset, Range("A4").End(xlDown).End(xlUp)).Offset(0, 1)
If IsEmpty(cell) = True Then
    GoTo Done1
End If
Done1:
MsgBox "In column B are empty cells.", vbInformation
Next cell
我有来自第4行的数据,而A列没有空单元格(这就是我使用Offset()的原因) 我总是看到5次混乱框(因为范围有5行),即使我修改数据,ColumnB也没有任何空单元格。 我也试过了

If cell.Value = "" Then

还有很多其他的,但都不起作用。 有什么想法吗?
谢谢

使用
特殊单元格
,可以使用空单元格类型。或者一个
应用程序.CountIf()
。使用
xlUp
获取最后使用的行更可靠。如果你给它一个快速的搜索,应该有很多的例子=)那“goto”的目的是什么?我不明白。它每次都在写消息框,因为您将它包括在for循环中。没有条件检查是否应显示msgbox。IcesHay,谢谢。因为我将msgBox移动到if语句中并删除了GoTo,所以它可以工作。非常感谢。
If WorksheetFunction.CountA(Range(Range("A4").End(xlDown).Offset, Range("A4").End(xlDown).End(xlUp)).Offset(0, 1)) = 0 Then
'    GoTo Done3