Note: The other languages of the website are Google-translated. Back to English

 Как автоматически запускать макрос при изменении результата формулы ячейки?

Предположим, у меня есть список формул, основанный на данных в столбцах A и B, как показано на следующем снимке экрана. Теперь я хочу автоматически запускать определенный код макроса, когда результат формулы изменяется с изменением его относительных ячеек. Есть ли хорошая идея решить эту задачу в Excel?

Автоматический запуск макроса при изменении результата формулы ячейки с кодом VBA


Автоматический запуск макроса при изменении результата формулы ячейки с кодом VBA

Следующий код VBA может помочь вам автоматически выполнить определенный код при изменении ячейки результата формулы, сделайте следующее:

1. Щелкните правой кнопкой мыши вкладку листа, которую вы хотите использовать, а затем выберите Просмотреть код из контекстного меню в открывшемся Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:

Код VBA: автоматически запускать макрос при изменении результата формулы ячейки:

Private Sub Worksheet_Calculate()
'Updateby Extendoffice
    Dim Xrg As Range
    Set Xrg = Range("C2:C8")
    If Not Intersect(Xrg, Range("C2:C8")) Is Nothing Then
    Macro1
    End If
End Sub

Внимание: В приведенном выше коде C2: C8 это диапазон ячеек формулы, который вы хотите использовать ,мако1 - это имя макроса, который нужно запускать автоматически. Пожалуйста, измените его по своему усмотрению.

2. Затем сохраните и закройте это окно кода, теперь, когда данные в диапазоне A2: B8 изменяются, чтобы вызвать изменение результата формулы, ваш конкретный код макроса запускается сразу.


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (10)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Большое спасибо! Это действительно помогло мне.
Есть ли способ получить адрес измененной ячейки (с формулой, т.е. столбцом C в этом примере).
Благодарю.
Этот комментарий был сведен к минимуму модератором на сайте
В чем смысл условия? Он всегда будет возвращать true... другими словами: он будет работать без него. Это также выполняется всякий раз, когда значения любых ячеек на листе изменяются.
Этот комментарий был сведен к минимуму модератором на сайте
Итак, как называется мой макрос. где я могу найти имя моего макроса?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Сенк,
Имя макроса — это код макроса, который вы вставили в файл Excel, и вам просто нужно изменить Macro1 в приведенном выше коде на свой собственный.
Например, я вставляю сюда код, а имя макроса: ColorCompanyDuplicates

Sub ColorCompanyDuplicates ()
'Обновить Extendoffice 20160704
Dim xRg как диапазон
Dim xTxt как строка
Dim xCell как диапазон
Dim xChar как строка
Dim xCellPre как диапазон
Dim xCIndex As Long
Dim xCol как коллекция
Дим я пока
On Error Resume Next
Если ActiveWindow.RangeSelection.Count > 1 Тогда
xTxt = ActiveWindow.RangeSelection.AddressLocal
Еще
xTxt = ActiveSheet.UsedRange.AddressLocal
End If
Установите xRg = Application.InputBox («пожалуйста, выберите диапазон данных:», «Kutools for Excel», xTxt, , , , , 8)
Если xRg ничего не значит, выйдите из Sub
хCИндекс = 2
Установите xCol = Новая коллекция
Для каждой xCell в xRg
On Error Resume Next
xCol.Добавить xCell, xCell.Text
Если Номер Ошибки = 457 Тогда
хСИндекс = хСИндекс + 1
Установить xCellPre = xCol(xCell.Text)
Если xCellPre.Interior.ColorIndex = xlNone Тогда xCellPre.Interior.ColorIndex = xCIndex
xCell.Interior.ColorIndex = xCellPre.Interior.ColorIndex
ElseIf Err.Number = 9 Тогда
MsgBox «Слишком много компаний-дубликатов!», vbCritical, «Kutools for Excel»
Exit Sub
End If
По ошибке GoTo 0
Далее
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
извините, это не работает, это работает, если я ввожу данные вручную. но я хочу, чтобы это работало автоматически, потому что мои данные обновляются с помощью rand calcaulate
Этот комментарий был сведен к минимуму модератором на сайте
«Установить Xrg = диапазон («C2: C8»)
If Not Intersect(Xrg, Range("C2:C8")) Is Nothing Then"
это состояние встречается ВСЕГДА....
Есть смысл???
Или я чего-то не понял?
Этот комментарий был сведен к минимуму модератором на сайте
Правильно, вы решили эту проблему, и не могли бы вы поделиться для меня, пожалуйста?
Этот комментарий был сведен к минимуму модератором на сайте
Эй, ребята,
Я использовал следующий код для этой проблемы, надеюсь, что это кому-то поможет:

Private Sub Worksheet_Calculate ()
Статическое старое значение
Если Диапазон("MyNamedRange") <> oldValue Тогда
КодЗдесь
oldValue = Диапазон ("MyNamedRange"). Значение
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Эй, ребята,
Ниже приведен код, и я хочу заблокировать ячейки A2 и A3 после того, как ячейка A1 (A1 = B1 + C1) изменится в результате изменения либо B1, либо C1, либо обоих. Но это не работает. Может ли кто-нибудь помочь с этим, пожалуйста?

Private Sub Worksheet_Calculate ()

Дим Пасс
спасс = "123"
Dim rng As Range
Установить кольцо = [A2:A3]
Если Not Intersect(rng, [A1]) равно ничего, то
С ActiveSheet
.Снять защиту пароля:=sPass
.Cells.Locked = Ложь
Статическое старое значение
Если Диапазон("A1") <> староеЗначение Тогда
rng.Locked = Истина
.Защитить пароль:=sPass
староеЗначение = Диапазон("A1").Значение

End If
Конец с

End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Привет команде,

Я знаю, что это старая тема, но как совместить этот метод вычисления и это: https://www.extendoffice.com/documents/excel/1895-excel-record-date-and-time-when-cell-changes.html?

Цель состоит в том, чтобы записывать дату в следующую ячейку каждый раз, когда расчетные значения изменяются для каждой ячейки в столбце.

С Уважением,
Джеймс
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL