如果列

时间:2019-05-23 18:07:28

标签: excel vba

我有一个基于其他工作表编译的主(主)表。将所有其他工作表复制到母版后,我需要运行将特别评估1列的代码,并且需要显示一条文本消息,说“嘿,您在该列中有空单元格”。我的问题是该列始终具有不同的行数,因此我无法对范围进行硬编码。 我也不在乎空单元格的数量,但是只有一条消息说您有空单元格就足够了。

我尝试下面的代码,目的是在我的列F内查找有效范围,然后如果为空,则显示消息,但不显示任何内容。

Dim ABC22 As Long
With ActiveSheet
    ABC22 = .Cells(.Rows.Count, "F").End(xlUp).Row
    If IsEmpty("ABC22") = True Then
        MsgBox "Posting Key Column (F) contains empty cells"
    End If
End With

3 个答案:

答案 0 :(得分:1)

执行此操作的多种方法,这是一种:

Sub Test()
    With ActiveSheet
        Dim lastRow As Long
        lastRow = .Cells(.Rows.Count, "F").End(xlUp).Row

        If WorksheetFunction.CountBlank(.Range("F1:F" & lastRow)) > 0 Then
            MsgBox "Posting Key Column (F) contains empty cells"
        End If
    End With
End Sub

答案 1 :(得分:1)

可以通过Evaluate和两个 Ctrl + Up 进行简化:

If [CountA(F:F)=0] Or Cells(Rows.Count, "F").End(xlUp).End(xlUp).Row > 1 Then

CountA(F:F)检查列是否完全为空,而两个 Ctrl + Up 检查最后一个非空之前是否有空单元格单元格。


作为旁注,Cells指的是活动工作表,因此With ActiveSheet可以删除或替换为特定工作表:

With Sheet("Sheet name")
    If .Evaluate("CountA(F:F)=0") Or .Cells(.Rows.Count, "F").End(xlUp).End(xlUp).Row > 1 Then

答案 2 :(得分:0)

计算特殊单元格。

    Sub CountBlanks()
    lastRow = Cells(Rows.Count, 6).End(xlUp).Row

    On Error GoTo ErrorHandler
    bCells = Range("F1:F" & lastRow).SpecialCells(xlCellTypeBlanks).Count
    MsgBox "There are " & bCells & " blank cells."
    Exit Sub

    ErrorHandler:
        MsgBox "There are no blank cells"
    End Sub