2015-09-30 3 views
0

Я пишу код для вставки в одну таблицу. Ситуация такова: Ячейка A1 (с возможностью 50 100 и 150) и ячейкой A2 (с параметром 1000 и 5000), оба имеют в них список валидации данных. Когда я выбираю ячейку A1 50, A2 должна быть 1000. Когда я написал код и сделал выбор, всегда есть ошибка:Выбор списка валидации данных VBA

Run-time error '-2147417848(80010108)': Method 'Add' of object 'Validation' failed.

Пожалуйста, поделитесь своим мнением или в случае необходимости я выкладываю свои коды здесь решить эту проблему.

Основной код выглядит следующим образом:

Select Case Range("A1").Value 
Case "50" 
     Range("A2").ClearContents 
     Range("A6").Value2 = "1000" 

Case "`100" 
     Range("A2").ClearContents 
     With Range("A2").Validation 
     .Delete 
     .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _ 
     :=xlBetween 
     .IgnoreBlank = True 
     .InCellDropdown = True 
     .InputTitle = "" 
     .ErrorTitle = "" 
     .InputMessage = "" 
     .ErrorMessage = "" 
     .ShowInput = True 
     .ShowError = True 
    End With 
     Range("A2").Value2 = 1000 
+0

приветствия к переполнению стека. Вам нужно предоставить дополнительную информацию. Как насчет размещения кода, который вы написали. – HarveyFrench

+0

Ниже приведен код: Select Range («A1»). Значение Case 50, Range («A2»). Значение = 1000 End Selection Я думал, что это должен быть простой код, но в книге Excel, когда я выбираю 50 в A1, есть ошибка, и мой excel измельчен, –

+0

Знаете ли вы об отладке кода VBA. Если не узнать. Вы должны указать приведенную вам ошибку. Содержит ли ваш код. Каким модулем является ваш код. – HarveyFrench

ответ

0

Добавьте этот код в модуль листа с клетками, которые вы хотите проверки добавлены

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Address = "$A$1" Then 

     If Target.Value = 50 Then 

      Range("A2") = 1000 

      ' Add valid values of 1000 allowed only 
      With Range("A2").Validation 
       .Delete 
       .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="1000" 
       .IgnoreBlank = True 
       .InCellDropdown = True 
       .InputTitle = "" 
       .ErrorTitle = "" 
       .InputMessage = "" 
       .ErrorMessage = "Enter a valid value" 
       .ShowInput = False 
       .ShowError = True 
      End With 

     Else 
      ' Add valid values of 1000 and 5000 allowed 
      With Range("A2").Validation 
       .Delete 
       .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="1000,5000" 
       .IgnoreBlank = True 
       .InCellDropdown = True 
       .InputTitle = "" 
       .ErrorTitle = "" 
       .InputMessage = "" 
       .ErrorMessage = "Enter a valid value" 
       .ShowInput = False 
       .ShowError = True 
      End With 
     End If 




    End If 

End Sub 
+0

Привет друг. Это сработало! Спасибо огромное! Но знаете ли вы, в какой части я ошибаюсь? Ваш код очень полезен, но для этой части «Если Target.Address =« $ A $ 1 »Затем« какая разница между «A1» и «$ A $ 1». и можете ли вы немного объяснить мне? Еще раз спасибо, –

Смежные вопросы