如果Null退出子代码

时间:2016-08-25 07:00:04

标签: excel vba excel-vba

我试图检查如果单元格为空或为空,它将显示一条消息并退出子。这是我的代码:

With Worksheets(1).[D3:D4, D6:D14]
    If WorksheetFunction.CountA(.Cells) = 0 Then
        MsgBox "Nothing to generate" & vbNewLine & _
        "Set parameters and click generate."
        Exit Sub
    End If
End With

但只有当整个[D3:D4, D6:D14]为空时,代码才有效。我希望它退出sub,即使其中一个单元格是空的。所有细胞都需要有内容让它继续分。请帮忙。

2 个答案:

答案 0 :(得分:1)

你需要在Range中搜索,尝试下面的代码:

Sub CheckEmptyCellsinRange()

Dim Rng     As Range
Dim cell    As Range

Set Rng = Worksheets(1).[D3:D4, D6:D14]

For Each cell In Rng
    If IsEmpty(cell) Or IsNull(cell) Then
        MsgBox "Nothing to generate" & vbNewLine & _
        "Set parameters and click generate."
        Exit Sub        
    End If

Next cell

End Sub

答案 1 :(得分:1)

您还可以使用SpecialCells

Sub Check()
Dim rng1 As Range
On Error Resume Next

With Worksheets(1).[D3:D4, D6:D14]
Set rng1 = .SpecialCells(xlBlanks)
    If Not rng1 Is Nothing Then
        MsgBox "Nothing to generate" & vbNewLine & _
        "Set parameters and click generate."
        Exit Sub
    End If
End With

End Sub

后续问题

Sub Check2()
Dim rng1 As Range
Dim rng2 As Range

With Worksheets(1)
Set rng1 = .Range(.[D3:D4], .[D6:D14])
End With

On Error Resume Next
Set rng2 = rng1.SpecialCells(xlBlanks)
On Error GoTo 0

If Not rng1 Is Nothing Then
    MsgBox rng1.Cells.Count - rng2.Cells.Count & " were used"
Else
    MsgBox "all cells used"
End If

End Sub