DataValidation List Сравнение, если это то же самое или нет?

89
12

Я новичок в VBA, и я хотел бы знать, как я могу сравнить два списка проверки (если они имеют один и тот же источник), чтобы достичь того, что мне нужно. (Смотрите скриншот, чтобы понять, в чем проблема)

Проблема: у меня есть столбец B (например), и когда я копирую/вставляю одну ячейку из этого столбца B в другую строку в этом столбце, я хочу проверить, является ли источник списка проверки тем же, где он вставляется, чтобы "Разрешить если это то же самое "или" Ошибка отменить, если они разные ".

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

Dim Name As String
Name = target.Value
With Range("B" & target.Row)
With .Validation
.Modify xlValidateList, xlValidAlertStop, xlBetween, "=" & Name
End With
End With

Все ожидаемые результаты приведены на этих скриншотах, чтобы было легче понять, в чем здесь главное:

https://prnt.sc/no5pi6

спросил(а) 2021-01-25T17:47:32+03:00 4 месяца, 3 недели назад
1
Решение
132

Если у вас есть ячейка, например, A1, которой назначено правило проверки данных типа списка, вы можете получить адрес списка проверки или соответствующее имя именованного диапазона, например:

Sub checkValidation()

Dim sht As Worksheet
Set sht = ThisWorkbook.Worksheets("Name of your Worksheet")
Debug.Print sht.Range("A1").Validation.Formula1

End Sub

Так, если, например, список проверки находится в sht.Range("S1:S5"), вы получите это в вашем ближайшем окне:

=$S$1:$S$5

Если список проверки является именованным диапазоном, например ValidationList, вы получите:

=ValidationList

Это не более чем строки.

В этом смысле вы можете сравнить списки проверки двух ячеек следующим образом:

Sub checkValidationSource()
Dim sht As Worksheet
Set sht = ThisWorkbook.Worksheets("Name of your Worksheet")
If sht.Range("A1").Validation.Formula1 = sht.Range("B1").Validation.Formula1 Then
'
'
'Do something
'
'
End If
End Sub

ответил(а) 2021-01-25T17:47:32+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема