如何测试范围是否为空白?

时间:2019-04-11 23:59:29

标签: excel vba

我正在上大学,需要检查一些特定的单元格是否为空白。如果它们为空,我需要在其中写一些东西。我试图编写一个程序,但没有成功,向我显示了错误:13。

这是我的代码:

Option Explicit

Sub Test()

If Range("a1:e1").Value = "" Then
   Range("a1:e1") = "x"
End If

End Sub

谢谢您的帮助!

4 个答案:

答案 0 :(得分:2)

如果范围包含1个单元格,则其.Value属性将返回单个标量值。 但是,如果范围包含多个单元格,则其.Value属性将返回一个数组。 您可以遍历范围内的所有单元格以查看它们是否都为空。另外,您可以使用WorksheetFunction.CountBlank查看范围内的空白数量是否与范围内的单元格数量匹配。

With Range("a1:e1")
    If WorksheetFunction.CountBlank(.Cells) = .Cells.Count Then
       Range("a1:e1") = "x"
    End If
End With

答案 1 :(得分:1)

如果此范围内的一个单元格不为空,则不清楚要做什么。

既然您已经填写了要填充单元格如果它们都是空白的情况,那么我将介绍您要检查范围内是否有任何空白单元格的情况,如果是,则将其填充。

Dim cell As Range
For Each cell In Range("A1:E1").Cells
    If cell.Value = "" Then
        cell.Value = "x"
    End If
Next cell

答案 2 :(得分:1)

您也可以使用WorksheetFunction.CountA。它计算非空单元格。像这样:

If WorksheetFunction.CountA(Range("a1:e1")) = 0 Then
   Range("a1:e1") = "x"
End If

它与TinMan的代码相同。但是检查是不同的。

答案 3 :(得分:1)

您可以尝试以下代码:

Sub Test()
    Dim rng As Range
    Set rng = Range("A1:E1")
    ' if we come upon non-empty cell we exit sub and do nothing
    For Each cell In rng
        If Not IsEmpty(cell) Then Exit Sub
    Next
    ' if we reached this, all cells are empty
    rng.Value = "x"
End Sub