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

 Як запустити макрос на основі значення комірки в Excel?

Припустимо, у моїй книзі є кілька макрокодів, і тепер я хочу запустити ці коди на основі значення комірки. У цій статті я розповім про кілька ситуацій, які можуть виникнути у вашій щоденній роботі під час використання Excel.

Запустити або запустити макрос, якщо значення комірки більше або менше, ніж певне значення з кодом VBA

Запустити або запустити макрос, якщо значення комірки дорівнює певному тексту з кодом VBA


стрілка синя права міхур Запустити або запустити макрос, якщо значення комірки більше або менше, ніж певне значення з кодом VBA

Наприклад, якщо значення в комірці A1 знаходиться між 10 і 50, запустіть macro1, а якщо значення більше 50, запустіть macro2. Щоб вирішити цю роботу в Excel, застосуйте такий код VBA.

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

Код VBA: Запустити макрос, якщо значення комірки більше або менше:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
    End If
End Sub

doc запустити макрос на основі значення комірки 1

примітки: У наведеному вище коді:

A1 це комірка, яка містить конкретне значення, на якому ви хочете запустити макрос;

Випадок 10 до 50: Макро1: це означає, що якщо значення між 10 і 50, запустіть Macro1;

Справа> 50: Macro2: це означає, що якщо значення більше 50, запустіть Macro2.

Будь ласка, змініть назви макросів та критерії цих тез відповідно до ваших потреб, а також ви можете додати більше критеріїв, слідуючи випадок сценарій

2. Потім збережіть і закрийте це вікно коду, тепер, коли введене значення знаходиться в діапазоні від 10 до 50 у комірці A1, буде активовано Macro1, якщо введене значення більше 50, виконується Macro2.


стрілка синя права міхур Запустити або запустити макрос, якщо значення комірки дорівнює певному тексту з кодом VBA

Якщо ви хочете запустити макрос на основі конкретного тексту в комірці, наприклад, запустити макрос1, якщо введено текст “Видалити”, і запустити макрос2, якщо введено текст “Вставити”. Наступний код може зробити вам послугу.

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

Код VBA: запускати макрос, якщо значення клітинки є певним текстом

Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "Delete" Then
 Call Macro1
End If
If target.Value = "Insert" Then
Call Macro2
End If
End Sub 

doc запустити макрос на основі значення комірки 2

примітки: У наведеному вище коді "видаляти"І"Insert- це тексти комірок, на основі яких ви хочете запускати макроси, та Макро1 і Макро2 - це макроси, які ви хочете виконати на основі тексту. Будь ласка, змініть їх на свої потреби.

2. Потім збережіть цей код і закрийте вікно, тепер, коли ви вводите текст «Видалити» в комірку А1, запускається макро1, якщо введено текст «Вставити», макро2 буде виконано.


Статті по темі:

Як запустити макрос, коли значення комірки змінюється в Excel?

Як запустити макрос автоматично перед друком у Excel?

Як запустити макрос на основі значення, вибраного зі спадного списку в Excel?

Як запустити макрос, клацнувши гіперпосилання в Excel?

Як запустити макрос, коли аркуш вибрано з книги?


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

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% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (19)
Оцінено 5 з 5 · рейтинги 1
Цей коментар був мінімізований модератором на сайті
Привіт, а якщо ви хочете запустити макрос на основі двох клітинок? Одна клітинка заснована на тексті, а інша клітинка має числові значення? Тоді ви захочете викликати макрос, якщо дві клітинки показують саме те, що ви хочете, наприклад «ТАК» для першої клітинки та 1 для другої клітинки, якщо ні, у спливаючому вікні з’явиться повідомлення «Не знайдено».
Цей коментар був мінімізований модератором на сайті
вимога:
На основі відбору
З’явиться спадний список для наступних трьох властивостей того самого розміру, як показано нижче.
І буде три похідні клітинки, які будуть отримані з клітинок (G46, G47 і G48)

Сценарій:
Якщо я вибираю значення зі спадного списку МВЗ, у похідну комірку МВЗ (K46) має бути заповнено значення, вибране зі спадного списку МВЗ (H46), а дві інші похідні клітинки (K47 і k48) мають стати порожніми.

Аналогічно, якщо я вибираю значення зі спадного списку Менеджера бюджету, осередок похідного Менеджера бюджету має бути заповнено значенням, вибраним зі спадного списку Менеджера бюджету (H47), а дві інші похідні клітинки (K45 і k48) мають стати порожніми.
Цей коментар був мінімізований модератором на сайті
Я працюю з аналізом результатів. У цьому випадку дані в Excel будуть виглядати так: Name, Sub name, Crade. Тепер я хочу знайти за результатами всі успішні або успішні номери кандидатів. Як я можу це отримати. Тому що я маю 6 різних предметів і їхні результати в одному аркуші Excel. Якщо учень зазнав невдачі з одного предмета, він не є успішним учнем. Як видалити їх назву з усіх предметів.
Цей коментар був мінімізований модератором на сайті
Будь ласка, виправте код для одного робочого аркуша.
ПЕРШИЙ КОД ПРАЦЮЄ ІДЕАЛЬНО
Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Якщо не перетинається(ціль, діапазон("D1")) то нічого
Виберіть діапазон випадків ("D1")
Випадок «0.5»: Половина
Випадок «1»: один
Випадок «1.25»: OneTwentyFive
End Select
End If
End Sub

ДРУГИЙ КОД НЕ ПРАЦЮЄ (виправте, будь ласка, наведене нижче)
Зміна приватного підпорядкування (ByVal Target As Range)
Якщо не перетинається(ціль, діапазон("D2")) то нічого
Виберіть діапазон випадків ("D2")
Справа «9.53»: дев’ять п’ять три
End Select
End If
End Sub
Цей коментар був мінімізований модератором на сайті
Olá, quero fazer o seguinte:
Na Celula A1, assim que ela estiver preenchida passe para a celula de baixo, no caso A2.
Eu uso um leitor de codigo de barras para cadastrar produtos, e ele lê os numeros automaticos, ai tenho que ficar apertando ENTER para ir para celula de baixo.

Спасибі!
Цей коментар був мінімізований модератором на сайті
Hola, una consulta, como se haría si por ejemplo dado un numero se pueda ejecutar las dos macros
Цей коментар був мінімізований модератором на сайті
Привіт, Густаво
Щоб вирішити вашу проблему, застосуйте наступний код:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        If Target.Value > 10 And Target.Value < 50 Then
         macro1
         macro2
        End If
    End If
End Sub

Будь ласка, спробуйте, сподіваюся, це допоможе вам!
Цей коментар був мінімізований модератором на сайті
Привіт,
je souhaiterais appliquer cette macro à mon code. Le problème est que la cellule s'incrémente via une toupie et le code ne reconnais pas le changement de valeur de la cellule.
Quand je saisie la valeur manuellement celà fonctionne correctement.

Merci d'avance
Цей коментар був мінімізований модератором на сайті
Привіт, Жиль,
Ви повинні вставити a Кнопка обертання (керування ActiveX) спочатку, а потім клацніть правою кнопкою миші, виберіть Переглянути код, потім скопіюйте та вставте наведений нижче код між існуючими сценаріями,
Dim xWSh As Worksheet
Dim xOL As OLEObject
Dim xRg As Range
Set xWSh = Application.ActiveSheet
Set xOL = xWSh.OLEObjects("SpinButton1") 'The name of the spin button
Set xRg = xWSh.Range(xOL.LinkedCell)
If IsNumeric(xRg) And xRg.Address = "$A$1" Then
        Select Case xRg.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
End If

https://www.extendoffice.com/images/stories/comments/comment-skyyang/DOC-RUN-CODE.png

Будь ласка, спробуйте, сподіваюся, це допоможе вам!
Цей коментар був мінімізований модератором на сайті
Привіт!

Я новачок у VBA, і я спробував це рішення для аркуша Excel, який у мене є. По суті, я просто маю довгий список у Excel, де в стовпці T потрібно ввести «Так» або «Ні», і я хотів би, щоб, якщо введено «Так», запустити макрос... Я пробував багато різних способів визначення діапазону, але нічого не працює.

Subworksheet_change(ByVal target As Range)

Установити ціль = Діапазон ("T:T")
Якщо target.Value = "Так" Тоді
Виклик Macro1
End If

End Sub

Я висвітлюю цю проблему (невідповідність типу помилки під час виконання): If target.Value = "Yes" Then

Хто-небудь може допомогти?

З повагою, Ізабелла
Цей коментар був мінімізований модератором на сайті
Привіт, Вестергаард
Можливо, такий код VBA допоможе вам: (Примітка: будь ласка, змініть ім’я файлу Макро1 під власну кодову назву)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("T:T")) Is Nothing Then
If Target.Value = "Yes" Then
      Call Macro1
    End If
    End If
End Sub

Будь ласка, спробуйте, сподіваюся, це допоможе вам!
Цей коментар був мінімізований модератором на сайті
Велике спасибі! Тепер це працює :)
Цей коментар був мінімізований модератором на сайті
привіт,
Як змінити цей код на основі результату обчислення формули клітинки A1
Sub Worksheet_Calculate()
Будь ласка, допоможіть

Приватний допоміжний робочий лист_Зміна (за значенням цілі як Excel. Діапазон)
Якщо Target.Cells.Count > 1, то вийдіть із Sub
Якщо IsNumeric(Target) і Target.Address = "$A$1" Тоді
Виберіть Цільове значення
Випадок 10 до 50: Макро1
Справа> 50: Macro2
End Select
End If
End Sub
Оцінено 5 з 5
Цей коментар був мінімізований модератором на сайті
Привіт, FG,
Щоб код працював у комірках формули, застосуйте наведений нижче код:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    ElseIf (Not Intersect(Range("$A$1"), Target.Dependents) Is Nothing) Then
        Set Rg = Intersect(Range("$A$1"), Target.Dependents)(1)
        Select Case Rg.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    End If
End Sub

Будь ласка, спробуйте, сподіваюся, це допоможе вам!
Цей коментар був мінімізований модератором на сайті
Чао Скайян. Spero tu possa aiutarmi. У програмі VBA є базові варіанти ціни (E1), колега в DDE з торговою формою борсу, розділ і ціна: Massimo, Minimo, Apertura, Chiusura, per poi passare alla riga successiva in base a un intervallo temporale impostato all'apertura del foglio elettronico. L'algoritmo da me sviluppato fa si che nelle colonne: "BH" і "BI" vengano visualizzati i prezzi di acquisto e di vendita, ma solo quando soddisfatte le condizioni date, altrimenti le celle non restituiscono nessun valore. Quello di cui avrei bisogno è di un avviso sonoro .wav che mi avvisi quando viene restituito un valore, di acquisto o di vendita, in modo di non dover fissare lo schermo per 14 ore al giorno. Якщо вставити код "SoundMe()" в режимі он-лайн, ви побачите нове масове або нове мінімальне значення в риґі в цій програмі, яка змінить ціну. Pensi che il problema si possa risolvere? Grazie per l'attenzione
Стефано
Цей коментар був мінімізований модератором на сайті
Здравствуйте,
ho provato il listato che permette di richiamare 2 macro al cambio del valore di una cella, se quel cambio deriva da una funzione "se" non funziona, se digito i valori (vero or false) funziona.

Come posso ovviare?
Eventualmente come potrei evitare di utilizzare il condizionale sulla cella e far verificare al listeto se la cella che deve far avviare le macro è compilata o meno?

Grazie
Цей коментар був мінімізований модератором на сайті
Здравствуйте,
vorrei eseguire una macro quando una in una cella viene inserito un controllo "if" or se viene inserita una data e non un numero.

Наприклад, у клітинку A1 вставлено наступне: If(B2=0;vero;falso) і те, що макрос міститься в аркуші2, змінено на аркуш 2.

Приходь, як проїдеш?
Riesco a far funzionare il tutto se inserisco in A1 manualmente un valore (in questo caso vero o falso).

Спасибі
Цей коментар був мінімізований модератором на сайті
Привіт, Карло,
Насправді другий код у цій статті може вирішити вашу проблему.
примітки: вам просто потрібно змінити текст на True і False у коді та змінити назву коду на власну.
Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "True" Then
 Call Macro1
End If
If target.Value = "False" Then
Call Macro2
End If
End Sub 


Спробуйте ще раз, дякую!
Цей коментар був мінімізований модератором на сайті
Привіт

ich bräuchte dafür ein Makro,

ich kann dieses Problem nicht alleine lösen, wäre super wenn mir jemand helfen könnte.

У M1 натиснуто заголовок 5, натиснувши A83 на A683 на заголовок 5, вибравши B A111 заголовок 5, потім C111 + 1 (якщо в C111 23 стовпці і 24 стовпці). Таким чином, коли в A444 є 5 шт., тоді як C444 + 1 (якщо C444 = 99 і 100).
Immer wenn der Wert mit M1 übereinstimmt, dann soll diese Zelle in Spalte C immer wieder + 1 zählen. Також 23 +1 і 24 + 1 і 25 +1 usw usw.


Vielleicht kann mir da jemand helfen,

Дякую заздалегідь.

Л. Г. Стфан
There are no comments posted here yet

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

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