EXCEL数据验证ISBLANK不起作用

时间:2018-08-08 08:42:36

标签: excel vba validation

我对EXCEL中的数据验证有疑问。我尝试将此验证添加到单元格范围:

   With zakres.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=IF(ISBLANK($" & _
        kolumna_litera(kol_Data_oceny_formalnej) _
        & "3),FALSE,status_status_RK)"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = "Nieprawidłowy status!"
    .InputMessage = ""
    .ErrorMessage = "Wybierz poprawny status z listy rozwijanej!"
    .ShowInput = True
    .ShowError = True
End With

kolumna_litera-代表返回列字母(字符串)的函数; kol_Data_oceny_formalnej-代表列数(长); status_status_RK-代表具有值列表的命名范围;

问题是当单元格kolumna_litera&3为空时。然后,在Validation.Add行中发生错误1004。填充该单元格后,就不会出现错误。我不知道为什么会这样。有人可以向我解释吗?

1 个答案:

答案 0 :(得分:0)

我想我找到了解决方案。问题出在公式中的FALSE语句中。当单元格kolumna_litera(kol_Data_oceny_formalnej) & "3为空时,Excel无法找到包含数据的列表-并且无法使用FALSE语句。因此,我添加了一个包含一个空单元格的命名范围,并将其替换为该范围的名称(称为PUSTA)。现在的代码看起来像这样:

    With zakres.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=IF(ISBLANK($" & kolumna_litera(kol_Data_wpływu_RK) & "3),PUSTA,status_status_RK)"
    .IgnoreBlank = False
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = "Nieprawidłowy status!"
    .InputMessage = ""
    .ErrorMessage = "Wybierz poprawny status z listy rozwijanej! Lista ze statusami pojawi się jeśli wpisana została data z wpływem RK."
    .ShowInput = True
    .ShowError = True
    End With

到目前为止,它仍然有效,希望这是问题所在。