空白/空单元格时发出警告

时间:2018-06-04 23:05:47

标签: excel vba

如果某个范围中的某个单元格为空,我会尝试弹出警告对话框。

当数据验证下拉菜单填充单元格时,Excel会弹出警告。

代码适用于不包含数据验证下拉列表的范围。

所有数据都是字符串,单元格的格式为" General"。

ActiveSheet.Range("I3:I10").Select
For Each cell In Selection
    If cell.Value = "" Then
        If MsgBox("Customer information missing.  Okay to proceed; Cancel to stop and fill in missing information.", vbOKCancel) = vbCancel Then
            Exit Sub
        Else
            Exit For
        End If
    End If
Next

问题似乎源于单元格跨多个列合并,因此Excel检查每个单元格I3:K10并找到J3:K10空白。取消合并细胞不是一种选择。

3 个答案:

答案 0 :(得分:1)

如果使用列表设置了包含数据验证的单元格,并且列表范围中的一个单元格为空白,则即使用户从下拉列表中选择了空白单元格,该单元格也将被视为空白。但是,如果您还想检查单元格是否为空没有数据验证,则可以使用以下内容(感谢Determine if cell contains data validation

Dim blnValidation As Boolean
Dim cell As Range

ActiveSheet.Range("I3:I10").Select

For Each cell In Selection
    If cell.Value = "" Then
        blnValidation = False

        On Error Resume Next
            blnValidation = Not IsNull(cell.Validation.Type)
        On Error GoTo 0

        If Not blnValidation Then
            If MsgBox("Customer information missing.  Okay to proceed; Cancel to stop and fill in missing information.", vbOKCancel) = vbCancel Then
                Exit Sub
            Else
                Exit For
            End If
        End If
    End If
Next

答案 1 :(得分:0)

有一个COUNTBLANK功能,但在这种情况下,您可能会更好地使用COUNT Application.WorksheetFunction

你可以用以下代码替换你的循环:

If Application.WorksheetFunction.Count(Range("I3:I10")) < 8 Then
    'missing data - notify user here
End If

答案 2 :(得分:0)

所以,我最初的猜测错了,但治愈仍然有效。

How to avoid using Select in Excel VBA

选择实际上是Range(“I3:K10”)。因此,在检查列I后,它会移至列J,然后K