Профессиональные приемы работы в Microsoft Excel

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Новости:

Читайте новые сообщения форума форума в RRS-агрегаторах

Автор Тема: Ввод данных с определенными условиями  (Прочитано 216 раз)

0 Пользователей и 1 Гость просматривают эту тему.

pkojuhoff

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 4

Добрый день! Коллеги, создал макрос, если нажимаем кнопку "ДА", то при внесении уникального номера, вся строка окрашивается в зеленый цвет, при нажатии клавиши "НЕТ", строка окрашивается в красный цвет.
Теперь получилась проблема, при внесении повторно уникального номера нет понятия проходил ли он или нет.
Подскажите, как сделать таким образом чтоб при вводе данных, столбец DZ, при повторяющемся значении (только строки залитые зеленым цветом) при нажатии кнопки "ДА", выдавал ошибку что такой уникальный номер уже существует. При нажатии кнопки "НЕТ", все работало как и ранее.

Я так понимаю нужен способ описать на VBA диапазон "весь UsedRange за исключением указанных ячеек", в данном случае чтоб искал уникальное значение в колонке DZ b залитой зеленым цветом, и если оно есть в зеленой заливке, чтоб сразу выдавал: "MsgBox("ДАННЫЙ УНИКАЛЬНЫЙ НОМЕР НАРЯДА УЖЕ СУЩЕСТВУЕТ!! Продолжить составление реестра?", vbYesNo + vbCritical + vbDefaultButton2)", и принажатии да продолжаем работу, при нажатии нет макрос останавливается.
Спасайте!
Записан

boa

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +31/-0
  • Оффлайн Оффлайн
  • Сообщений: 521
  • Доброта спасет мир...

Где-то подобную тему вы уже открывали...
Согласно правилам всех форумов вы должны указывать ссылки на однотипные темы.

Ваш макрос содержит множество противоречий и мусора, с которыми ни кто не захочет разбираться. Киллометр а-бы-как написанного кода, который можно сжать до десятка строк...
Лично я бы его полностью переписал, но если бы вы смогли сформулировать более конкретно "что надо", типа есть "это", а надо "это" , и лучше это показать в файле, - "было" - "надо", то быстрее бы нашелся помошник, ведь, в принципе, на всех форумах помогают одни и те же люди, просто ваша формулировка вопроса отталкивает от помощи.
Сконцентрируйтесь на главном!
"входные данные" - "алгоритм обработки" - "результат"
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

pkojuhoff

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 4

Простыми словами.

Приходит файл изначально все строки в белой заливки. Это наряды переданные нам за неделю.
Монтажники мне несут наряды в печатной форме отработанные и не отработанные. Вот у каждого наряда есть уникальный номер.
Сначала я проверяю отработанные наряды и в MSGBOX вношу уникальный номер  и строка окрашивается в зеленый цвет.
Потом проверяю не отработанные и строка окрашивается в красный цвет.
Но бывают хитрые монтажники они два раза один и тот же наряд подают на оплату мне, и я им дважды плачу за один и тот же наряд.
Вот мне надо те наряды которые уже я вносил (то есть они зеленые уже стали), чтоб выдавало ошибку, что такой наряд уже проходил.

Можно сделать так чтоб при окраске в зелёный цвет, проверка уникального номера была по реестру. Если в реестре есть такой номер, то выдаёт ошибку, что наряд проходил. При окраске в красный, чтоб такая проверка не проходила. Так как наряд может быть выполнен в другой день и чтоб он окрасился в зелёный и записался в реестр. Можно так закрутить?
Записан

boa

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +31/-0
  • Оффлайн Оффлайн
  • Сообщений: 521
  • Доброта спасет мир...

Добрый день,
в Module2 мой вариант макроса
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

pkojuhoff

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 4

Ну это поиск ячейки, а мне надо чтоб при использования макроса, если вводишь уникальный номер, чтоб перед тем как окрасить строку в зеленый цвет, проходил ли такой номер в реестре. И если в реестре такой номер есть, то выпадала ошибка.
Записан

pkojuhoff

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 4

Разобрался, на листе "реестр" запретил ввод повторных данных.
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
Всем спасибо!
« Последнее редактирование: 20.06.2018, 18:06:37 от vikttur »
Записан

boa

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +31/-0
  • Оффлайн Оффлайн
  • Сообщений: 521
  • Доброта спасет мир...

Логика макроса такова, что если ячейка была окрашена в зеленый, т.е. была добавлена в реестр, то она не может попасть в реестр повторно, кроме как если вы сами ее ручками не добавите.
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра
 



Темы без ответов

22.05.2018 11:38 Скрипт написать который допишет данные в файл 576
03.03.2018 00:00 Подсчет отработанного времени, за исключением заранее определенных перерывов 854
14.02.2018 10:11 Подготовить читабельную отчетность по платежам 830
23.01.2018 13:46 Найти вероятность повторной покупки 783
12.01.2018 23:56 Сделать отчет на Power BI (Dashboard) 1065
06.09.2017 10:43 Solver VBA не решает гиперболическое уравнение, но при этом решает гармоническое 1039
17.08.2017 12:15 Гиперссылка и фильтр одновременно макрос 1353
23.05.2017 11:20 Копирование данных из одной таблицы в умную таблицу по условию 2958
15.03.2017 15:45 автозамена картинок PowerPoint 1786
11.03.2017 13:43 Изменить нумерацию страниц 2017





Яндекс цитирования msexcel.ru Яндекс.Метрика

Страница сгенерирована за 0.133 секунд. Запросов: 109.