首页 > 解决方案 > EXCEL 数据验证 ISBLANK 不起作用

问题描述

我在 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 为空时。然后发生错误 1004 - 在 Validation.Add 行中。当这个单元格被填满时,没有错误。我不知道为什么会这样。有人可以向我解释一下吗?

标签: excelvbavalidation

解决方案


我想我找到了解决方案。问题出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

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


推荐阅读