Не используйте .Add
в вашем With Block
.
Sheets("Sheet1").Range("C2").Offset(0, 3).Select
With Selection.Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$B$2:$B$5"
.IgnoreBlank = True
.InCellDropdown = True
End With
И я бы посоветовал избежать .Select
и объявить переменные диапазона.
Dim myRng As Range
Set myRng = ThisWorkbook.Worksheets("Sheet1").Range("F2")
With myRng.Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$B$2:$B$5"
.IgnoreBlank = True
.InCellDropdown = True
End With
Вероятно, было бы неплохо убедиться, что у вас в настоящее время не установлена валидация с использованием .delete
- это может вызвать ошибку, если у вас уже установлена валидация данных с предыдущей попытки.
With myRng.Validation
.delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$B$2:$B$5"
.IgnoreBlank = True
.InCellDropdown = True
End With