Здравствуйте. В файле у меня есть таблица (не думаю, что для вопроса нуждается в приложении). В таблице в одном столбце формула, которая, опираясь на сегодня, вычисляет дату. В зависимости от этой даты УФ закрашивает строки таблицы. Мне нужно в коде отследить, какие строки поменяли цвет (код буду запускать по кнопке). Я не понимаю, как мне взять исходные данные до отработки УФ? Помогите, пожалуйста.
Дмитрий(The_Prist) Щербаков, Не пойдёт. В каждой строке - своя дата. А вариантов цветов - всего 5. Пока вижу вариант: отказаться от УФ и закрашивать в коде. Но хотелось бы всё же остаться на УФ. Помогите, пожалуйста.
Шарик написал: Не пойдёт. В каждой строке - своя дата.
То, что в каждой строке своя дата вообще не проблема - просто проверяется каждая строка на выполнение условия, это обычная практика. Откуда взялось 5 цветов на одну дату не знаю, пример никто пока кроме Вас не видел.
Цитата
Шарик написал: хотелось бы всё же остаться на УФ. Помогите, пожалуйста
отследить событие изменения цвета это код не на один модуль и ни разу не стабильный. А раз другие пути, которые Вам предлагают, Вам не подходят - я лучше отстранюсь.
Вопрос даже не в том, что отслеживать, а в том как. Ведь код будет запускаться уже ПОСЛЕ изменения дат и отработки УФ. И я не пойму как мне в коде узнать значения до изменения дат и отработки УФ?
Шарик написал: И я не пойму как мне в коде узнать значения до изменения дат
чтобы это понять, надо знать как и кем меняются даты. А Вы об этом не говорите. Есть события изменения ячеек(если изменения делались вручную или кодом, а не формулой), которые таки позволяют отследить изменения ячеек. Например, Worksheet_Change.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Шарик написал: в одном столбце формула, которая, опираясь на сегодня, вычисляет дату
если это может вычислить формула - значит может вычислить и код. И более того: сегодня может измениться только один раз за день. Значит вычислять дату в этом столбце, опираясь на сегодня, можно просто при запуске файла один раз кодом. Но пока это догадки и до сих пор кроме Вас никто не знает где что и как у Вас там записано и вычисляется. Правила не читали, видимо, и про файл-пример не в курсе Вы бы вдумались в свою задачу и изложили бы её нормально, вместо объяснений того, как Вам кажется её можно решить.
Шарик написал: могу я отследить предыдущее значение в коде?
а я откуда знаю? У Вас там что-то вычисляется, что-то красится, где-то как-то выводится. Я не могу угадать где, как и что там у Вас происходит и как это отследить
Цитата
Шарик написал: в одном столбце формула, которая, опираясь на сегодня, вычисляет дату
т.е. по сути изменяемая величина одна - текущая дата. вычислить предыдущее значение не проблема, подставив в вычисления вчерашнюю. Что мешает это сделать - я не знаю, возможно есть причины. В общем интерес к теме пропал - сидеть и гадать что там у Вас и как без файла и понятного пояснения, накидывая какие-то варианты, нет желания.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Ещё раз вопрос: можно ли узнать значения ячеек, которые были в них час назад? Не важно какие, не важно как они менялись. Если я через час запущу код, могу ли я как-то узнать через него НЕ текущие значения ячеек? Или всё, я смогу узнать только текущие значения?
Шарик, вопрос не по теме, но как вариант можно использовать макрос, чтобы запомнить предыдущее значение
Цитата
Шарик написал: Неужели Эксель сам нигде не запоминает предыдущее значение
Код
Dim zapas
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
zapas = Target.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
было = zapas
Application.EnableEvents = True
If Not Intersect(Target, Range("T:T")) Is Nothing Then
стало = Target.Value
MsgBox "было: " & было
MsgBox "стало: " & стало
End If
End Sub