2017-07-14 15 views
0

我正在使用參考表來保存變量以定義日期驗證。我已經使用類似的代碼來定義來自參考表的W/O問題的列表驗證。看起來我有一個問題,即使用表驅動的值爲OPERATOR賦值。任何援助讚賞。使用變量來在Excel中使用驗證VBA:使用變量來定義運算符

For Each c In dateFields 
       fieldName = "entry_" & c.Value 
       validateOperator = "xl" & dropDownSh.Cells(c.Row, c.Column + 1).Value 'list of operator values, e.g., "Between", etc. 
       validateStart = dropDownSh.Cells(c.Row, c.Column + 2).Value 
       validateStop = dropDownSh.Cells(c.Row, c.Column + 3).Value 
       If validateStop = "" Then validateStop = validateStart 
       MsgBox (fieldName & ":" & validateList) 

       Range(fieldName).Select 
       With Selection.Validation 
        .Delete 
        If validateOperator = "xlBetween" Then 
          .Add Type:=xlValidateDate, _ 
          AlertStyle:=xlValidAlertStop, _ 
          Operator:=validateOperator, _ 
          Formula1:=validateStart, _ 
          Formula2:=validateStop 
        Else 
          .Add Type:=xlValidateDate, _ 
          AlertStyle:=xlValidAlertStop, _ 
          Operator:=xlGreaterEqual, _ 
          Formula1:=validateStart 
        End If 

        .IgnoreBlank = True 
        .InCellDropdown = True 
        .InputTitle = "" 
        .ErrorTitle = "" 
        .InputMessage = "" 
        .ErrorMessage = "" 
        .ShowInput = True 
        .ShowError = True 
       End With 
     Next c 
+0

那麼你的問題發生在哪裏?通過代碼步驟 – user1

回答

0

你不能做到這一點:

validateOperator = "xl" & dropDownSh.Cells(c.Row, c.Column + 1).Value 

,然後用validateOperator就好像它是一個真正的常數:

'.... 
If validateOperator = "xlBetween" Then 
    .Add Type:=xlValidateDate, _ 
    AlertStyle:=xlValidAlertStop, _ 
    Operator:=validateOperator, _ 
    Formula1:=validateStart, _ 
    Formula2:=validateStop 
Else 
'.... 

你需要通過適當的(如xlBetween是1,您可以在VB編輯器中通過對象瀏覽器找到)或實際常數,不是表示常量名稱的字符串...您可以使用表或函數將您的字符串映射到它們的等效常量值。

+0

謝謝!我會按你的建議去做。 –