Добрый день. Помогите пожалуйста. Потихоньку осваиваю VBA.
Условие: Есть база Сварщиков на листе2, вставляю данные в лист 1 и допускаю ошибку.
Задача: Кнопку что бы код сверил с базой и выделил красным значение которого нет в базе.(пустые не трогал)
Даже не знаю с какой стороны подойти что бы написать.
репа чешится, но даже из чего собрать код не представляю
https://forumvba.ru/index.php?topic=2124.msg12773#msg12773 относится к этой теме, поиск по значению
Sub poisk()
With Worksheets(1).Range("J2:J500")
Set c = .Find("ЧТО ПОСТАВИТЬ ЧТО БЫ ИСКАЛ ЗНАЧЕНИЯ ПО БАЗЕ ИЗ ЛИСТА2 A2;A500, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
firstResult = c.Address
Do
c.Font.Color = RGB(255, 0, 0)
Set c = .FindNext(c)
If c Is Nothing Then Exit Do
Loop While c.Address <> firstResult
End If
End With
End Sub
Вы решили свою задачу? Вам помощь больше не нужна?
нет проблема так и не была решена.
А что вы хотели показать кодом из ответа 3?
Вы просто выложили код без каких-либо пояснений.
ф предполагал что после .Find можно вставить не точное значение а диапозон. Информации что эта функция может перебирать значение я не нашел(если только в ручную не внести весь столбец).
Перебрав все, я понял что нужно искать массив в массие и различия подкрасить в листе 1. пробовал еще пару но без успешно(
Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.
Для Find указывайте все параметры, т.к. Find связан с диалоговым окном "Найти и заменить" и если вы какой-то параметр не укажите, то макрос возьмёт этот параметр из диалогового окна "Найти и заменить". Единственное, не нужно указывать параметр "After".
Макрос
Sub Poisk()
Dim Лист1 As Worksheet, ЛистСварщики As Worksheet
Dim i As Long
' Присваиваем имена листам, чтобы через эти имена обращаться к листам.
Set Лист1 = Worksheets(1)
Set ЛистСварщики = Worksheets(2)
' Движение по Листу 1, со строки 2 до 500.
For i = 2 To 500
If ЛистСварщики.Range("A2:A500").Find(What:=Лист1.Cells(i, "J").Value, _
LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Is Nothing Then
Лист1.Cells(i, "J").Interior.Color = RGB(255, 0, 0)
End If
Next i
End Sub
Спасибо. Надо было представить диапазон как цикл.