Приветствую! Выручайте! Необходимо чтобы на листе "Сводная" при изменении данных в ячейке B3 фиксировалось время изменения в ячейке С3. Особенности: 1. Ячейка B3 ЗАЩИЩЁННАЯ! Содержит ссылку на другую ячейку! 2. Все данные автоматически собираются с других листов. т.е. ручного ввода нет! P.S. Макросы использовал - они работают только при ручном вводе данных. Будет супер если есть возможность использовать функцию, а не макрос. Изменения необходимо фиксировать конкретной ячейки в конкретной ячейке, а не диапазоне, т.к. их в перспективе на одном листе под сотню будет. Снимать защиту с ячейки также не хотелось бы. Заранее ОГРОМНОЕ спасибо!
Приветствую! Выручайте! Необходимо чтобы на листе "Сводная" при изменении данных в ячейке B3 фиксировалось время изменения в ячейке С3. Особенности: 1. Ячейка B3 ЗАЩИЩЁННАЯ! Содержит ссылку на другую ячейку! 2. Все данные автоматически собираются с других листов. т.е. ручного ввода нет! P.S. Макросы использовал - они работают только при ручном вводе данных. Будет супер если есть возможность использовать функцию, а не макрос. Изменения необходимо фиксировать конкретной ячейки в конкретной ячейке, а не диапазоне, т.к. их в перспективе на одном листе под сотню будет. Снимать защиту с ячейки также не хотелось бы. Заранее ОГРОМНОЕ спасибо! Possession_SSV
Использовал такой макрос! В автоматическом режиме не работает.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Application.Intersect(Range("B3"), Target) Is Nothing Then Exit Sub 'проверяется, _ в нужной ли ячейке происходит изменение, в данном случаи ячейка А1, если изменения происходят в _ другой ячейке, макрос не срабатывает Range("C3") = Now 'указываем в какую ячейку выводить результат End Sub
[/vba]
Использовал такой макрос! В автоматическом режиме не работает.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Application.Intersect(Range("B3"), Target) Is Nothing Then Exit Sub 'проверяется, _ в нужной ли ячейке происходит изменение, в данном случаи ячейка А1, если изменения происходят в _ другой ячейке, макрос не срабатывает Range("C3") = Now 'указываем в какую ячейку выводить результат End Sub
Possession_SSV, я и другие тоже, к сожалению не смогут Вам ответить, т.к. у Вас макрос не оформлен тэгом, а модераторы у нас злые следят за соблюдением правил.
Possession_SSV, я и другие тоже, к сожалению не смогут Вам ответить, т.к. у Вас макрос не оформлен тэгом, а модераторы у нас злые следят за соблюдением правил.Nic70y
Nic70y, посмотрите, пожалуйста прикреплённый файл, т.к. возможно не смогу грамотно ответить. В сводную собираются с других листов в книге. Внутри листа данные вводятся вручную, но ячейка которая отдаёт данные в сводную тоже автоматическая. Листов в перспективе будет много. А на сводной надо видеть когда на конкретном листе обновлялись данные.
Nic70y, посмотрите, пожалуйста прикреплённый файл, т.к. возможно не смогу грамотно ответить. В сводную собираются с других листов в книге. Внутри листа данные вводятся вручную, но ячейка которая отдаёт данные в сводную тоже автоматическая. Листов в перспективе будет много. А на сводной надо видеть когда на конкретном листе обновлялись данные.Possession_SSV
Сообщение отредактировал Possession_SSV - Четверг, 02.07.2020, 12:30
пои условии, что листы (не Сводная) заполняются вручную, в модуль книги: [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) aa = ActiveSheet.Name 'имя активного листа If aa <> "Сводная" Then 'если активный лист не Сводная, тогда If Target.Cells.Count > 1 Then 'если используется > 1 ячейки MsgBox "Редактируйте по 1 ячейке!" Else 'иначе 'u_1 = Target.Row u_2 = Target.Column '№ столбца изменяемой ячейки If u_2 = 2 Then 'если изменяемая ячейка находится в столбце 2 (B), тогда 'u_3 = Application.VLookup("ИТОГО:*", Range("a:b"), 2, 0) 'сумма ИТОГО на активном листе u_4 = ActiveSheet.Index '"порядковый" № активного листа Sheets("Сводная").Unprotect 'снять защиту листа 'Sheets("Сводная").Range("b" & u_4 + 2) = u_3 Sheets("Сводная").Range("c" & u_4 + 2) = Now 'время изменения ячейки Sheets("Сводная").Protect 'установить защиту листа End If End If End If End Sub
пои условии, что листы (не Сводная) заполняются вручную, в модуль книги: [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) aa = ActiveSheet.Name 'имя активного листа If aa <> "Сводная" Then 'если активный лист не Сводная, тогда If Target.Cells.Count > 1 Then 'если используется > 1 ячейки MsgBox "Редактируйте по 1 ячейке!" Else 'иначе 'u_1 = Target.Row u_2 = Target.Column '№ столбца изменяемой ячейки If u_2 = 2 Then 'если изменяемая ячейка находится в столбце 2 (B), тогда 'u_3 = Application.VLookup("ИТОГО:*", Range("a:b"), 2, 0) 'сумма ИТОГО на активном листе u_4 = ActiveSheet.Index '"порядковый" № активного листа Sheets("Сводная").Unprotect 'снять защиту листа 'Sheets("Сводная").Range("b" & u_4 + 2) = u_3 Sheets("Сводная").Range("c" & u_4 + 2) = Now 'время изменения ячейки Sheets("Сводная").Protect 'установить защиту листа End If End If End If End Sub
[/vba]ощибся чутка, надо u_4 + 1, а не u_4 + 2Nic70y
Nic70y, Супер! Уже хоть что-то. Но съехали все данные на одну строчку вниз и на листе "Сводная" не проставляется дата изменения в ИТОГО. С внедрённым макросом прикрепил файл. Можно ли всё-таки сделать отслеживание изменений не в столбце или диапазоне, а всё таки в конкретной ячейке (ИТОГО на каждом листе)?
Nic70y, Супер! Уже хоть что-то. Но съехали все данные на одну строчку вниз и на листе "Сводная" не проставляется дата изменения в ИТОГО. С внедрённым макросом прикрепил файл. Можно ли всё-таки сделать отслеживание изменений не в столбце или диапазоне, а всё таки в конкретной ячейке (ИТОГО на каждом листе)?Possession_SSV
Nic70y, ОГРОМНОЕ СПАСИБО!!! Рабочий вариант! Дополнительно если появится вариант решения через функцию буду ОЧЕНЬ признателен! :)) т.к. при этом решении всё-таки отслеживается диапазон (столбец). а мне в сводной в последующем необходимо сделать разбивки по отделам, сортировки по датам и т.д. также в сводной планируется ещё столбцов несколько добавить. Ещё раз спасибо!
Nic70y, ОГРОМНОЕ СПАСИБО!!! Рабочий вариант! Дополнительно если появится вариант решения через функцию буду ОЧЕНЬ признателен! :)) т.к. при этом решении всё-таки отслеживается диапазон (столбец). а мне в сводной в последующем необходимо сделать разбивки по отделам, сортировки по датам и т.д. также в сводной планируется ещё столбцов несколько добавить. Ещё раз спасибо! Possession_SSV
Доработал чуть файл - добавил отделы. Скрипт сразу же перестал корректно работать, а мне таких отделов надо будет добавлять много. Просьба предложить ещё какие-нибудь варианты. Заранее СПАСИБО!!!
Доработал чуть файл - добавил отделы. Скрипт сразу же перестал корректно работать, а мне таких отделов надо будет добавлять много. Просьба предложить ещё какие-нибудь варианты. Заранее СПАСИБО!!!Possession_SSV
см. такой вариант: ищем по имени листа, обратите внимание, в листе Сводная имена листов я исправил, чтоб они соот. реальным [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) aa = ActiveSheet.Name 'имя активного листа If aa <> "Сводная" Then 'если активный лист не Сводная, тогда If Target.Cells.Count > 1 Then 'если используется > 1 ячейки MsgBox "Редактируйте по 1 ячейке!" Else 'иначе 'u_1 = Target.Row u_2 = Target.Column '№ столбца изменяемой ячейки If u_2 = 2 Then 'если изменяемая ячейка находится в столбце 2 (B), тогда 'u_3 = Application.VLookup("ИТОГО:*", Range("a:b"), 2, 0) 'сумма ИТОГО на активном листе 'u_4 = ActiveSheet.Index '"порядковый" № активного листа u_5 = ActiveSheet.Name u_6 = Application.Match(u_5, Sheets("Сводная").Range("a:a"), 0) Sheets("Сводная").Unprotect 'снять защиту листа 'Sheets("Сводная").Range("b" & u_4 + 1) = u_3 Sheets("Сводная").Range("c" & u_6) = Now 'время изменения ячейки Sheets("Сводная").Protect 'установить защиту листа End If End If End If End Sub
[/vba]
см. такой вариант: ищем по имени листа, обратите внимание, в листе Сводная имена листов я исправил, чтоб они соот. реальным [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) aa = ActiveSheet.Name 'имя активного листа If aa <> "Сводная" Then 'если активный лист не Сводная, тогда If Target.Cells.Count > 1 Then 'если используется > 1 ячейки MsgBox "Редактируйте по 1 ячейке!" Else 'иначе 'u_1 = Target.Row u_2 = Target.Column '№ столбца изменяемой ячейки If u_2 = 2 Then 'если изменяемая ячейка находится в столбце 2 (B), тогда 'u_3 = Application.VLookup("ИТОГО:*", Range("a:b"), 2, 0) 'сумма ИТОГО на активном листе 'u_4 = ActiveSheet.Index '"порядковый" № активного листа u_5 = ActiveSheet.Name u_6 = Application.Match(u_5, Sheets("Сводная").Range("a:a"), 0) Sheets("Сводная").Unprotect 'снять защиту листа 'Sheets("Сводная").Range("b" & u_4 + 1) = u_3 Sheets("Сводная").Range("c" & u_6) = Now 'время изменения ячейки Sheets("Сводная").Protect 'установить защиту листа End If End If End If End Sub
Nic70y, Супер! СПАСИБО!!! Сортировка работает! Как в Сводной проставить тоже дату в ИТОГО везде на листе. Сейчас при двух записях это пока не актуально, но когда их будет много - очень даже надо будет!
Nic70y, Супер! СПАСИБО!!! Сортировка работает! Как в Сводной проставить тоже дату в ИТОГО везде на листе. Сейчас при двух записях это пока не актуально, но когда их будет много - очень даже надо будет!Possession_SSV
Сообщение отредактировал Possession_SSV - Вторник, 07.07.2020, 14:10