Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Посетитель 24.01.2025 от 24 января 2025, 10:20

Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Посетитель 24.01.2025 от 24 января 2025, 10:20
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_Change на Worksheet_Calculate()
Отправлено: Администратор от 24 января 2025, 10:23
Событие Worksheet_Calculate() реагирует только на формулы. Вы это знаете?
Если пользователь будет вносить изменения в ячейку, то событие Worksheet_Calculate() не запустится.
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Посетитель 24.01.2025 от 24 января 2025, 10:33
Вот я и пытаюсь сделать что бы то что написано после Worksheet_Change выполнялось и не получается, если меняем Worksheet_Change на  Worksheet_Calculate() то дальше не работает
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Администратор от 24 января 2025, 10:36
Вам нужно, чтобы запускался макрос в каких случаях:
1) когда пересчитываются формулы
2) когда пользователь вносит изменения в ячейки?
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Посетитель 24.01.2025 от 24 января 2025, 10:45
Когда пользователь вводит данные на другом листе в этом листе формула ВПР(E7;Январь!B$2:D$21;3;0) плучает эти данные и в соседней ячейке данный макрос ставит дату
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Администратор от 24 января 2025, 10:48
Никак не сделать с помощью Worksheet_Calculate(), т.к. не известно, в какой ячейке произошёл пересчёт формул.

Если использовать Worksheet_Calculate(), вам придётся писать макрос, который будет все данные обрабатывать, а не только те, где реально произошло изменение.
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Посетитель 24.01.2025 от 24 января 2025, 10:53
Вот это то и не получается сделать
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Администратор от 24 января 2025, 11:00
Написал вам письмо на почту. Написал именно на почту, а не на форум.
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Посетитель 24.01.2025 от 24 января 2025, 11:08
Отправил по почте
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Администратор от 24 января 2025, 11:11
письма нет
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Посетитель 24.01.2025 от 24 января 2025, 11:12
Undelivered Mail Returned to Sender (Письмо не может быть доставлено и возвращено отправителю)
не хочет почемуто рамблер отправлять
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Посетитель 24.01.2025 от 24 января 2025, 11:16
Вроде ушло
Название: Заменить Worksheet_Change на Worksheet_Calculate()
Отправлено: Администратор от 24 января 2025, 11:25
Ответил вам на почту.