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

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

Внимание: В приведенном выше коде:

A1 это ячейка, которая содержит конкретное значение, на основе которого вы хотите запустить макрос;

Случай с 10 по 50: Macro1: это означает, что если значение находится между 10 и 50, запустить Macro1;

Случай> 50: Macro2: это означает, что если значение больше 50, запустить Macro2.

Пожалуйста, измените названия макросов и критерии по своему усмотрению, и вы также можете добавить дополнительные критерии после Коробка скрипты.

2. Затем сохраните и закройте это окно кода, теперь, когда значение, которое вы вводите в ячейке A10, составляет от 50 до 1, будет запущен макрос 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 

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

Внимание: В приведенном выше коде "Удалить(Основной ключ) и Вставить»- это тексты ячеек, на основе которых вы хотите запускать макросы, и Macro1 и Macro2 макросы, которые вы хотите выполнить на основе текста. Пожалуйста, измените их по своему усмотрению.

2. Затем сохраните этот код и закройте окно, теперь при вводе текста «Удалить» в ячейку A1 срабатывает макрос 1, если вводится текст «Вставить», выполняется макрос 2.


Статьи по теме:

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

Как запустить макрос автоматически перед печатью в Excel?

Как запустить макрос на основе значения, выбранного из раскрывающегося списка в Excel?

Как запустить макрос, щелкнув гиперссылки в Excel?

Как запустить макрос, когда лист выбран из книги?


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

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

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

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

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (18)
Номинальный 5 из 5 · рейтинги 1
Этот комментарий был сведен к минимуму модератором на сайте
Привет, как насчет того, чтобы запустить макрос на основе двух ячеек? Одна ячейка основана на тексте, а другая ячейка имеет числовые значения? Затем вы захотите вызвать макрос, если две ячейки показывают именно то, что вы хотите, например «ДА» для первой ячейки и 1 для второй ячейки, если нет всплывающего окна с надписью «Не найдено».
Этот комментарий был сведен к минимуму модератором на сайте
Требование:
На основе выбора
Появится раскрывающийся список для следующих трех свойств того же размера, что и ниже.
И будет три производных ячейки, которые будут получены из ячеек (G46, G47 и G48).

Сценарий:
Если я выберу значение из раскрывающегося списка центров затрат, производная ячейка центра затрат (K46) должна быть заполнена значением, выбранным из раскрывающегося списка центров затрат (H46), а две другие производные ячейки (K47 и k48) должны стать пустыми.

Точно так же, если я выберу значение из раскрывающегося списка Менеджер бюджета, производная ячейка Менеджера бюджета должна быть заполнена значением, выбранным из раскрывающегося списка Менеджера бюджета (H47), а две другие производные ячейки (K45 и k48) должны стать пустыми.
Этот комментарий был сведен к минимуму модератором на сайте
Я работаю с анализом результатов. В этом случае данные в excel будут такими: Name, Sub name, Crade. Теперь я хочу найти все проходные или успешные номера кандидатов из результата. Как я могу это получить? Потому что у меня есть 6 разных предметов и их результаты на одном листе Excel. Если учащийся провалился по одному предмету, он не будет успешным учеником. Как убрать свое имя во всех темах.
Этот комментарий был сведен к минимуму модератором на сайте
Пожалуйста, исправьте код для одного и того же рабочего листа.
ПЕРВЫЙ КОД РАБОТАЕТ ОТЛИЧНО
Private Sub Worksheet_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

Пожалуйста, попробуйте, надеюсь, это поможет вам!
Этот комментарий был сведен к минимуму модератором на сайте
Привет,
Я люблю аппликацию этого макроса по коду. Le problème est que la cellule s'incrémente via une toupie et le code ne reconnais pas le change de valeur de la cellule.
Quand je saisie la valeur manuellement celà fonctionne Correction.

Merci d'Avance
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Жиль,
Вам следует вставить Кнопка прокрутки (управление 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 должны ввести «Да» или «Нет», и я бы хотел, чтобы он был, если набрал «Да», запустите макрос... Я пробовал много разных способов определения диапазона, но ничего не работает.

Sub worksheet_change (цель ByVal как диапазон)

Установить цель = диапазон ("T: T")
Если target.Value = "Да" Тогда
Вызовите Macro1
End If

End Sub

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

Может ли кто-нибудь помочь?

С уважением, Изабелла
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Вестергорд.
Вам может помочь следующий код VBA: (Примечание. Пожалуйста, измените имя Macro1 на собственное кодовое имя)
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 ()
Пожалуйста помоги

Private Sub Worksheet_Change (ByVal Target As Excel.Range)
Если Target.Cells.Count > 1, то выйдите из подпрограммы
Если IsNumeric(Target) And Target.Address = "$A$1" Тогда
Выберите Case Target.Value
Случай с 10 по 50: Macro1
Случай> 50: Macro2
End Select
End If
End Sub
Номинальный 5 из 5
Этот комментарий был сведен к минимуму модератором на сайте
Привет, ФГ,
Чтобы код работал в ячейках формулы, примените следующий код:
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. Ho un programmino in vba che basandosi su variazioni di prezzo di una cella (E1), collegata in DDE con una piattaforma di trade di borsa, fissa i prezzi: Massimo, Minimo, Apertura, Chiusura, per poi passare alla riga последовательно в базе a un intervallo Temporale impostato all'apertura del Foglio Elettronico. L'algoritmo да меня sviluppato фа си Че Нелле Colone: ​​"BH" и "BI" vengano visualizzati я prezzi ди acquisto e ди vendita, ма соло quando soddisfatte ле condizioni даты, altrimenti ле Celle не 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. Ho provato a inserire un codice "SoundMe()" trovato on-line, ma suona ogni volta che c'è un nuovo massimo o un nuovo minimo nella riga in cui il programma sta aggiornando i prezzi. Pensi че иль проблема си possa risolvere? Grazie per l'attenzione
Стефано
Этот комментарий был сведен к минимуму модератором на сайте
Доброе утро,
ho provato il listato che permette di richiamare 2 macro al cambio del valore di unacella, se quel cambio deriva da una funzione "se" non funziona, se digito i valori (vero o falso) funziona.

Приходите posso ovviare?
Eventualmente прийти potrei evitare ди utilizzare иль condizionale sulla Cella е далеко verificare аль listato се ла Cella че Deve далеко avviare ле макрос è compilata о Мено?

спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Доброе утро,
vorrei eseguire una macro quando una in una cella viene inserito un controllo "if" o se viene inserita una data e non un numero.

Ad esempio se nella cella A1 inserisco: If(B2=0;vero;falso) e la macro leggendo vero mi nasconde lo sheet2 altrimenti mi scopre la sheet 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 


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

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

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