2017-03-16 85 views
0

我想用sub来配置表的不同范围的列表验证以简化主程序的外观,我可以找到验证器的正确形式输入到Formula1参数。你可以帮我吗?Excel:验证在VBA中的设置

'in the main routine 
    add_validation Range.Columns("A"), range("types") 
    add_validation Range.Columns("C"), range("units") 
    .... 

    'the sub 
    Sub add_validation(to_validate As Range, validator As Range) 
     With to_validate 
     With .Validation 
      .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
      xlBetween, Formula1:=validator 
     End With 
    End With 
    End Sub 

回答

0

您的范围arguement不太正确,验证公式需要一个字符串。这样做:

'in the main routine 
    add_validation Columns("A:A"), "types" ' Columns is the range object, you don't need Range.Column 
    add_validation Columns("C:C"), "units" ' Your named range is accessed via a string for cell validation 
    .... 

    'the sub 
    Sub add_validation(to_validate As Range, validator As String) 
     With to_validate 
     With .Validation 
      .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
      xlBetween, Formula1:="=" & validator 
     End With 
    End With 
    End Sub 
+0

谢谢Absynthe。 –