使用VBA数据验证

问题描述:

通常情况下,可以通过VBA在Excel中应用数据验证,但我有一个具体的问题使用VBA数据验证

我用间接方法应用验证,通常是当我不使用VBA我得到一个警告通过excel,“源目前评估为错误,你想继续吗?” (这是因为它间接指细胞可能是空的),现在我可以很容易地通过点击“是”

这里的链接http://www.contextures.com/xldataval02.html(相关验证列表)

跳过在Excel此错误但是,当我尝试使用vba执行相同的事情我得到一个运行时错误,没有友好的提示让我继续下去。如何处理这种错误。

在错误恢复不工作,因为然后vba不应用验证。

下面的代码

Set rng = ThisWorkbook.Sheets("input").Range("AB11:AB65536") 
With rng.Validation 
    .Delete 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:= _ 
    "=INDIRECT(cablecode&""_depth_""&$Q11&""_""&$Z11&""_values"")" 
    .IgnoreBlank = True 
    .InCellDropdown = True 
    .InputTitle = "" 
    .ErrorTitle = "" 
    .InputMessage = "" 
    .ErrorMessage = "" 
    .ShowInput = True 
    .ShowError = True 
End With 

cablecode是一个静态命名区域

Q11和Z11是指输入该特定行中

深度是正常的字符串

cablecode可以有两个值=“is”或“ IEC”

Q11可以是 “XLPE” 或 “PVC”

Z11可以是 “人” 或 “铜”

因为cablecode为整个项目IVE直接提交给它的恒定, Q11和Z11可以为不同的行不同的,所以香港专业教育学院称他们seperately

整串出来是 “is_depth_al_xlpe_values” 同样不同permuations,所有命名范围已经被定义

+1

如果您可以发布源代码,这将更加清晰。 –

+0

@EdwinBautista ive添加源代码 –

+0

什么是错误和错误是什么行? – shahkalpesh

我想下面的行需要修正,从

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:= _ 
    "=INDIRECT(cablecode&""_depth_""&$Q11&""_""&$Z11&""_values"")" 

dim cellToBeReferred as string 
cellToBeReferred = cablecode & "_depth_" & Range("$Q11").Value & "_" _ 
& Range("$Q11").Value & "_values" 

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:= _ 
    "=INDIRECT(" & cellToBeReferred & ")" 

以串了会帮你调试的问题,图什么是命名的范围值,你会想参考。查看cellToBeReferred结果到什么值并使用上面的方法更正了连接。阅读有机磷农药后

编辑点评

在这种情况下,环绕INDIRECTISERROR,给虚拟单元格引用。 例如

"=IFERROR(INDIRECT(" & cellToBeReferred & "), Z1)" 

其中如果INDIRECT失败,则Z1是要引用的单元格。

+0

我知道错误是什么..只是当Q11和Z11没有指定字符串将变成is_depth_(这里没有)_(这里没有)_values ...因为它不是命名范围它给出了一个错误..问题是excel会让我继续,因为后来我可以输入Q11和Z11和验证将可用..但vba不会让我继续... –

+0

但在虚拟单元格引用的情况下原始验证不会在那里......如果用户在Z11和Q11中输入数据,他将不会得到他应该输入的列表 –

+0

如果命名的范围是正确的并且有数据,它将被引用。如果有错误,Z1(它是一个临时参考e)将被提及。 – shahkalpesh