Страницы: 1
RSS
Изменение заливки зависимых ячеек, Изменение заливки ячеек при изменении результата вычисления формул в этих ячейках
 
Здравствуйте, уважаемые форумчане!
Пожалуйста, помогите решить проблему. Похожие темки почитала, но чуть не то....
Есть таблица, куда заносятся счета и планируемые платежи. На листе 1 по транспорту и таможне сроки оплаты в столбце J привязаны к ячейкам столбца N на листе ИМПОРТ.
Можно ли сделать, чтобы при внесении изменений в ячейки столбца N на листе ИМПОРТ те ячейки столбца J листа 1, в которых поменялись из-за этого значения, окрасились бы в зеленый цвет? В остальных ячейках заливка отсутствует.

Вот в этой теме - https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=56709&MID=473160#message473160 - по ссылке нашла макрос, но он срабатывает только при ручном вводе данных, а при "косвенном" - через функцию  - не работает....

Буду очень признательна за помощь! Файл-пример в приложении.
P.S. макросы писать не умею...только копировать...  :oops:  
 
Никто не знает? Или это вообще невозможно сделать? Может быть, можно хотя бы выделить все зависимые ячейки, которые зависят от конкретной ячейки? Стандартными средствами excel это можно сделать только для одного листа (т.е. и исходная и зависимые ячейки находятся на одном листе), а у меня все зависимые ячейки находятся на другом листе...
 
Цитата
ElenaAC написал:
Стандартными средствами excel
посмотрите в сторону Inquire - доступна в версии PRO
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, спасибо, но к сожалению стоит другая версия, в ней этой надстройки нет.
 
вариант в модуль листа импорт
Код
Dim r#
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Not Intersect(Target, Range("N2:N28")) Is Nothing Then
    If Target <> r Then
        adres = ActiveSheet.Name & "!" & Target.Address(0, 0)
        With Sheets("1")
        .Range("J8:J88").Interior.ColorIndex = None
            Set Rng = .Range("J8:J88").Find(adres)
                 If Not Rng Is Nothing Then
                 Rng.Interior.ColorIndex = 4
                 a = Rng.Address '---запоминаем адрес первой найденной ячейки
            '---цикл по следующим найденным ячейкам
                 Do
                    Set Rng = .Range("J8:J88").FindNext(Rng)
                    If Rng.Address = a Then Exit Do
                    Rng.Interior.ColorIndex = 4
                 Loop
                End If
        End With
    End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("N2:N28")) Is Nothing Then r = Target.Value
End Sub
 
V, вставила в модуль, меняю дату в столбце N листа Импорт, на первом листе даты меняются, но заливки как не было, так и нет... Файл в приложении.
 
у меня красит. вы случаем отслеживание случайно не отключили?
поставте в коде точку останова и увидите заходит ли выполнение туда ну по F8 можете проверить почему не красит.
П.С. макрос ищет только относительную ссылку (A1) если будет хоть один доллар то не найдет.
Изменено: V - 13.06.2019 15:34:21
 
у меня тоже красит. Все работает.
 
V, я вообще понятия не имела про этот режим.... (темные мы люди).
По порядку: у меня стоит Microsoft Office Home and Business 2019. Как оказалось, чтобы включить в нем режим отслеживания, нужно столько операций проделать... Преобразовала таблицы в диапазоны, включила общий доступ к книге, включила отслеживание... После этого появилось предупреждение, что этот файл содержит макрос, который при включенном общем доступе невозможно посмотреть и изменить...
В итоге - в ячейках вижу комментарии о сделанных изменениях, при попытке просмотреть исходный код появляется сообщение "Project is unviewable". При нажатии F8 появляется сообщение "Run-time error '13 Type mismatch.
Как поставить в коде точку основа (и что это вообще такое) не знаю..
Ссылки все относительные, без $.
Что я делаю не так? Куда теперь лезть?
 
для просмотра кода жмем Alt+F11 находясь на листе Импорт.
ТОчка остонова это когда откроется окно VBA леве кода есть поле, если ПКМ по нему на против строчки кода - появится красная точка это она и есть. Во время срабатывания кода он будет идти по строчкам и остановится на строчке где стоит точка. F8 нужно что бы дальше идти по коду пошагово.
 
Не показывает у меня код, просто пустое окно.... После нажатия Alt+F11
 
Нажмите на "плюсик" в окне проводника проекта. Если не пускает - снимите общий доступ.
 
Очень сильно извиняюсь, я кажется совсем затупила...даже стыдно... Сейчас дома попробовала опять с нуля (дома старенький 2007 эксель) и тут "разглядела", что в формулах есть-таки $$ - там где идет расчет с учетом праздничных дней, а я про них забыла... ввела их через именованный диапазон и все закрасилось! И никакой общий доступ не включала! Не знаю, как завтра на работе встанет на том экселе, но надеюсь что причина только в этом была (не считая моей дырявой головы).
Спасибо всем, кто терпеливо отвечает на тупые вопросы!!! Если все заработает, будет очередное облегчение для глаз и экономия времени.  
 
Еще раз всем огромное спасибо за помощь! Все получилось, все работает!
 
еще один нюанс. в поиске
Код
.Range("J8:J88").Find(adres)

не указаны параметры, соответственно поиск будет использовать параметры которые применялись последними.
 
А я уже там поправила - увеличила до 500 строк, больше никогда не бывает. Спасибо. Меня другой момент заинтересовал - когда нужно было сегодня удалить с листа Импорт два верхних инвойса, которые оплатили, макрос выдал предупреждение об ошибке. Подсветил желтым вот эту строку:
Код
If Not Intersect(Target, Range("N2:N28"))
Пришлось нажать End, после чего позволил удалить. Вроде бы все продолжает работать. Видимо ругался, что лезу в его рабочий диапазон.
 
Help!!! Что-то сломалось... Я удалила некоторые строки на листе Импорт, еще по некоторым произошло перемещение из плановых в верхнюю часть (т.к. появились инвойсы под эти заказы). И все....макрос не работает. Даже если просто выделить целиком какую-то строку, появляется окно с сообщением об ошибке, при открытии Разработчика желтым подсвечено r = Target.Value и при наведении курсора на r появляется значение r=43654
Что это значит? И как мне менять данные (удалять, добавлять строки на листе Импорт), чтобы не было ошибок??
 
Цитата
ElenaAC написал:
появляется значение r=43654
это всего лишь дата в числовом виде.
файл с ошибкой покажите.
 
Опять я накосячила, вроде прикрепляла файл, а его нет...
Книга 1 - вроде работает, Книга 1-копия - уже нет - вообще ничего не удаляла, просто выделила одну из строк в импорте и сразу ошибка...
 
Всем здравствуйте!
Я частично разобралась в своей "проблеме". Макрос теперь работает (оказалось, что даже при задании имени для диапазона нельзя использовать $ в ссылке). Так что он работает, но... Если мне нужно на листе Импорт провести какие-то манипуляции (заново отсортировать строки, что-то удалить или добавить), которые требуют выделения мышью всей строки, сразу появляется сообщение об ошибке (скрины прикрепляю). Как выяснилось, на дальнейшую работу макроса это не влияет, но это очень мешает работе - нужно постоянно нажимать End, чтобы это окно закрылось.
И второй вопрос, еще более важный для меня - макрос выделяет цветом только самое последнее изменение. А у меня процесс внесения этих изменений следующий - раз в неделю мне присылают отчет с новыми данными и я должна внести корректировки в свой файл. И на листе Импорт у меня будет очень много изменений дат в столбце N и нужно, чтобы на листе 1 все ячейки, связанные с этими изменившимися данными, были выделены цветом. А макрос сейчас работает по циклу, когда каждое следующее изменение "стирает" предыдущее. Можно ли с этим что-то сделать или такая задача невыполнима? В таком виде, как сейчас, он для меня, получается, бесполезен, увы...
 
На всякий случай файл прикладываю.
Страницы: 1
Наверх