У меня есть большой диапазон ("C2: C100") для добавления раскрывающегося списка.
Я пробовал следующее:
With Worksheets("Sheet2").Range("c2:c100").Validation
.Add xlValidateList, xlValidAlertStop, xlBetween, "=Sheet3!a2:a5"
.InCellDropdown = True
End With
Но это сработало только для ячейки C2. Итак, я попробовал:
With Worksheets("Sheet2").Range("c2:c100")
With .Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1: = "=Sheet3!a2:a5"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End With
И продолжали получать ошибку со строкой ".Add Type..."
Вы должны убедиться, что вы удалили любую проверку из всех ячеек, прежде чем добавлять проверку в диапазон. Запуск .Delete перед .Add не приведет к ошибке, если она не существует, и удалит все, что существует.
With Worksheets("Sheet2").Range("c2:c100").Validation
.Delete
.add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1: = "=Sheet3!$A$2:$A$5"
.InCellDropdown = True
End With
Я предпочитаю использовать именованные параметры; особенно когда эти параметры являются необязательными.
Вам нужно сделать ссылку на диапазон списка абсолютной, иначе список станет относительным к положению ячейки. например C3 будет Sheet3!A3:A6, C4 будет Sheet3!A4:A7 и т. д.