如果某个范围中的某个单元格为空,我会尝试弹出警告对话框。
当数据验证下拉菜单填充单元格时,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空白。取消合并细胞不是一种选择。
答案 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