0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

Developing.ru

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

  • Печатная версия
  • Назначение.
  • Цитата
  • Цитата

Мое понимание процесса не понятно, у меня и так и эдак и как вставить не получается. Может кто-нибудь сможет модифицировать мой макрос, чтобы он запускался при вводе числа в ячейку, то есть если в одном листе excel-eu файла в ячейку ввести число например 543, то макрос визуально не работает, а в памяти другой лист файла, а там таблица из нескольких столбцов с числами, Так вот макрос находит в определенном столбце число (543), затем сравнивает его рядом стоящим в строке с нулем, если оно меньше нуля, то макрос возвращает в ячейку где введено число 543 значение отрицательного числа которое стоит рядом в одной строке с числом 543. Другими словами, если число в таблице рядом с числом 543 больше 0, макрос ничего не сделает, и оператор введет данные в другую ячейку. Я знаю как сравнивать числа и вычитать число из ячейки, но я понятия не имею как разработать макрос, который начнет работать после ввода данных в ячейку. Кто знает, подскажите пожалуйста.

Sub сравнение()

‘ сравнение Макрос
‘ Макрос записан 13.02.2010 (ккк)

‘ Сочетание клавиш: Ctrl+s

Dim a As Integer ‘ — это номер строки в таблице где происходит сравнение
Dim n As Integer ‘ — это переменная которой присваивается значение числа после того как его ввели
Dim x As Integer ‘ — это номер строки на которой находиться ячейка в которую вводиться число
Dim y As Integer ‘ — это номер столбца в котором находиться ячейка в которую вводиться число

Читайте так же:
Как быстро найти позицию первого верхнего регистра в текстовой строке Excel?

A = 1 ‘задает номер строки, с которой нужно начинать строку

‘ ВОТ ТУТ КАК РАЗ В МЕСТО ЭТИХ ТРЕХ СТРОЧЕК И ДОЛЖНА ПО ИДЕЕ БЫТЬ КОМАНДА
‘ КОТОРАЯ ЗАПУСКАЕТ МАКРОС ПОСЛЕ ВВОДА ЧИСЛА В ЯЧЕЙКУ
‘ Range(«B2»).Select
‘ ActiveCell.FormulaR1C1 = «543»
‘ n = введенному в ячейку числу

x = 2 ‘ для того чтобы макрос хоть как то работал задаем умышленно фиксированное значение
y = 2 ‘ для того чтобы макрос хоть как то работал задаем умышленно фиксированное значение
n = Sheets(«лист-данные»).Cells(x, y) ‘присваиваем переменной n значение введенного в ячейку числа
2 If n = Sheets(«лист-таблица»).Cells(a, 1) Then GoTo 1 ‘ находим такое же число как оператор вводил но уже в эталонной таблице
a = a + 1
If a <= 50 Then GoTo 2
1 If Sheets(«лист-таблица»).Cells(a, 2) > 0 Then GoTo 3 ‘ Число найдено, а сдесь выясняем отрицательное ли число которое стоит рядом в эталонной таблице

Sheets(«лист-данные»).Cells(x, y) = Sheets(«лист-таблица»).Cells(a, 2) ‘присваивается здачение отрицательного числа ячейке в которую изначально был ввод
Sheets(«лист-данные»).Select ‘ну тут ниже меняетс цвет шриф для яркости
Cells(x, y).Select
Selection.Font.ColorIndex = 3
Selection.Font.Bold = True
With Selection.Font
.Name = «Arial Cyr»
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
pause (20 = cek) ‘ то же не знаю как писать паузу в работе, а она нужна чтобы оператор увидел результат
4 r = r + 1
If r < 50000000 Then GoTo 4 ‘ пришлось вместо паузы вот такой ерундой заниматься
Selection.ClearContents ‘очистка ячейки куда был ввод
Selection.Font.ColorIndex = 1

Конечно, макрос не разработан до конца, но это для меня сейчас не главное, я буду его разрабатывать, мне важно начать его писать».

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

Если вы не очень хорошо разбираетесь в программировании, но вам необходимо реализовать задачу, выходящую за рамки стандартных функций и команд MS Excel, вы можете поискать решение в Интернете. Решение, вероятно, будет в виде кода VBA, который вам нужно скопировать и вставить в рабочую книгу, а затем заставить этот код работать на вас, в этой статье я расскажу вам, как это сделать.

Читайте так же:
Как автоматически обновлять диаграмму после ввода новых данных в Excel?
Файлы для скачивания:

ФайлОписаниеРазмер файла:Скачивания
Пример14 Кб2538

Посмотрим на два примера:

1. Найдите и используйте команду

Например, нам нужна команда, которая вставляет число «1» в выделенные ячейки. Запустите поисковую систему, введите поисковую фразу, получите результаты, начните просмотр и найдите код, похожий на этот:

Выделите этот код (без нумерации строк, начиная с Sub) и нажмите Ctrl+C. Перейдите в рабочую книгу MS Excel и нажмите Alt+F11, чтобы открыть окно редактирования VBA:

Как вставить готовый макрос в рабочую книгу?

В левом окне «Project — VBA Project» выберите (щелкните) нашу рабочую книгу, в которую вы хотите вставить макрос, например, «VBAP Project (Workbook2)» :

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_5.png

В меню «Вставка» выберите пункт «Модуль» :

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_2.png

» Project — VBA Project» должна появиться новая папка «Modules» и новый объект «Module1» на левой панели:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_3.png

Нажатием Ctrl+V в большом поле ввода вы скопируете макрос и вставите его в модуль:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_4.png

Закройте редактор VBA, а затем вернитесь к рабочей книге.

Пользователи Microsoft Excel 2007, 2010 или 2013 должны сохранить свою рабочую книгу в формате «Рабочая книга Excel с поддержкой макросов (.xlsm)»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_16.png

Просто сохраните файл в MS Excel 2003.

Чтобы выполнить макрос, скопированный в книгу, выделите ячейки, в которые нужно вставить «1», нажмите «Макрос» в меню «Вид», а затем выберите «Макрос» из выпадающего списка:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_8.png

Откроется диалог «Макрос», в котором нужно выбрать макрос из списка макросов и нажать кнопку «Запустить»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_9.png

Выполняется макрос — в выделенные ячейки вставляется 1:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_20.png

Макросы в MS Excel могут размещаться в следующих местах

  • Модуль обычно содержит макрокод, который запускается при нажатии пользователем кнопки (как в нашем случае) или код функции (формулы);
  • Электронная таблица обычно содержит макрокод, который запускается автоматически в зависимости от действий пользователя или изменений данных в электронной таблице (изменились данные, макрос выполнен);
  • Рабочая книга обычно содержит макрокод, который запускается автоматически в зависимости от действий, выполняемых в рабочей книге (файле). Например, макрос, который запускается при открытии или закрытии книги или при ее сохранении;
  • Макросы также могут быть частью пользовательской формы.

Обычно человек, ответственный за публикацию кода, указывает, где ему место: в книге, модуле или рабочем листе.

Чтобы вставить код в рабочий лист, выберите соответствующий рабочий лист в левом окне редактора VBA, дважды щелкните его, установите курсор в правое поле ввода и вставьте код.

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_10.png

Чтобы вставить код в книгу, выберите «Эта книга»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_17.png

Давайте потренируемся. «Лист1» должен иметь следующий код.

Если ввести «2» в любую ячейку листа, макрос выведет информационное сообщение.

Вернитесь в рабочую книгу, выберите «Sheet1» и введите 2 в ячейку «A1» и нажмите Enter. Вы должны получить следующее сообщение:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_11.png

Если вы видите это сообщение, это означает, что все было сделано правильно. Если нет, код был помещен в неправильное место, попробуйте еще раз.

Следует быть осторожным при вставке кода. Посмотрите на строку заголовка редактора VBA, чтобы увидеть, что там написано:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_21.png

2: Нахождение и применение функций

В Интернете можно найти код VBA для функций, которые вычисляют, например, количество слов в ячейке:

Нажмите Alt+F11, чтобы открыть редактор VBA и скопировать код:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_22.png

Вставьте скопированный код в модуль:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_23.png

Закройте редактор VBA и перейдите в рабочую книгу. Создайте новый рабочий лист (необязательно) в ячейку A1 введите текст «мама помыла раму». Встаньте в ячейку, где вы хотите получить результат (количество слов), и нажмите в меню «Формулы» на «Вставить функцию»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_12.png

В открывшемся окне «Вставка функции» в поле «Категория» выберите «Определяемая пользователем».

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_13.png

Выберите «ColValueCell» из списка доступных функций и нажмите «OK»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_14.png

Вы можете ввести приведенные ниже аргументы и нажать «OK.»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_15.png

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_24.png

Соответствующая:

Если не сохранить книгу с макросом как «книгу с поддержкой макросов», все модули макроса будут удалены, и вам придется повторить все только что проделанные шаги.

При вставке макроса в модуль вы получите красные метки.

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_6.png

Вероятно, в вашем браузере возникла проблема с кодировкой, которая наблюдается при копировании кириллического текста из Интернета. Попробуйте вставить скопированный код в чистый рабочий лист MS Excel как «текст в кодировке Unicode», чтобы устранить проблему. Просто откройте рабочую книгу MS Excel, выберите или создайте пустой лист, щелкните в ячейке «A1», а затем нажмите Ctrl+Alt+V. Если появится меню «Специальная вставка», выберите «Текст в кодировке Unicode» и нажмите «OK».

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_7.png

Код должен быть вставлен в электронную таблицу без вопросительных знаков:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_18.png

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

Если вы не видите окно «Project — VBA Project» в редакторе VBA, перейдите на вкладку меню «View» и выберите «Project Explorer» из списка или нажмите Ctrl+R. Для этого перейдите на вкладку «Вид» и выберите «Проводник проекта»:

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector