Добрый день! Коллеги, создал макрос, если нажимаем кнопку "ДА", то при внесении уникального номера, вся строка окрашивается в зеленый цвет, при нажатии клавиши "НЕТ", строка окрашивается в красный цвет. Теперь получилась проблема, при внесении повторно уникального номера нет понятия проходил ли он или нет. Подскажите, как сделать таким образом чтоб при вводе данных, столбец DZ, при повторяющемся значении (только строки залитые зеленым цветом) при нажатии кнопки "ДА", выдавал ошибку что такой уникальный номер уже существует. При нажатии кнопки "НЕТ", все работало как и ранее.
Добрый день! Коллеги, создал макрос, если нажимаем кнопку "ДА", то при внесении уникального номера, вся строка окрашивается в зеленый цвет, при нажатии клавиши "НЕТ", строка окрашивается в красный цвет. Теперь получилась проблема, при внесении повторно уникального номера нет понятия проходил ли он или нет. Подскажите, как сделать таким образом чтоб при вводе данных, столбец DZ, при повторяющемся значении (только строки залитые зеленым цветом) при нажатии кнопки "ДА", выдавал ошибку что такой уникальный номер уже существует. При нажатии кнопки "НЕТ", все работало как и ранее.pkojuhoff
pkojuhoff, сама по себе задача очень проста, если вспомнить способ описать на ВБА диапазон "весь UsedRange за исключением указанных ячеек". Что-то мне подсказывает, что он есть, просто мне на работе не удалось его найти...
pkojuhoff, сама по себе задача очень проста, если вспомнить способ описать на ВБА диапазон "весь UsedRange за исключением указанных ячеек". Что-то мне подсказывает, что он есть, просто мне на работе не удалось его найти...StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
[url=http://forum.msexcel.ru/index.php/topic,11887.msg58986.html#msg58986]Здесь[/url] тема уже решена, наверное, Автор не отписался. pkojuhoff, я же просил вас самостоятельно указывать дубли темы
[url=http://forum.msexcel.ru/index.php/topic,11887.msg58986.html#msg58986]Здесь[/url] тема уже решена, наверное, Автор не отписался. pkojuhoff, я же просил вас самостоятельно указывать дубли темыboa
Сообщение отредактировал boa - Среда, 20.06.2018, 16:02
Добрый день! Приходит файл изначально все строки в белой заливки ( в данном случае файл 17.05-31.05 он во вложении) . Это наряды переданные нам за неделю. Монтажники мне несут наряды в печатной форме отработанные и не отработанные. Вот у каждого наряда есть уникальный номер. Я создал макрос который окрашивает отработанные наряды зеленым цветом, не отработанные красным. Сначала я проверяю отработанные наряды и в MSGBOX вношу уникальный номер и строка окрашивается в зеленый цвет. Потом проверяю не отработанные и строка окрашивается в красный цвет. Но бывают хитрые монтажники они два раза один и тот же наряд подают на оплату мне, и я им дважды плачу за один и тот же наряд. Вот мне надо те наряды которые уже я вносил (то есть они зеленые уже стали), чтоб выдавало ошибку, что такой наряд уже проходил.
Можно сделать так чтоб при окраске в зелёный цвет, проверка уникального номера была по реестру. Если в реестре есть такой номер, то выдаёт ошибку, что наряд проходил. При окраске в красный, чтоб такая проверка не проходила. Так как наряд может быть выполнен в другой день и чтоб он окрасился в зелёный и записался в реестр. Можно так закрутить?
Добрый день! Приходит файл изначально все строки в белой заливки ( в данном случае файл 17.05-31.05 он во вложении) . Это наряды переданные нам за неделю. Монтажники мне несут наряды в печатной форме отработанные и не отработанные. Вот у каждого наряда есть уникальный номер. Я создал макрос который окрашивает отработанные наряды зеленым цветом, не отработанные красным. Сначала я проверяю отработанные наряды и в MSGBOX вношу уникальный номер и строка окрашивается в зеленый цвет. Потом проверяю не отработанные и строка окрашивается в красный цвет. Но бывают хитрые монтажники они два раза один и тот же наряд подают на оплату мне, и я им дважды плачу за один и тот же наряд. Вот мне надо те наряды которые уже я вносил (то есть они зеленые уже стали), чтоб выдавало ошибку, что такой наряд уже проходил.
Можно сделать так чтоб при окраске в зелёный цвет, проверка уникального номера была по реестру. Если в реестре есть такой номер, то выдаёт ошибку, что наряд проходил. При окраске в красный, чтоб такая проверка не проходила. Так как наряд может быть выполнен в другой день и чтоб он окрасился в зелёный и записался в реестр. Можно так закрутить?
Разобрался, на листе "реестр" запретил ввод повторных данных.
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
Всем спасибо!
Разобрался, на листе "реестр" запретил ввод повторных данных.
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
#Private Sub Worksheet_Change(ByVal Target As Range) #If Not Intersect(Target, Columns("DZ")) Is Nothing And Target.Count = 1 Then # Dim iCl As Range # On Error Resume Next # Application.EnableEvents = False # Set iCl = Columns("DZ").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
#Private Sub Worksheet_Change(ByVal Target As Range) #If Not Intersect(Target, Columns("DZ")) Is Nothing And Target.Count = 1 Then # Dim iCl As Range # On Error Resume Next # Application.EnableEvents = False # Set iCl = Columns("DZ").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 pkojuhoff