Страницы: 1
RSS
Возможность изменения ячейки при условии
 
Ребят, нужна помощь.
Кейс следующий: есть столбец (пусть будет C:C), в каждой ячейке которой есть выпадающий список. Нужно так, чтобы можно было изменять данные в ячейках этого столбца лишь при условии, что в ячейке напротив, например, столбца B:B стоит заданное значение (для условности "1"). То есть, если в ячейке B2 стоит "0" или другое число, то ячейку С2 изменить нельзя.

Есть такие наработки:
Нашел на форуме макрос, который запускает какое-либо действие при любом изменении ячейки в заданном столбце, но не понимаю, как вывести ячейку, (ее координаты) стоящую напротив, чтобы задать на нее условие.

Буду рад если не коду, то хотя бы здравой логике)
 
Цитата
vadik-ceo написал:
Нашел на форуме макрос
Я так понимаю, что вы будете загадки загадывать, а мы их отгадывать.
Первая загадка, это найти на форуме такой же макрос???
Если автоматизировать бардак, то получится автоматизированный бардак.
 
wowick, про наработки написал, чтобы вынести на обсуждение мой подход. Я же не писал просьбу найти макрос на форуме)
Сам кейс я описал, нужна помощь конкретно по нему.

Но если Вы имеете в виду, что по моему кейсу есть макрос уже готовый, был бы рад ссылке. Я, честно говоря, найти не смог.
Изменено: vadik-ceo - 23.03.2018 14:39:29
 
vadik-ceo, Вам сложно набросать небольшой файл-пример?
 
Юрий М, прикладываю. Самое интересное, что макрос с файлом я нашел как раз Ваш же)
 
См. вариант.
 
Юрий М, это гениально)) Спасибо большое, очень помогли!
 
Юрий М, еще одна небольшая просьба, подскажите пожалуйста, как прописать в коде запрос, чтобы при неверном варианте (то есть, когда ячейки в А не равны 1) , в ячейке B не удалялось предыдущее значение, если оно там было?
Попробовал вставить после условия Application.Undo, не помогло
 
Юрий М,, разобрался) Увидел строку Таргет= "", пропустил сначала
 
Юрий М, похоже я переоценил свои силы. Возвращаясь к предыдущему вопросу: как прописать в коде запрос, чтобы при неверном варианте (то есть, когда ячейки в А не равны 1) , в ячейке B не удалялось предыдущее значение, если оно там было?

Попробовал исправить в Вашем коде, но не вышло.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("X:X")) Is Nothing Then
        Application.EnableEvents = False
        If Target.Offset(0, -19) <> "Направлено" Then
            If Target <> "" Then
               Target = Target.Value
               MsgBox "Нельзя вводить или изменять дату! Проверьте статус заявки!", 16
            Else
               Target = ""
               MsgBox "Нельзя вводить или изменять дату! Проверьте статус заявки!", 16
            End If
        End If
    End If
    Application.EnableEvents = True
End Sub
Изменено: vadik-ceo - 24.03.2018 11:10:30
 
Удалите/закомментируйте строку
Код
Target = ""
 
Тогда значение, где изменяем данные, изменяются. Очень критично, чтобы в случае "ошибки" не изменялось, а осталось прежним
 
Так?
 
Юрий М, огромное человеческое спасибо, очень выручили!
Скажите пожалуйста, я верно понял, что Вы присвоили переменной OldValue предыдущее значение ячейки в другой процедуре или это и есть встроенная функция VBA?
Страницы: 1
Наверх