Добрый день, уважаемые форумчане. Я использую вот такой код: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Target.Value = "" Then Exit Sub On Error Resume Next Sheets("фото").Shapes(Target).Copy If Err Then Exit Sub Target.Select ActiveSheet.Paste Target.Select End Sub
[/vba] При изменении значений в ячейке вручную все отлично работает. При изменении значений ячейки формулами,событие не запускается. Попытался решить проблему с помощью события Worksheet_Calculate, но к сожалению что то делаю не так... Как правильно нужно преобразовать код,чтобы при измении в ячейках (через формулы), запускался код? Спасибо.
Добрый день, уважаемые форумчане. Я использую вот такой код: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Target.Value = "" Then Exit Sub On Error Resume Next Sheets("фото").Shapes(Target).Copy If Err Then Exit Sub Target.Select ActiveSheet.Paste Target.Select End Sub
[/vba] При изменении значений в ячейке вручную все отлично работает. При изменении значений ячейки формулами,событие не запускается. Попытался решить проблему с помощью события Worksheet_Calculate, но к сожалению что то делаю не так... Как правильно нужно преобразовать код,чтобы при измении в ячейках (через формулы), запускался код? Спасибо.miha_
Вы имеете ввиду данную формулу в макросе прописать или в ячейке? И если несложно подскажите как все таки должен выглядеть код Worksheet_Calculate спасибо
Вы имеете ввиду данную формулу в макросе прописать или в ячейке? И если несложно подскажите как все таки должен выглядеть код Worksheet_Calculate спасибоmiha_
Расшифруйте. Какие действия происходят в файле, после которых нужно пересчитать лист? Если сигнал - изменения на другом листе, то и отслеживать нужно события того листа
И вообще: обязательно нужно автоотслеживание? Запуск вручную после каких-то действий - не вариант?
Цитата
при изменении значений через ссылку
Расшифруйте. Какие действия происходят в файле, после которых нужно пересчитать лист? Если сигнал - изменения на другом листе, то и отслеживать нужно события того листа
И вообще: обязательно нужно автоотслеживание? Запуск вручную после каких-то действий - не вариант?vikttur
Сообщение отредактировал vikttur - Суббота, 12.01.2019, 21:35
на листе 'исходные значения'!A2 меняется значение (вручную (либо с помощью формул). Соответственно и на листе 'главная'!A2 меняется значение . Нужно чтобы всегда на листе главная картинка соответствовала значению в ячейке.
на листе 'исходные значения'!A2 меняется значение (вручную (либо с помощью формул). Соответственно и на листе 'главная'!A2 меняется значение . Нужно чтобы всегда на листе главная картинка соответствовала значению в ячейке.miha_
Если сигнал - изменения на другом листе, то и отслеживать нужно события того листа
Определите, на каком листе происходят изменения. Если на листе 'исходные значения' что-то меняете - код в модуль этого листа, если на этом листе данные тоже формулами подтягиваются - ищите источник изменений и процедуру пишите в модуль того листа. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Range("A2:A50"), Target) Is Nothing Then ...
[/vba] Т.е. реагирование там, где срабатывает событие изменения ячейки
Цитата
Если сигнал - изменения на другом листе, то и отслеживать нужно события того листа
Определите, на каком листе происходят изменения. Если на листе 'исходные значения' что-то меняете - код в модуль этого листа, если на этом листе данные тоже формулами подтягиваются - ищите источник изменений и процедуру пишите в модуль того листа. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Range("A2:A50"), Target) Is Nothing Then ...
[/vba] Т.е. реагирование там, где срабатывает событие изменения ячейкиvikttur
Сообщение отредактировал vikttur - Суббота, 12.01.2019, 21:59