我有一个基于其他工作表编译的主(主)表。将所有其他工作表复制到母版后,我需要运行将特别评估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
答案 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