2017-07-14 8 views
0

私は、日付検証を定義する変数を保持する参照テーブルを使用しています。私は同様のコードを使用して、参照テーブルからのリスト検証を定義しました。テーブルドリブンの値を使用して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

ありがとう!私はあなたが提案したようにします。 –

関連する問題