Remkomplekty.ru

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

Как остановить выполнение макроса в excel

Как выполнить (запустить) макрос в «Excel»

Теперь наступило время рассказать, как активировать выполнение уже записанного макроса (произвести запуск макроса) в файле «Excel».

Подготовка к запуску макроса.

Для начала нужно включить вкладку разработчика на панели быстрого доступа. По умолчанию она отключены (скрыта), но именно из нее и происходит управление макросами.

Включение панели разработчика выполняется следующим образом:

  • Необходимо нажать на вкладку «Файл».
  • Далее «Параметры».
  • Настройка ленты.
  • В разделе «Настройка ленты» установить флажок (галочку) напротив пункта «Разработчик».

Настройка ленты. Разработчик

  • Нажать кнопку «Ok».
  • Запуск макроса.

    • Войти на вкладку «Разработчик» панели инструментов. Панель разработчика

    • Кликнуть по пиктограмме «Макросы».
    • Выбрать нужный макрос, выделив его название левой кнопкой мыши.

    Выполнение записанного макроса

    • Нажать кнопку «Выполнить».

    Что делать, если макрос не запускается.

    Одной из причин отсутствия результата при запуске готового макроса является встроенная защита «Excel», которая определяет макросы, как потенциально опасные компоненты и блокирует (отключает) их.

    Рассмотрим, как снять блокировку выполнения макроса в «Excel».

    Необходимо:
    • Войти в меню «Файл».
    • Далее «Параметры».
    • В открывшемся окне выбрать вкладку «Центр управления безопасностью».
    • Кликнуть по кнопке «Параметры центра управления безопасностью»

    Центр управления безопасностью

    • Выбрать вкладку «Параметры макросов»

    Включить все макросы

    • Установить флажок напротив пункта «Включить все макросы…» и нажать «ОК».

    Теперь после запуска макросы будут выполняться без проблем.

    Остановка макроса из UserForm[vbModeless]

    9 ответов

    1. Как раз DoEvents ща смотрю, надежд пока мало (событие Click там не любят или спец. скрывают. )

    2. Да, эта наша тяжелая артиллерия. :-).
    иногда правда бывает, что через API получается даже изящнее, так что будем дерзать, если что найду, обязательно напишу, потому что вещь я думаю нужная всем кто пишет макросы для общего употребления. Да и просто приятно..

    Прикольно. Спасибо за совет — DoEvents — заработал.

    Я его понаставлял в разные куски макроса, как раз где у меня FormWait.Repaint обновляется (чтобы значение ProgressBar увеличить и текст того чем он щас занимается обновить).
    А работает он следующим образом, когда нажимаешь на кнопку «Прервать», то событие до нее дойдет, как только в макросе повстречает DoEvents. (когда промежуток между соседними DoEvents большой, то получается так — на кнопку жмешь. ничего не происходит, кнопка не шевелится, потом через 5-10 сек раз и полезло то, что на кнопке висело..) Весело вообщем.

    А для того, чтобы после нажатие кнопки «Прервать» выполнение макроса прекратить, я лучше ничего не нашел, как сделать это так:

    Private Sub ButCancel_Click()
    Dim Response
    Response = MsgBox(«Вы точно хотите прервать работу макроса?», vbQuestion + vbOKOnly + vbOKCancel, «Внимание!»)
    If Response = 1 Then
    Unload FormWait
    MyModule.blnBreak = True
    Else
    End If
    End Sub

    А в макросе, после каждого DoEvents сделать проверку, что-нибудт типа такого:
    If blnBreak Then Exit Sub

    Может что поизящнее есть, чтобы из кода формы прекратить (не остановить, а прекратить) выполнение текущего макроса.

    Рад, что получилось средствами Экселя и не пришлось посылать за тяжелой артиллерией. 🙂

    Чтобы остановить — попробуй End

    Просто я хотел свой код, относящийся к форме, максимально, как это сказать-то . инкапсулировать. Т.е. есть форма (один файл), включил ее в проект, перенес на другой комп, переслал другому человеку, и не надо потом долго объяснять за какие переменные там дергать, за чем следить, че проверять и вызывать.
    А делать с этой формой особенного ничего и не надо, показал/скрыл ее, значения на ProgressBar обновил (ну и на подписях).
    Для последнего я включил в модуль формы такую функцию:

    Public Sub ShowFormWait(progValue As Double, textProc As String, TextFile As String)

    Макросы в Excel

    Большинство специалистов, работающих с электронными таблицами, изо дня в день составляют свои отчеты, выполняя одни и те же действия. Несмотря на то, что это занимает у них не так много времени, так как все происходит уже на «автомате», все же можно уменьшить в разы трудозатраты, освободив значительную часть рабочего времени под другие задачи либо отдых.

    Приложение Excel умеет записывать все действия пользователя с помощью макрорекодера, создавая специальную программу на языке программирования Visual Basic for Application (VBA), которую в последующем можно запустить для исполнения. При этом Вам не нужно быть программистом или иметь специальное образование.

    Читать еще:  Ограничение строк в excel

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

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

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

    Подготовка к созданию макроса

    В связи с тем, что макросы в Excel записывают все действия пользователя (выделение ячеек, скроллинг таблицы, копирование и т.п.), то изначально требуется продумать все шаги, которые Вы хотите автоматизировать.

    В качестве примера создадим простой макрос, задающей ячейке наш стиль. Определим какие шаги надо выполнить:

    • Установить шрифт;
    • Задать заливку;
    • Задать границы.

    Больше никаких действий мы не должны производить. Если мы начнем запись макроса с выделения какого-либо диапазона, то при последующих запусках будет выделяться именно он, что не соответствует нашей цели.

    Запись макроса

    Теперь произведем саму запись. Выделите любую ячейку, которой необходимо задать стиль (это может быть любая ячейка, главное не меняйте ее во время записи). Перейдите на вкладку «Вид», найдите область «Макросы». Раскройте меню, кликнув по стрелочке, и выберите пункт «Запись макроса». Не обращайте внимание на появившееся окно, его параметры будут рассмотрены дальше, просто нажмите кнопку «OK».

    Установите границы, цвет заливки, курсивное начертание текста и шрифт Times New Roman. Остановите запись, используя то же меню. Сейчас там должен находиться пункт «Остановить запись», – выберите его.

    Запуск макроса и назначение горячих клавиш

    После остановки макрорекодера, протестируйте работу нового макроса. Для этого кликнете по пиктограмме «Макросы» на ленте вкладки «Вид». Должно появиться следующее окно со списком все макросов открытых книг:

    Нажмите кнопку «Выполнить». Выделенный диапазон должен поменять свое оформление на то, которое Вы определили во время записи.
    Если запускать процедуру придется часто, то есть смысл назначить ей горячие клавиши. Кликните кнопку «Параметры» в том же окне. На экране появиться такой диалог:

    • Имя макроса – его поменять здесь нельзя. Это возможно сделать только в коде записанной процедуры.
    • Сочетание клавиш – укажите один символ того языка, в раскладке которого чаще приходиться работать, так как, например, сочетания Ctrl + q и Ctrl + й являются разными, но находятся на одной клавише. Так же имеет значение регистр символа. Если указать символ «Й», то горячими клавишами будет служить сочетание Ctrl + Shift + й.
    • Описание – служит памяткой тому, кто записал макрос, и пояснением остальным.

    Все выше указанные параметры можно задать при запуске макрорекодера.

    Изменение макроса

    Для редактирования записанных процедур требуются знания языка VBA, но в этом разделе все же рассмотрим простейший пример, чтобы понять сам принцип.

    Отобразите окно с макросами, выберите любой из имеющихся и нажмите кнопку «Изменить». Программа Вас перенаправит в редактор Visual Basic в модуль с кодом выбранного макроса. Если Вы точно следовали статье, то на экране должен быть приблизительно следующий скрипт (зеленый текст, расположенный после апострофа, является комментарием и не выполняется программой):

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

    Дополните Ваш код в соответствии с нижеприведенным образцом:

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

    Сохраняя книгу с макросами, необходимо выбрать расширение файла .xlsm, иначе все процедуры сотрутся.

    Канал в Telegram

    Вы здесь

    Автозапуск макроса при открытии или закрытии книги Excel

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

    Иногда требуется выполнить некоторые действия или расчеты при запуске рабочей книги в Excel. В этой статье рассмотрим на примере простого запроса пароля как реализуется автозапуск макроса в Excel.
    Хочу сразу отметить, запуск макроса произойдет только в случае если в настройках безопасности (Сервис — Макрос — Безопасность) выбран низкий или средний уровень безопасности. При среднем уровне пользователь должен не отключать макросы при запросе.

    Итак, Excel запущен, книга создана, VBE открыт (Alt+F11).

    Читать еще:  C excel saveas

    В окне Project Explorer (Ctrl+R) находим нашу книгу

    в моем случае это Книга2. Разворачиваем группу объектов «Microsoft Excel Objects» и находим объект «ЭтаКнига«

    кликаем по нему два раза. Перед нами откроется редактор кода объекта «ЭтаКнига«.
    Вы можете переименовать название объекта, выделив его и в окне Properties (F4) изменить свойство (Name).

    Теперь создадим форму в нашей книге (как это сделать читаем здесь). На форму добавим две кнопки (CommandButton) и TextBox. Примерный вид следующий:

    Эта форма будет появляться при открытии книги, в которую пользователю необходимо ввести пароль.
    Ввод пароля всегда скрывается звездочками, точками и т.д. Сделаем и мы тоже самое. Для этого выделите TextBox и в его свойствах (окно Properties) найдите пункт PasswordChar. В его значение вы можете поставить любой символ, эти символы будут отображаться при вводе. Не будем отступать от традиций, поставим знак «звездочки»

    Код для кнопки «Продолжить» следующий:

    Private Sub CommandButton1_Click()
    If TextBox1.Text = «123» Then UserForm1.Hide _
    Else MsgBox «Вы ввели неверный пароль! Попробуйте еще раз.»
    End Sub

    Пароль у нас «123», если введен верный пароль, то скрываем форму и продолжаем работать с книгой.

    Код для кнопки «Отмена»

    Private Sub CommandButton2_Click()
    ThisWorkbook.Close False
    End Sub

    ThisWorkbook — ключевое слово. Дословно «Эта рабочая книга» или «Текущая рабочая книга»
    Close — команда на закрытие нашей книги. Параметр False указывает на закрытие книги без сохранения.
    Параметр false является необязательным. Если этот параметр не указать, то в случае внесения изменений в книгу отобразится диалог:

    Все. Форму запрограммировали. Осталось ее автоматически запустить. Для этого перейдем в открытый ранее редактор объекта «ЭтаКнига» и добавим туда следующую процедуру:

    Private Sub Workbook_Open()
    UserForm1.Show
    End Sub

    Workbook_Open – событие, происходящее при открытии рабочей книги. Собственно в этой процедуре и открывается наша форма (UserForm1.Show), происходит запуск макроса, или выполняется любой другой код. Процедура Workbook_Open сработает только в объекте «ЭтаКнига».
    Сохраните книгу, закройте и попробуйте ее открыть.

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

    Событие, вызываемое при закрытии книги, так же как и открытие, относится к объекту «ЭтаКнига» (workbook). Открываем редактор кода этого объекта. Теперь выберите в выпадающем списке объект «Workbook» затем в списке доступных событий выберите BeforeClose — событие, вызываемое перед закрытием книги:

    Событий объекта книги полно: событие при создании листа, событие при активации книги и т.д.
    Итак, после выбора BeforeClose будет создана процедура:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)

    End Sub

    Добавьте в эту процедуру например, строчку вызова сообщения:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    MsgBox «Ой! Меня закрывают!»
    End Sub

    Событие BeforeClose имеет параметр Cancel логического типа, который по умолчанию имеет значение False. Если в этот параметр передать значение True, то книгу невозможно будет закрыть:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    MsgBox «Меня закрыть невозможно!»
    Cancel = True
    End Sub

    На этом все. Рабочий вариант, рассмотренный в данной статье, прикреплен ниже. В последующих статьях еще не однократно будет затронут объект WorkBook и его события, ну а пока — пока!

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

    С помощью макросов можно существенно повысить эффективность обработки и работы с информацией в Эксель благодаря тому, что множество одинаковых действий, которые мы вынуждены повторять, можно оформить в виде специального кода, который возьмет эту заботу на себя. В данном статье мы рассмотрим, каким образом можно создать новый макрос, а также, как изменить существующий.

    Создание макросов

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

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

    Метод 1: Записываем макрос в автоматическом режиме

    Чтобы иметь возможность записать макросы автоматически, для начала нужно их активировать в параметрах Эксель.

    Узнать, как это можно сделать, можно в нашей статье – “Как включать и отключать макросы в Excel”.

    После того, как макросы включены, можно перейти к нашей основной задаче.

    Читать еще:  Excel vba selection

    1. Переключаемся во вкладку “Разработчик”. В группе инструментов “Код” щелкаем по значку “Записать макрос”.
    2. На экране появится окошко, в котором мы можем выполнить настройки записи. Здесь указывается:
      • имя макроса – любое, но должно начинаться с буквы (не с цифры), не допускаются пробелы.
      • комбинация клавиш, которая будет использоваться для запуска макроса. Обязательной является Ctrl, а вторую мы можем назначить в специальном поле. Допустим, пусть это будет клавиша “r”. Если нужно использовать заглавную букву, нужно зажать клавишу Shift, которая будет добавлена в сочетание клавиш.
      • место хранения макроса. Стандартно – это будет текущая книга, но, если требуется, можно выбрать новую книгу или личную книгу макросов. В нашем случае оставляем стандартный вариант.
      • При желании можно добавить описание к макросу.
      • По готовности кликаем OK.
    3. Теперь в созданный макрос будут записываться все действия, которые мы будем выполнить в книге. И так до тех пор, пока мы не остановим запись.
    4. Допустим, давайте давайте в ячейке D2 выполним умножение двух ячеек (B2 и B3): =B2*B3 .
    5. После того, как выражение готово, нажимаем клавишу Enter, чтобы получить результат. Затем останавливаем запись макроса, нажав на значок “Стоп” (появилась вместо кнопки “Записать макрос”) в группе инструментов “Код”.

    Запускаем выполнение макроса

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

    1. В той же вкладке (“Разработчик”) и группе “Код” нажимаем кнопку “Макросы” (также можно воспользоваться горячими клавишами Alt+F8).
    2. В отобразившемся окошке выбираем наш макрос и жмем по команде “Выполнить”.Примечание: Есть более простой вариант запустить выполнение макроса – воспользоваться сочетанием клавиш, которое мы задали при создании макроса.
    3. Результатом проверки будет повторение ранее выполненных (записанных) действий.

    Корректируем макрос

    Созданный макрос можно изменить. Самая распространенная причина, которая приводит к такой необходимости – сделанные при записи ошибки. Вот как можно отредактировать макрос:

    1. Нажимаем кнопку “Макросы” (или комбинацию Ctrl+F8).
    2. В появившемся окошке выбираем наш макрос и щелкаем “Изменить”.
    3. На экране отобразится окно редактора “Microsoft Visual Basic”, в котором мы можем внести правки. Структура каждого макроса следующая:
      • открывается с команды “Sub”, закрывается – “End Sub”;
      • после “Sub” отображается имя макроса;
      • далее указано описание (если оно есть) и назначенная комбинация клавиш;
      • команда “Range(“…”).Select” возвращает номер ячейки. К примеру, “Range(“B2″).Select” отбирает ячейку B2.
      • В строке “ActiveCell.FormulaR1C1” указывается значение ячейки или действие в формуле.
    4. Давайте попробуем скорректировать макрос, а именно, добавить в него ячейку B4 со значением 3. В код макроса нужно добавить следующие строки:
      Range(«B4»).Select
      ActiveCell.FormulaR1C1 = «3»
    5. Для результирующей ячейки D2, соответственно, тоже нужно изменить начальное выражение на следующее:
      ActiveCell.FormulaR1C1 = «=RC[-2]*R[1]C[-2]*R[2]C[-2]» .Примечание: Обратите внимание, что адреса ячеек в данной строке (ActiveCell.FormulaR1C1) пишутся в стиле R1C1.
    6. Когда все готово, редактор можно закрывать (просто щелкаем на крестик в правом верхнем углу окна).
    7. Запускаем выполнение измененного макроса, после чего можем заметить, что в таблице появилась новая заполненная ячейка (B4 со значением “3”), а также, пересчитан результат с учетом измененной формулы.
    8. Если мы имеем дело с большим макросом, на выполнение которого может потребоваться немало времени, ручное редактирование изменений поможет быстрее справиться с задачей.
      • Добавив в конце команду Application.ScreenUpdating = False мы можем ускорить работу, так как во время выполнения макроса, изменения на экране отображаться не будут.
      • Если потребуется снова вернуть отображение на экране, пишем команду: Application.ScreenUpdating = True .
    9. Чтобы не нагружать программу пересчетом после каждого внесенного изменения, в самом начале пишем команду Application.Calculation = xlCalculationManual , а в конце – Application.Calculation = xlCalculationAutomatic . Теперь вычисление будет выполняться только один раз.

    Метод 2: создание макроса вручную

    Опытные пользователи Эксель в некоторых случаях предпочитают создавать макросы от начала до конца полностью вручную . План действий следующий:

    1. Во вкладке “Разработчик” нажимаем на значком “Visual Basic” (группа инструментов “Код”).
    2. В результате, на экране появится уже знакомое окно, которое мы рассмотрели выше.
    3. Здесь создается макрос и пишется ее код – полностью вручную.

    Заключение

    Таким образом, использование макросов в табличном редакторе Эксель позволяет повысить эффективность и скорость работы. Создать их можно, как в автоматическом режиме, просто записав выполненные действия, так и написав код с нуля. Также, при необходимости, можно внести изменения в ранее созданный макрос и настроить отдельные аспекты его работы.

    Ссылка на основную публикацию
    ВсеИнструменты
    Adblock
    detector
    ×
    ×