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 для 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% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (37)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Запустити або запустити макрос, натиснувши певну клітинку з кодом VBA, не вдалося змусити це працювати. Я пробував це багатьма різними способами, але він так і не досяг того, що було обіцяно.
Цей коментар був мінімізований модератором на сайті
Цей код працюватиме лише в тому випадку, якщо ви розмістите його в модулі «ThisWorkbook». Він не працює на загальному модулі.
назва робочої книги > Об'єкти Microsoft Excel > Ця книга.
Цей коментар був мінімізований модератором на сайті
Цей код працюватиме в модулі коду робочого аркуша. Вам потрібно клацнути правою кнопкою миші вкладку аркуша та натиснути «Переглянути код». Це відкриє модуль коду лише для цього аркуша. Потім вставте згаданий код.
Цей коментар був мінімізований модератором на сайті
Якщо ви хочете мати кілька макросів, осередки, які запускають різні макроси на одній сторінці - це можливо?
Цей коментар був мінімізований модератором на сайті
Шановний Саймон,
Наведений нижче сценарій VBA може допомогти вам запускати різні макроси, натискаючи клітинки на тій самій сторінці.

Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Якщо Target.Count = 1 Тоді
Якщо Not Intersect(Target, Range("D4")) Нічого, то викличте MyMacro1
Якщо Not Intersect(Target, Range("D8")) Нічого, то викличте MyMacro2
Якщо Not Intersect(Target, Range("D10")) Нічого, то викличте MyMacro3
End If
End Sub

Будь ласка, додайте рядок "Якщо не перетинається (Ціль, Діапазон("D10")) Нічого, то Викличте мій макрос", щоб запустити більше макросу, клацнувши клітинку. І змініть назви клітинок і макросів у коді відповідно до ваших потреб.
Цей коментар був мінімізований модератором на сайті
Це не працює в моєму Excel. Код правильний?
Цей коментар був мінімізований модератором на сайті
Привіт Каміла,
Вибачте за незручності. Спробуйте наведений нижче код VBA.

Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Dim xRgArr як варіант
Dim xFunArr як варіант
Dim xFNum як ціле число
Dim xStr як рядок
Dim xRg As Range
xRgArr = Array("A1", "D1", "C1") 'Клітинки, які використовуються для запуску макросу
xFunArr = Array("Code name1", "Code name2", "Code name3") 'Відповідні кодові назви
Якщо Selection.Count = 1 Тоді
Для xFNum = 0 до UBound(xRgArr)
Встановити xRg = ActiveSheet.Range(xRgArr(xFNum))
Якщо Not Intersect(Target, xRg) - це нічого, то
xstr = xfunarr (xfnum)
Application.run XSTR
End If
Далі
End If
End Sub
Цей коментар був мінімізований модератором на сайті
Це спрацювало ідеально і заощадить мені купу часу - дякую, що поділилися своїми знаннями - дуже вдячний!
Цей коментар був мінімізований модератором на сайті
Я радий, що зміг допомогти.
Цей коментар був мінімізований модератором на сайті
Чудово. Він працює добре... Дякую....
Цей коментар був мінімізований модератором на сайті
Привіт.

У мене це добре працює, але я хотів би додати умову для запуску макросу. Я хочу запустити макрос, лише якщо клітинка поруч із коміркою, на яку я клацаю, містить певне значення.
наприклад, коли я натискаю на клітинку F6, я хочу, щоб макрос запускався, якщо клітинка E6 містить "x", але якщо клітинка E6 порожня, макрос не повинен запускатися.
Сподівання, що має сенс.
Дякую

ось мій оригінальний код без умови:


Варіант явний

Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Якщо Selection.Count = 1 Тоді
Якщо не перетинається(ціль, діапазон("F6:F18")) - це нічого
Телефонуйте datePick
End If
End If
End Sub
Цей коментар був мінімізований модератором на сайті
привіт,
Наведений нижче код VBA може допомогти вам вирішити проблему. Будь ласка, спробуйте і дякую за ваш коментар.

Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Dim xRg As Range
Якщо не перетинається(ціль, діапазон("F6:F18")) - це нічого
Встановіть xRg = ActiveSheet.Cells(Target.Row, Target.Column - 1)
Якщо (xRg.Value = "") або (xRg.Value <> "X"), то вийти з підпорядкування
Телефонуйте datepick
End If
End Sub
Цей коментар був мінімізований модератором на сайті
Дякую, але як щодо об’єднаних клітинок?
Цей коментар був мінімізований модератором на сайті
Привіт Альбер!
Код не працює для об’єднаних осередків.
Цей коментар був мінімізований модератором на сайті
Я використовую OpenOffice і клацнув правою кнопкою миші на вкладці аркуша та вибрав події, а потім вибрав цей макрос із MyMacros.. Однак я отримую помилку в такому рядку: Якщо Selection.Count = 1 Тоді >>> «Основна помилка під час виконання, змінна не визначена...
Цей коментар був мінімізований модератором на сайті
Привіт Джеймс,
Код працює лише для Microsoft Office Excel. Дякуємо за коментар.
Цей коментар був мінімізований модератором на сайті
Мій повний код у цьому макросі:


Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)

Dim Val як рядок
REM val = Діапазон ("A2").Значення

Якщо Selection.Count = 1 Тоді
Якщо не перетинається(ціль, діапазон("D24")) то нічого
REM Виклик MyMacro
val = Діапазон ("D24").Значення
Діапазон("B27").Значення = val
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.

Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Dim xRgArr як варіант
Dim xFunArr як варіант
Dim xFNum як ціле число
Dim xStr як рядок
Dim xRg As Range
xRgArr = Array("A1", "D1", "C1") 'Клітинки, які використовуються для запуску макросу
xFunArr = Array("Code name1", "Code name2", "Code name3") 'Відповідні кодові назви
Якщо Selection.Count = 1 Тоді
Для xFNum = 0 до UBound(xRgArr)
Встановити xRg = ActiveSheet.Range(xRgArr(xFNum))
Якщо Not Intersect(Target, xRg) - це нічого, то
xstr = xfunarr (xfnum)
Application.run XSTR
End If
Далі
End If
End Sub
Цей коментар був мінімізований модератором на сайті
Дякую за цей код. Чи можна змусити це працювати, натиснувши клітинку, яка об’єднана з іншими?
Цей коментар був мінімізований модератором на сайті
Привіт, М.Саймондс!
Код у цій статті може зробити вам послугу: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Дякуємо за ваш коментар.
Цей коментар був мінімізований модератором на сайті
привіт, я намагався використати цей код, щоб запустити макрос для вставки, але не можу зрозуміти, як правильно вставити макрос.

ось мій оригінальний Марко

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

'
Діапазон ("B34"). Виберіть
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False, NoHTMLFormatting:=True
End Sub


будь-яка допомога вітається
Цей коментар був мінімізований модератором на сайті
Привіт, дякую за цікаву тему. Що робити, якщо, наприклад, я хочу клацнути на D4 на листі 1 і побачити результат макросу в листі 2! F3.
Цей коментар був мінімізований модератором на сайті
Більше не працює.
Worksheet_SelectionChange не існує за замовчуванням. Це означає, що ви не можете використовувати це для запуску макросу.

Єдиний вбудований допоміжний пристрій, який ви можете використовувати, зазначено в спадному списку "Робочий зошит", тому...

Єдине найближче, що ви можете зробити, це використовувати Workbook_SheetBeforeDoubleClick. Але він увійде в режим редагування (все ще не велика проблема).
Цей коментар був мінімізований модератором на сайті
Привіт, CodeKiller.Worksheet_SelectionChange існує лише в редакторі Sheet(Code). Клацніть правою кнопкою миші вкладку аркуша та клацніть «Переглянути код», щоб активувати редактор аркуша (код).
Цей коментар був мінімізований модератором на сайті
Важливо підкреслити, що макрос виконується лише на робочому аркуші.
Ті з нас, хто використовує звичайний візуальний базовий редактор, часто в кінцевому підсумку зберігають макроси в інших місцях, ніж у поточному робочому аркуші.
Жоден з цих кодів не працюватиме в цій ситуації.
Я вважаю, що цей код набагато простіший, і він дуже добре працює для мене: 

Приватний додатковий аркуш_SelectionChange(ByVal Target As Excel.Range)
Якщо не перетинається (діапазон("d1"), ціль) - це нічого
Телефонуйте aa
End If
End Sub
Sub aa() ' введіть свій код тут
Діапазон ("D1"). Виберіть
Вибір. Копіювати
Діапазон ("F1"). Виберіть
ActiveSheet.PasteEnd Sub
Джон Уеллс
jnw.wells@gmail.com
Цей коментар був мінімізований модератором на сайті
Привіт, Джон Уеллс, дякую, що поділилися.
Цей коментар був мінімізований модератором на сайті
Для тих, хто хоче, щоб це працювало для об’єднаних осередків, найшвидший і найбрудніший спосіб – оновити рядок 2 наступним чином:
Явний варіант

Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Якщо Selection.Count > 0 Тоді
Якщо не перетинається(ціль, діапазон("D4")) то нічого
Зателефонуйте в MyMacro
End If
End If
End SubSelection.Count використовується, щоб визначити, чи було зроблено вибір перед виконанням макросу, що залишився. Якщо ваш вибір складається з чотирьох об’єднаних комірок, Selection.Count дорівнюватиме 4, а код, що залишився, ніколи не буде виконано. Ви також можете змінити рядок 2 на точну кількість комірок, які були об’єднані, але це спричинить проблеми, якщо ви об’єднати додаткові клітинки.
Цей коментар був мінімізований модератором на сайті
Грандіозно! Grazie, era 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 option explicit altrimente ci viene detto che il riferimento al
робочий аркуш non è univoco. Mi spiego meglio evidentemente su come ho adattato il codice con il mio esempio;

Варіант явний
Приватний додатковий аркуш_SelectionChange(ByVal Target As Range)
Якщо Selection.Count = 1 Тоді
Якщо Not Intersect(Target, Range("Y64")) нічого не означає
Діапазон ("Y65:Y78"). Виберіть
Діапазон ("Y65"). Активувати
Вибір.CLEARCONTENTS
Діапазон ("Y65"). Виберіть
End If
Якщо не перетинається (ціль, діапазон ("A33")) - це нічого
Діапазон ("A33"). Виберіть
Вибір. Копіювати
ActiveWindow.WindowState = xlMinimized
SendKeys "^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 de veras que me 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 ación) 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?
Заздалегідь дуже дякую.
Цей коментар був мінімізований модератором на сайті
Привіт Hola,
Адреса комірки постійна. Все, що ви можете перемістити, це значення комірки.
Комірка, яку ви вказали в коді VBA, залишається коміркою, яка запускає вказаний код VBA.
There are no comments posted here yet
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця

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

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