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 це діапазон клітинок формул, які ви хочете використовувати ,maco1 - це назва макросу, який ви хочете запустити автоматично. Будь ласка, змініть це на свої потреби.

2. Потім збережіть і закрийте це вікно коду, тепер, коли дані в діапазоні A2: B8 змінюються, щоб спричинити зміну результату формули, ваш конкретний код макросу запускається відразу.


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

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

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (10)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Дуже дякую! Це мені справді допомогло.
Чи є спосіб отримати адресу зміненої комірки (за допомогою формули, тобто стовпця C у цьому прикладі).
Завдяки.
Цей коментар був мінімізований модератором на сайті
Який сенс умови? Він завжди повертатиме true...іншими словами: він працюватиме без нього. Це також виконується, коли будь-які клітинки на аркуші змінюють значення.
Цей коментар був мінімізований модератором на сайті
Отже, як називається мій макрос. де я можу знайти назву свого макросу?
Цей коментар був мінімізований модератором на сайті
Привіт, Ченк!
Ім’я макросу — це код макросу, який ви вставили у файл Excel, і вам просто потрібно змінити макрос1 у наведеному вище коді на свій власний.
Наприклад, я вставляю сюди код, а ім’я макросу: ColorCompanyDuplicates

Sub ColorCompanyDuplicates()
'Оновлення Extendoffice 20160704
Dim xRg As Range
Dim xTxt як рядок
Dim xCell As Range
Dim xChar як рядок
Dim xCellPre як діапазон
Dim xCIndex As Long
Колекція Dim xCol As
Dim I As Long
On Error Resume Next
Якщо ActiveWindow.RangeSelection.Count > 1 Тоді
xTxt = ActiveWindow.RangeSelection.AddressLocal
Ще
xTxt = ActiveSheet.UsedRange.AddressLocal
End If
Встановіть xRg = Application.InputBox("будь ласка, виберіть діапазон даних:", "Kutools для Excel", xTxt, , , , , 8)
Якщо xRg — нічого, вийдіть із Sub
xCIndex = 2
Встановіть xCol = Нова колекція
Для кожного xCell In xRg
On Error Resume Next
xCol.Додати xCell, xCell.Text
Якщо Err.Number = 457 Тоді
xCIndex = xCIndex + 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 для Excel"
Exit Sub
End If
При помилці GoTo 0
Далі
End Sub
Цей коментар був мінімізований модератором на сайті
на жаль, це не працює, це працює, якщо я вставлю дані вручну. але я хочу працювати автоматично, оскільки мої дані оновлюються за допомогою Rand calcaulate
Цей коментар був мінімізований модератором на сайті
"Встановити Xrg = Діапазон ("C2:C8")
Якщо не перетинається(Xrg, діапазон("C2:C8")) - це нічого, то"
ця умова зустрічається ЗАВЖДИ....
Мати сенс ???
Або я щось не зрозумів?
Цей коментар був мінімізований модератором на сайті
Правильно, ви вирішили цю проблему, і не могли б ви поділитися зі мною, будь ласка?
Цей коментар був мінімізований модератором на сайті
Гей, хлопці,
Я використав наступний код для цієї проблеми, сподіваюся, що він комусь допоможе:

Приватний допоміжний аркуш_обчислення()
Статичне старе значення
Якщо Range("MyNamedRange") <> oldValue Then
Код тут
oldValue = Діапазон("MyNamedRange").Значення
End If
End Sub
Цей коментар був мінімізований модератором на сайті
Гей, хлопці,
Нижче наведено код, і я хочу заблокувати комірки A2 і A3 після того, як комірка A1 (A1 = B1+C1) зміниться в результатах зміни B1 або C1 або обох. Але це не працює. Чи може хтось допомогти з цим?

Приватний допоміжний аркуш_обчислення()

Dim sPass
sPass = "123"
Dim rng Як ​​дальність
Установити rng = [A2:A3]
If Not Intersect(rng, [A1]) Is Nothing Then
За допомогою ActiveSheet
.Зняти захист пароля:=sPass
.Cells.Locked = False
Статичне старе значення
If Range("A1") <> oldValue Then
rng.Locked = True
.Захистіть пароль:=sPass
oldValue = Range("A1").Значення

End If
Кінець з

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

Я знаю, що це стара тема, але як поєднати цей метод обчислення з цим: https://www.extendoffice.com/documents/excel/1895-excel-record-date-and-time-when-cell-changes.html?

Мета полягає в тому, щоб записати дату в наступну клітинку кожного разу, коли обчислені значення змінюються для кожної клітинки в стовпці.

З повагою,
Джеймс
There are no comments posted here yet

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL