Добрый день! Коллеги, создал макрос, если нажимаем кнопку "ДА", то при внесении уникального номера, вся строка окрашивается в зеленый цвет, при нажатии клавиши "НЕТ", строка окрашивается в красный цвет.
Теперь получилась проблема, при внесении повторно уникального номера нет понятия проходил ли он или нет.
Подскажите, как сделать таким образом чтоб при вводе данных, столбец DZ, при повторяющемся значении (только строки залитые зеленым цветом) при нажатии кнопки "ДА", выдавал ошибку что такой уникальный номер уже существует. При нажатии кнопки "НЕТ", все работало как и ранее.
Я так понимаю нужен способ описать на VBA диапазон "весь UsedRange за исключением указанных ячеек", в данном случае чтоб искал уникальное значение в колонке DZ b залитой зеленым цветом, и если оно есть в зеленой заливке, чтоб сразу выдавал: "MsgBox("ДАННЫЙ УНИКАЛЬНЫЙ НОМЕР НАРЯДА УЖЕ СУЩЕСТВУЕТ!! Продолжить составление реестра?", vbYesNo + vbCritical + vbDefaultButton2)", и принажатии да продолжаем работу, при нажатии нет макрос останавливается.
Спасайте!
Где-то подобную тему вы уже открывали...
Согласно правилам всех форумов вы должны указывать ссылки на однотипные темы.
Ваш макрос содержит множество противоречий и мусора, с которыми ни кто не захочет разбираться. Киллометр а-бы-как написанного кода, который можно сжать до десятка строк...
Лично я бы его полностью переписал, но если бы вы смогли сформулировать более конкретно "что надо", типа есть "это", а надо "это" , и лучше это показать в файле, - "было" - "надо", то быстрее бы нашелся помошник, ведь, в принципе, на всех форумах помогают одни и те же люди, просто ваша формулировка вопроса отталкивает от помощи.
Сконцентрируйтесь на главном!
"входные данные" - "алгоритм обработки" - "результат"
Простыми словами.
Приходит файл изначально все строки в белой заливки. Это наряды переданные нам за неделю.
Монтажники мне несут наряды в печатной форме отработанные и не отработанные. Вот у каждого наряда есть уникальный номер.
Сначала я проверяю отработанные наряды и в MSGBOX вношу уникальный номер и строка окрашивается в зеленый цвет.
Потом проверяю не отработанные и строка окрашивается в красный цвет.
Но бывают хитрые монтажники они два раза один и тот же наряд подают на оплату мне, и я им дважды плачу за один и тот же наряд.
Вот мне надо те наряды которые уже я вносил (то есть они зеленые уже стали), чтоб выдавало ошибку, что такой наряд уже проходил.
Можно сделать так чтоб при окраске в зелёный цвет, проверка уникального номера была по реестру. Если в реестре есть такой номер, то выдаёт ошибку, что наряд проходил. При окраске в красный, чтоб такая проверка не проходила. Так как наряд может быть выполнен в другой день и чтоб он окрасился в зелёный и записался в реестр. Можно так закрутить?
Добрый день,
в Module2 мой вариант макроса
Ну это поиск ячейки, а мне надо чтоб при использования макроса, если вводишь уникальный номер, чтоб перед тем как окрасить строку в зеленый цвет, проходил ли такой номер в реестре. И если в реестре такой номер есть, то выпадала ошибка.
Разобрался, на листе "реестр" запретил ввод повторных данных.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("A")) Is Nothing And Target.Count = 1 Then
Dim iCl As Range
On Error Resume Next
Application.EnableEvents = False
Set iCl = Columns("A").Find(Target.Value)
If Not iCl Is Nothing And iCl.Address <> Target.Address Then
MsgBox "Äàííûå ïî íàðÿäó: '" & Target.Value & "' â Îò÷¸òå óæå èìåþòñÿ!", vbCritical
Target.Value = Empty
End If
End If
Application.EnableEvents = True
End Sub
Всем спасибо!
Логика макроса такова, что если ячейка была окрашена в зеленый, т.е. была добавлена в реестр, то она не может попасть в реестр повторно, кроме как если вы сами ее ручками не добавите.