Страницы: 1
RSS
VBA. Проверка данных в столбце при копировании-вставке
 
Добрый день!

У меня есть файл Excel, на первом листе находится таблица, где для одного столбца установлена проверка данных по списку (сам список находится на втором листе). Так как таблица заполняется копированием-вставкой, то эта проверка не работает.
Есть ли какой-то способ сделать такую проверку на VBA? Например, подсвечивать жёлтым ячейки, где условия проверки не выполняются?

Заранее спасибо!

P.S. Запрещать копипаст нельзя, т.к. это основной способ заполнения таблицы.
 
Код
Sub Подсветить()
    Dim r As Range
    Set r = ThisWorkbook.Names("Список").RefersToRange
    
    Dim c As Range
    For Each c In Selection.Cells
        With c
            If WorksheetFunction.CountIfs(r, .Value) = 0 Then
                .Interior.Color = RGB(255, 255, 0)
            End If
        End With
    Next
    
End Sub

Это решение на VBA. Обратите внимание, что задачу можно сделать и другими способами, например, через условное форматирование.
 
Цитата
saari написал:
сделать такую проверку на VBA
можно, но это из пушки по воробьям.

Изучите функции Проверка данных на вкладке Данные и Условное форматирование: можно и подсвечивать, можно продупреждать всплывающим окном и даже запрещать вводить не те значения.
Нет ТЗ - получишь ХЗ.
Люблю универсально-стандартные решения, даже если они сложнее
 
МатросНаЗебре, спасибо, буду проверять
 
BUGL, к сожалению эти инструменты не подходят. Проверка данных не работает при операции копировать-вставить, а это основной способ заполнения таблицы. Условное форматирование не позволяет ссылаться на диапазон ячеек, можно только на одну ячейку. Разрешенный список из пятисот наименований, неужели создавать пятьсот правил??
Или я чего-то не понимаю и эти ограничения можно обойти?
 
Поставьте в условное форматирование формулу с использованием, например, ВПР.
Владимир
 
saari, пришлите пример, так не понятно. или задача уже не актуальна?
Нет ТЗ - получишь ХЗ.
Люблю универсально-стандартные решения, даже если они сложнее
Страницы: 1
Наверх