如何使用VBA检查单元格是否为空
我试图在Excel中创build一个表单,这样当人们没有填写某些单元格时,他们会popup错误消息。 到目前为止,我做了这个代码:
If Len(I8) = 0 Then MsgBox "Please enter Required Date", vbExclamation Exit Sub ElseIf Len(D11) = 0 Then MsgBox "Please enter your name", vbExclamation Exit Sub ElseIf Len(H11) = 0 Then MsgBox "Please enter Work Phone", vbExclamation Exit Sub ElseIf Len(L11) = 0 Then MsgBox "Please enter Home Phone", vbExclamation Exit Sub End If MsgBox "All mandatory fields have been entered", vbExclamation End Sub
这似乎工作,但是当我添加文本到单元格I8
,“请input必填date”msgboxpopup反正。
我也试过使用Count(I8) = 0
, IfEmpty(I8) = True
,但在vba中都没有被正确识别。
另外,如果我们希望在单元格未填写的情况下popup消息,如果他们从下拉列表中select“是”,那么函数是什么? 到目前为止我写了
ElseIf Range("D28") = "P16" And Len(Range("M30")) = 0 Then MsgBox "Please Select whether this file is classified as confidential", vbExclamation Exit Sub
但我需要一个定义的函数,我不知道要选什么。 是否有更长的路要做,以确保两个单元格填写出来,如果他们在第一个单元格中select是的?
当你使用类似If Len(I8) = 0 Then
在VBA中,它将假定I8
是一个variables。 既然你显然没有定义这个variables, Len(I8)
将永远是零。
你应该做的是使用Range("I8")
,甚至ActiveSheet.Range("I8").Value
来取得实际在该单元格中的值。
所以你的代码应该改成:
If Len(Range("I8")) = 0 Then MsgBox "Please enter Required Date", vbExclamation Exit Sub ElseIf Len(Range("D11")) = 0 Then MsgBox "Please enter your name", vbExclamation Exit Sub ElseIf Len(Range("H11")) = 0 Then MsgBox "Please enter Work Phone", vbExclamation Exit Sub ElseIf Len(Range("L11")) = 0 Then MsgBox "Please enter Home Phone", vbExclamation Exit Sub End If MsgBox "All mandatory fields have been entered", vbExclamation End Sub
为了避免这些混淆的问题,你可以在模块的最顶部指定Option Explicit
。 这会导致excel在使用未声明的variables时抛出错误,而不是只是默默地猜测它应该如何处理。
请参阅评论为什么您的代码不起作用。 以下是将在单元格为空时评估为True
语句:
IsEmpty(myCell) myCell.Value = vbNullstring Len(myCell) = 0
请享用!