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

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

Работая с Microsoft Excel, вы можете знать, как запускать определенный макрос с помощью командной кнопки. Но знаете ли вы, как запустить макрос, просто щелкнув определенную ячейку на листе? В этой статье будет подробно описан метод запуска макроса при нажатии на определенную ячейку.

Запуск или запуск макроса, щелкнув определенную ячейку с кодом VBA


Запуск или запуск макроса, щелкнув определенную ячейку с кодом VBA

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

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

2. в Microsoft Visual Basic для приложений в окне кода скопируйте и вставьте приведенный ниже сценарий VBA.

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

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("D4")) Is Nothing Then
            Call MyMacro
        End If
    End If
End Sub

Заметки:

1. В коде D4 - это ячейка, по которой вы щелкаете, чтобы запустить макрос;

2. Пожалуйста, замените кодовое имя МойМакрос с макросом, который вы запустите на листе. Смотрите скриншот:

3. нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

С этого момента при нажатии на ячейку D4 на текущем листе ваш указанный макрос будет запускаться немедленно.


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


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

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

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

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

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (37)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Запустить или запустить макрос, щелкнув определенную ячейку с кодом VBA, не удалось заставить это работать. Я пробовал это по-разному, но никогда не достигал того, что было обещано.
Этот комментарий был сведен к минимуму модератором на сайте
Этот код будет работать, только если вы поместите его в модуль «ThisWorkbook». Не работает на общем модуле.
workbookname> Объекты Microsoft Excel> ThisWorkbook.
Этот комментарий был сведен к минимуму модератором на сайте
Этот код будет работать с модулем кода рабочего листа. Вам нужно щелкнуть правой кнопкой мыши вкладку листа и нажать «Просмотреть код». Это откроет модуль кода только для этого рабочего листа. Затем вставьте указанный код.
Этот комментарий был сведен к минимуму модератором на сайте
Если вы хотите иметь несколько макросов, ячейки с разными макросами на одной странице - возможно ли это?
Этот комментарий был сведен к минимуму модератором на сайте
Дорогой Саймон,
Приведенный ниже сценарий VBA может помочь вам запускать разные макросы, щелкая ячейки на той же странице.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Если Цель.Количество = 1 Тогда
Если Not Intersect (Target, Range ("D4")) ничего не значит, тогда вызовите MyMacro1
Если Not Intersect (Target, Range ("D8")) ничего не значит, тогда вызовите MyMacro2
Если Not Intersect (Target, Range ("D10")) ничего не значит, тогда вызовите MyMacro3
End If
End Sub

Пожалуйста, добавьте строку «Если не пересекаться (цель, диапазон («D10»)) ничего не значит, тогда вызовите MyMacro», чтобы запустить больше макросов, щелкнув ячейку. И измените имена ячеек и макросов в коде в зависимости от ваших потребностей.
Этот комментарий был сведен к минимуму модератором на сайте
Он не работает в моем Excel. Код правильный?
Этот комментарий был сведен к минимуму модератором на сайте
Привет Камила,
Приносим извинения за доставленные неудобства. Попробуйте приведенный ниже код VBA.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRgArr как вариант
Dim xFunArr как вариант
Dim xFNum как целое число
Dim xStr как строка
Dim xRg как диапазон
xRgArr = Array("A1", "D1", "C1") 'Ячейки, используемые для запуска макроса
xFunArr = Array("Кодовое имя1", "Кодовое имя2", "Кодовое имя3") 'Соответствующие кодовые имена
Если Выборка.Количество = 1 Тогда
Для xFNum = 0 в UBound(xRgArr)
Установить xRg = ActiveSheet.Range(xRgArr(xFNum))
Если Not Intersect(Target, xRg) ничто, то
xStr = xFunArr(xFNum)
Приложение. Выполнить xStr
End If
Далее
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Это сработало отлично и сэкономило мне массу времени - спасибо, что поделились своими знаниями - очень ценю!
Этот комментарий был сведен к минимуму модератором на сайте
Я рад, что смог помочь.
Этот комментарий был сведен к минимуму модератором на сайте
Отлично. Работает хорошо... Спасибо....
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуй.

У меня это работает хорошо, но я хотел бы добавить условие для запуска макроса. Я хочу запускать макрос только в том случае, если ячейка рядом с ячейкой, на которую я нажимаю, содержит определенное значение.
Например, когда я нажимаю на ячейку F6, я хочу, чтобы макрос запускался, если ячейка E6 содержит «x», но если ячейка E6 пуста, макрос не должен запускаться.
Надеюсь, это имеет смысл.
Спасибо

вот мой исходный код без условия:


Вариант Явный

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Если Выборка.Количество = 1 Тогда
Если Не Пересекать(Цель, Диапазон("F6:F18")) Ничего, Тогда
Дата звонкаВыбрать
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Следующий код VBA может помочь вам решить проблему. Пожалуйста, попробуйте и спасибо за ваш комментарий.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg как диапазон
Если Не Пересекать(Цель, Диапазон("F6:F18")) Ничего, Тогда
Установите xRg = ActiveSheet.Cells(Target.Row, Target.Column - 1)
Если (xRg.Value = "") или (xRg.Value <> "X"), то выйдите из подпрограммы
Звонок по дате выбора
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо, а как насчет объединенных ячеек?
Этот комментарий был сведен к минимуму модератором на сайте
Привет Альбер,
Код не работает для объединенных ячеек.
Этот комментарий был сведен к минимуму модератором на сайте
я использую OpenOffice и щелкнул правой кнопкой мыши вкладку листа и выбрал события, а затем выбрал этот макрос из MyMacros. Однако я получаю сообщение об ошибке в следующей строке: If Selection.Count = 1 Then >>> «Основная ошибка времени выполнения, переменная не определена...
Этот комментарий был сведен к минимуму модератором на сайте
Привет Джеймс,
Код работает только для Microsoft Office Excel. Спасибо за ваш комментарий.
Этот комментарий был сведен к минимуму модератором на сайте
Мой полный код в этом макросе:


Private Sub Worksheet_SelectionChange (ByVal Target As Range)

Dim val As String
REM знач = Диапазон ("A2"). Значение

Если Выборка.Количество = 1 Тогда
Если Не Пересекать(Цель, Диапазон("D24")) Ничего, Тогда
REM Вызов MyMacro
val = Диапазон ("D24"). Значение
Диапазон ("B27"). Значение = знач.
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Эта тема очень интересна и я заинтересован, но не знаю, где найти, спасибо, что вы создали эту тему, надеюсь, что все мне помогут. http://run-3.online
Этот комментарий был сведен к минимуму модератором на сайте
Excel 2002 (XP): если книга открыта путем выбора «Файл» и нажатия «Shift», она отключает макросы на этом листе, проблема в том, что если я выберу «Инструменты> Макрос> Макросы ...», я могу запустить макрос все таки как решить?
Этот комментарий был сведен к минимуму модератором на сайте
Привет Роджер,
Мы не тестировали код в Excel 2002 (XP). Почему бы не использовать более новую версию Microsoft Office? Это будет легче для вашей работы.
Этот комментарий был сведен к минимуму модератором на сайте
Тот же результат в 2010 г.
Этот комментарий был сведен к минимуму модератором на сайте
Почему бы просто не использовать какую-нибудь более новую версию, так будет проще
https://games.lol/racing/
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо, а как насчет нескольких ячеек для нажатия для запуска нескольких макросов.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Попробуйте приведенный ниже код VBA.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRgArr как вариант
Dim xFunArr как вариант
Dim xFNum как целое число
Dim xStr как строка
Dim xRg как диапазон
xRgArr = Array("A1", "D1", "C1") 'Ячейки, используемые для запуска макроса
xFunArr = Array("Кодовое имя1", "Кодовое имя2", "Кодовое имя3") 'Соответствующие кодовые имена
Если Выборка.Количество = 1 Тогда
Для xFNum = 0 в UBound(xRgArr)
Установить xRg = ActiveSheet.Range(xRgArr(xFNum))
Если Not Intersect(Target, xRg) ничто, то
xStr = xFunArr(xFNum)
Приложение. Выполнить xStr
End If
Далее
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за этот код. Можно ли заставить это работать, щелкнув ячейку, которая объединена с другими?
Этот комментарий был сведен к минимуму модератором на сайте
Привет М. Симондс,
Код в этой статье может оказать вам услугу: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Спасибо за ваш комментарий.
Этот комментарий был сведен к минимуму модератором на сайте
привет, я пытался использовать этот код для запуска макроса вставки, но не могу понять, как правильно вставить макрос.

вот мой оригинальный Марко

Под вставить ()
'
' Вставить макрос
'

'
Range ( "B34"). Выберите
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
Ложь, NoHTMLFormatting:=True
End Sub


любая помощь приветствуется
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, спасибо за интересную тему. Что если, например, я хочу щелкнуть D4 на Листе 1 и увидеть результат макроса на Листе 2! F3.
Этот комментарий был сведен к минимуму модератором на сайте
Больше не работает.
Worksheet_SelectionChange по умолчанию не существует. Это означает, что вы не можете использовать это для запуска макроса.

Единственная встроенная подпрограмма, которую вы можете использовать, указана в раскрывающемся списке «Рабочая книга», поэтому...

Единственное, что вы можете сделать, это использовать Workbook_SheetBeforeDoubleClick. Но он войдет в режим редактирования (все еще не имеет большого значения).
Этот комментарий был сведен к минимуму модератором на сайте
Привет, CodeKiller.Worksheet_SelectionChange существует только в редакторе Sheet(Code). Щелкните правой кнопкой мыши вкладку листа и выберите «Просмотреть код», чтобы активировать редактор листа (кода).
Этот комментарий был сведен к минимуму модератором на сайте
Важно подчеркнуть, что макрос выполняется только на рабочем листе.
Те из нас, кто использует обычный визуальный базовый редактор, часто в конечном итоге хранят макросы в других местах, а не на текущем рабочем листе.
Ни один из этих кодов не будет работать в этой ситуации.
Я считаю, что этот код намного проще, и он работает очень хорошо для меня: 

Private Sub Worksheet_SelectionChange (ByVal Target As Excel.Range)
Если Не Пересекать(Диапазон("d1"), Цель) Ничего, Тогда
Позвони аа
End If
End Sub
Sub aa() 'поместите сюда свой код
Диапазон("D1").Выбрать
Selection.Copy
Диапазон("F1").Выбрать
ActiveSheet.PasteEnd Sub
Джон Уэллс
jnw.wells@gmail.com
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Джон Уэллс, спасибо, что поделились.
Этот комментарий был сведен к минимуму модератором на сайте
Для тех, кто хочет, чтобы это работало для объединенных ячеек, самый быстрый и грязный способ — обновить строку 2 следующим образом:
Опция явная

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Если Выборка.Количество > 0 Тогда
Если Не Пересекать(Цель, Диапазон("D4")) Ничего, Тогда
Вызов MyMacro
End If
End If
End SubSelection.Count используется для определения того, был ли сделан выбор перед выполнением оставшегося макроса. Если ваш выбор состоит из четырех объединенных ячеек, Selection.Count будет равен 4, а оставшийся код никогда не будет выполнен. Вы также можете изменить строку 2 на точное количество объединенных ячеек, но это вызовет проблемы, если вы объединить дополнительные ячейки.
Этот комментарий был сведен к минимуму модератором на сайте
Грандиозо! Grazie, эра una vita che sognavo di poterlo fare, se può essere utile a qualcuno avendo necessità di eseguire più codici su piùcelle per
aumentare il numero di opzioni basta aggiungere le nuove istruzionisempre sotto la stessa optionexplicit altrimente ci viene detto che il riferimento al
лист не однозначный. Mi spiego meglio manifestemente su come ho adattato il codice con il mio esempio;

Вариант Явный
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Если Выборка.Количество = 1 Тогда
Если Не пересекаться(Цель, Диапазон("Y64")) Ничего, Тогда
Диапазон("Y65:Y78").Выбрать
Диапазон ("Y65"). Активировать
Selection.ClearContents
Диапазон("Y65").Выбрать
End If
Если Не Пересечение(Цель, Диапазон("A33")) Ничего, Тогда
Диапазон ("A33"). Выбрать
Selection.Copy
ActiveWindow.WindowState = xlMinimized
ОтправитьКлючи "^v"
SendKeys "{BACKSPACE}"
End If
End If
End Sub

Grazie ancora è stata un'autentica meraviglia!

максимальная
Этот комментарий был сведен к минимуму модератором на сайте
У меня не было никаких ожиданий относительно этого титула, но чем больше я был удивлен. Автор проделал большую работу. Я потратил несколько минут на чтение и проверку фактов. Все очень четко и понятно. Мне нравятся посты, которые восполняют пробелы в ваших знаниях. Этот из разряда.
Этот комментарий был сведен к минимуму модератором на сайте
Привет,

No encuentro la manera de hacer lo que necesito. Espero де Верас Que меня podáis ayudar.
Necesito que se lance una MACRO al hacer clic en una celda, pero no sé en qué celda va a ser, no lo puedo comparar con (si se ha seleccionado la celda A3, por ejemplo, que se lance la accion) porque por funcionalidades del fichero, las celdas se van a mover de sitio (se han podido insertar, mas o menos filas encima). Necesitaría poder saber Qué celda es la que se ha seleccionado.
Hay alguna manera de poder hacer eso?
Большое спасибо заранее.
Этот комментарий был сведен к минимуму модератором на сайте
Привет Хола,
Адрес ячейки постоянный. Все, что вы можете переместить, это значение ячейки.
Ячейка, указанная вами в коде VBA, по-прежнему является ячейкой, запускающей указанный код VBA.
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

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

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