Заменить Worksheet_Change на Worksheet_Calculate()

Автор Посетитель 24.01.2025, 24 января 2025, 10:20

Посетитель 24.01.2025

Private Sub Worksheet_Change(ByVal Target As Range)
  For Each cell In Target
      If Not Intersect(cell, Range("R7:AC10000")) Is Nothing Then
        If IsEmpty(Target) Then
            Else
            With Target(1, 0)
a = Target.Row
b = 10
          Sheets("Свод").Cells(a, b) = Format(Now, "dd.mm.yyyy")
                End With
            End If
      End If
    Next cell
End Sub
Как вышеизложенное исполнить с  Worksheet_Calculate()
поскольку при изменении по ссылке формулы Worksheet_Change не работает

Администратор

Событие Worksheet_Calculate() реагирует только на формулы. Вы это знаете?
Если пользователь будет вносить изменения в ячейку, то событие Worksheet_Calculate() не запустится.

Посетитель 24.01.2025

Вот я и пытаюсь сделать что бы то что написано после Worksheet_Change выполнялось и не получается, если меняем Worksheet_Change на  Worksheet_Calculate() то дальше не работает

Администратор

Вам нужно, чтобы запускался макрос в каких случаях:
1) когда пересчитываются формулы
2) когда пользователь вносит изменения в ячейки?

Посетитель 24.01.2025

Когда пользователь вводит данные на другом листе в этом листе формула ВПР(E7;Январь!B$2:D$21;3;0) плучает эти данные и в соседней ячейке данный макрос ставит дату

Администратор

Никак не сделать с помощью Worksheet_Calculate(), т.к. не известно, в какой ячейке произошёл пересчёт формул.

Если использовать Worksheet_Calculate(), вам придётся писать макрос, который будет все данные обрабатывать, а не только те, где реально произошло изменение.

Посетитель 24.01.2025

Вот это то и не получается сделать

Администратор

Написал вам письмо на почту. Написал именно на почту, а не на форум.

Посетитель 24.01.2025


Администратор


Посетитель 24.01.2025

Undelivered Mail Returned to Sender (Письмо не может быть доставлено и возвращено отправителю)
не хочет почемуто рамблер отправлять

Посетитель 24.01.2025


Администратор