Отключить выполнение vba в excel

Excel для Microsoft 365 Word для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Access для Microsoft 365 Excel 2021 Word 2021 Outlook 2021 PowerPoint 2021 Access 2021 Visio профессиональный 2021 Visio стандартный 2021 Excel 2019 Word 2019 Outlook 2019 PowerPoint 2019 Access 2019 Visio профессиональный 2019 Visio стандартный 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 Access 2016 Visio профессиональный 2016 Visio стандартный 2016 Excel 2013 Word 2013 Outlook 2013 PowerPoint 2013 Access 2013 Visio профессиональный 2013 Visio 2013 Excel 2010 Word 2010 Outlook 2010 PowerPoint 2010 Access 2010 Visio премиум 2010 Visio 2010 Visio стандартный 2010 Excel Starter 2010 Еще…Меньше

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

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

Предупреждение: Никогда не включайте макросы в файле Microsoft 365, если вы не знаете, что делают эти макросы. Непредвиденные макросы могут представлять значительную угрозу безопасности. Для просмотра или изменения файла не нужно включать макросы; только в том случае, если вам нужны функциональные возможности, предоставляемые макросом. Дополнительные сведения см. в статье Защита от макровирусов.

Изменение параметров макросов в центре управления безопасностью

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

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

  1. Откройте вкладку Файл.

  2. Нажмите кнопку Параметры.

  3. Затем выберите пункты Центр управления безопасностью и Параметры центра управления безопасностью.

  4. В центре управления безопасностью щелкните элемент Параметры макросов.

    Область "Параметры макроса" центра управления безопасностью

  5. Выберите нужный вариант, а затем нажмите кнопку ОК.

Примечание: Варианты немного отличаются в Excel, мы будем называть их, как мы идем.

  • Отключить все макросы без уведомления.     Этот параметр отключает макросы и связанные с ними оповещения безопасности.

    В Excel этот параметр — Отключить макросы VBA без уведомления и применяется только к макросам VBA.

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

    В Excel этот параметр — Отключить макросы VBA с уведомлением , и он применяется только к макросам VBA.

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

    В Excel этот параметр — Отключить макросы VBA, кроме макросов с цифровой подписью , и он применяется только к макросам VBA.

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

    В Excel этот параметр — Включить макросы VBA (не рекомендуется, может выполняться потенциально опасный код) и применяется только к макросам VBA.

  • Excel также установлен флажок Включить макросыExcel 4.0 при включении макросов VBA. Если установить этот флажок, все приведенные выше параметры для макросов VBA также будут применяться к макросам Excel 4.0 (XLM).

    Если этот флажок не установлен, макросы XLM отключены без уведомления.

  • Доверять доступ к объектной модели проектов VBA     Запретить или разрешить программный доступ к объектной модели Visual Basic для приложений (VBA) из клиента автоматизации. Этот параметр безопасности предназначен для кода, написанного для автоматизации программы Microsoft 365 и управления средой VBA и объектной моделью. Это параметр для отдельных пользователей и приложений, который по умолчанию запрещает доступ, препятствуя созданию несанкционированных программ вредоносных самореплицируемых кодов. Чтобы клиенты автоматизации получили доступ к объектной модели VBA, пользователь, выполняя код, должен предоставить доступ. Чтобы включить доступ, выберите поле проверка.

    Примечание: В Microsoft Publisher и Microsoft Access параметр Доверять доступ к объектной модели проектов VBA отсутствует.

Сведения о создании макросов см. в статье Краткое руководство. Создание макроса.

Сведения об использовании макросов на компьютере под управлением Windows S см. в статье Блокировка подозрительных макросов в Office на Windows 10 S.

См. также

Изменение параметров безопасности макросов в Excel

Как вредоносная программа может заразить компьютер

Нужна дополнительная помощь?

 

jfd

Пользователь

Сообщений: 302
Регистрация: 01.01.1970

#1

10.12.2013 16:54:16

Добрый день! Подскажите плиз.
МегаМакрос перебирает файлы эксель (xlsm) и одним из действий сохраняет его под другим именем. В перебираемых файлах есть МикроМакрос запускаемый по условию — вызов действия «сохранить как» и соответственно перехватывает выполнение МегаМакроса и портит мне весь кайф.
Как мне при открытии файла с МикроМакросом отключить его выполнение выполнение или удалить (он там больше не нужен)?
Спасибо
во так не работает почемуто

Код
Workbooks.Open FolderPath & sFiles
        Workbooks(sFiles).RunAutoMacros xlAutoDeactivate 

.

Изменено: jfd10.12.2013 17:05:31

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

#2

10.12.2013 17:08:48

В начало мегамакроса

Код
application.enableevents=false

и не забудьте в конце включить назад.

 

jfd

Пользователь

Сообщений: 302
Регистрация: 01.01.1970

Спасибо. Все заработало как надо

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

офф — интересно, где Вы берёте эти
RunAutoMacros xlAutoDeactivate  :)

Хотя на MSDN всё есть… Но на форумах я их не видел :)

Изменено: Hugo10.12.2013 18:06:04

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Тут такой момент….RunAutoMacros это больше пережиток старых версий и оставлен для совместимости. Т.к. макросы Auto_Open и Auto_Close не срабатывают при программном открытии/закрытии книг(то же самое и auto_Activate/Deactivate). И чтобы можно было их запустить при программном открытии книг и создан данный метод.
На данный момент Microsoft пишет, что предпочтительнее использовать события книги, а не автопроцедуры. Поэтому, возможно, на форуме их встретить сложно — практически не применяются(если бы все использовали автопроцедуры вместо Workbook_Open(и иже с ними) — уверен, встречали бы часто).

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

jfd

Пользователь

Сообщений: 302
Регистрация: 01.01.1970

Hugo

вобщемто да, в гугле есть все и ссылки на MSDN тоже )

 

jfd

Пользователь

Сообщений: 302
Регистрация: 01.01.1970

тогда еще дополняющий вопрос по Workbook.Open. А можно открыть книгу с макросами  (xlsm) как книгу эксель (xls*)?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Она так и откроется. Вопрос непонятен…

 

jfd

Пользователь

Сообщений: 302
Регистрация: 01.01.1970

фигню спросил. вопрос фактически отсылает к первоначальному вопросу  и поиску несуществующего параметра Workbook.Open типа RunMacro:= False
ps. хотя могли бы и сделать )

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#10

10.12.2013 22:16:58

Итак. Если Вы открываете программно книгу и в ней прописана автопроцедура Auto_Open — она не выполнится. Если откроете руками — выполнится.
Если открываете программно книгу, в которой в модуле книги записано Workbbok_Open, то событие будет выполнено в любом случае. Если только перед открытием программно Вы не отключите выполнение событий:

Код
Application.EnableEvents = False
Workbook.Open

Не забудьте после выполнения кода вернуть в исходное положение:

Код
Application.EnableEvents = True

Так что замечание «могли бы и сделать» несправедливо — сделано давно :-)

И не забудьте у себя удалить строку:

Код
Workbooks(sFiles).RunAutoMacros xlAutoDeactivate

Т.к. она как раз и запускает событийную процедуру.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Т.е. Вам хотелось бы открыть книгу xlsm с отключёнными макросами. А если открыть, сохранить Как xlsx, и продолжать работать с этой копией?

 

jfd

Пользователь

Сообщений: 302
Регистрация: 01.01.1970

The_Prist

теперь понятно. спасибо за разъяснения.

 

jfd

Пользователь

Сообщений: 302
Регистрация: 01.01.1970

Юрий М

такое приходило в голову, но это усложняет макрос. кроме того возникает порочный круг: чтобы сохранить книгу xlsm как xls надо отключить выполнение макроса (поскольку в ней есть Workbook_BeforeSave). а отключив макрос исчезает необходимость пересохранять книгу в xls  :D

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

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

 

falmrom

Пользователь

Сообщений: 349
Регистрация: 15.04.2018

#15

19.07.2019 14:01:26

The_Prist, спасибо!

Улыбнись.

A macro is a set of commands that you can use to automate a repetitive task and run whenever you need to. This article discusses the risks associated with working with macros, as well as how to enable or disable macros in the Trust Center. Using macros in Excel reduces human error and saves time by automating repetitive tasks.

Macro security in Excel

Before you enable macros in your worksheets, you should understand how dangerous they can be.

Though VBA (Visual Basic for Applications) codes are extremely effective at automating complex and repetitive tasks, they pose a significant security risk. Unintentionally running a malicious macro can damage or completely delete files on your hard drive, corrupt your data, and even corrupt your Microsoft Office installation. As a result, the default setting in Excel is to disable all macros with notification.

How can these dangers be avoided? Simply follow one simple rule: enable only safe macros – those you’ve written or recorded yourself, macros from reliable sources, and VBA codes you’ve thoroughly reviewed and comprehended.

How to Enable macros for individual workbooks?

Macros can be enabled for a specific file in two ways: directly from the workbook and via the Backstage view.

1. Enable macros directly via security notice:

When you first open a workbook containing macros with the default macro settings, the yellow security warning bar appears at the top of the sheet, right under the ribbon:

The Microsoft Excel Security Notice will be displayed if the Visual Basic Editor is open at the time you open the file with macros:

If you are confident in the file’s origin and that all macros are safe, click the Enable Content or Enable Macros button. This activates the macros and marks the file as a trusted document. 

2. Turn on macros in Backstage view:

The Office Backstage view is another way to enable macros for a specific workbook. Here’s how to do it:

  • Click the File tab, then Info from the left menu.
  • Click Enable Content > Enable All Content, in the Security Warning area.

Your workbook, like the previous method, will become a trusted document.

How to Enable macros for one session?

In some cases, enabling macros for a single instance makes sense. For example, suppose you received an Excel file containing VBA code that you want to investigate but do not want to make it a trusted document.

The steps below will walk you through the process of enabling macros for the duration of the file’s open state:

  1. Navigate to the File tab > Info.
  2. Click Enable Content > Advanced Options in the Security Warning area.
  3. Select Enable content for this session in the Microsoft Office Security Options dialogue box, then click OK.

This enables macros for a single-use. The warning will reappear if you close and then reopen the workbook.

How to Enable macros in all workbooks through the Trust Center?

Microsoft Excel decides whether to allow or disallow VBA code execution based on the macro setting selected in the Trust Center, which is where you configure all of Excel’s security settings.

To enable macros by default in all Excel workbooks, follow these steps:

  • Navigate to the File tab and then to Options.
  • Select Trust Center from the left-hand pane and then click on Trust center setting.

  • In the Trust Center dialog box, click Macro Settings on the left, select Enable all macros and click OK.

Notes: The option you select in the Trust Center becomes the new default macro setting for all of your Excel files. Instead, if you only want to enable macros for specific workbooks, save them in a trusted location.

How to Enable macros permanently in a trusted location?

Rather than tampering with the global macro settings, you can instruct Excel to trust specific locations on your computer or local network.

Follow these steps to view the current trusted locations or to add a new one:

  • Navigate to File > Options.
  • Select Trust Center from the left-hand pane, and then click Trust Center Settings.
  • On the left side of the Trust Center dialogue box, select Trusted Locations. You will be presented with a list of the default trusted locations. These locations are critical for the proper operation of Excel add-ins, macros, and templates and should not be altered. Technically, you can save your workbook to one of Excel’s default locations, but it’s preferable to create your own.
  • Click Add a new location to set up your trusted location.

  • Do the following in the Microsoft Office Trusted Locations dialogue box:
    • Navigate to the folder you want to make a trusted location by clicking the Browse button.
    • Check the Subfolders of this location are also trusted box if you want any subfolder of the selected folder to be trusted as well.
    • Fill in the Description field with a brief message (this can help you manage multiple locations) or leave it blank.
    • Click the OK button.

Completed! You can now save your workbook with macros in a trusted location without worrying about Excel’s security settings.

How to Enable macros programmatically with VBA? 

Many people ask on Excel forums if it is possible to enable macros programmatically when opening a workbook and disable them before exiting. “No, it’s not possible,” is the immediate response. Because macro security is critical for Excel’s security, Microsoft designed any VBA code to be activated only by a user click.

When Microsoft closes a door, the user opens another 🙂 As a workaround, someone suggested using a “splash screen” or “instruction sheet” to force the user to enable macros. The fundamental concept is as follows:

You write code that generates all the worksheets except one, which is tucked away. The visible sheet (splash screen) states something like “Please enable macros and re-open the file” or provides more specific instructions.

When macros are disabled, the user can only see the “Splash Screen” worksheet; all other sheets are hidden. When macros are enabled, the code unhides all the sheets before re-hiding them completely when the workbook is closed.

How to Disable macros in Excel?

As previously stated, Excel’s default setting disables macros with a notification and allows users to enable them manually if desired. If you want to disable all macros silently, without receiving any notifications, go to the Trust Center and select the corresponding option (the first one).

  1. Click the File tab > Options in Excel.
  2. Select Trust Center from the left-hand pane, and then click Trust Center Settings.
  3. Select Macro Settings from the left menu, then Disable all macros without notification and click OK.

Содержание

  1. Вкладка «Разработчик»
  2. Вставляем код VBA в книгу Excel
  3. Как запустить макросы в Excel
  4. Создание макросов
  5. Отображение вкладки “Разработчик” в ленте меню
  6. Как запустить макрос из редактора Visual Basic?
  7. Абсолютная и относительная запись макроса
  8. Метод 1: Записываем макрос в автоматическом режиме
  9. Пример записи простого макроса
  10. Разрешение выполнения макросов Excel 97-2003
  11. Работа с макросами
  12. Включение/выключение макросов с помощью меню разработчика
  13. Как запустить макрос из панели быстрого доступа?
  14. Активация и выключение макросов во вкладке Разработчика
  15. Включение и отключение макросов через меню разработчика
  16. Как включить макросы в Эксель
  17. Включение и отключение макросов в других версиях Excel
  18. Как запустить макрос из приложения?
  19. Описание параметров макросов
  20. Включение и отключение макросов через параметры программы
  21. Что нельзя сделать с помощью макрорекодера?
  22. Как включить или отключить макросы в Excel 2010
  23. Расширение файлов Excel, которые содержат макросы
  24. Как включить или отключить макросы в Excel 2007
  25. Как вставить макрос в Excel
  26. Корректируем макрос
  27. Назначение макроса кнопке
  28. Заключение

Вкладка «Разработчик»

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

Excel 2010-2016

Переходим по пути: Файл — Параметры — Настроить ленту. В разделе «Настроить ленту» справа в списке «Основные вкладки» устанавливаем флажок «Разработчик» и нажимаем кнопку «OK».

Excel 2007

Переходим по пути: значок «Microsoft Office» — Параметры Excel — категория «Основные», в категории «Основные» устанавливаем флажок «Показывать вкладку «Разработчик» на ленте» и нажимаем кнопку «OK».

Excel 2000-2003

Здесь ничего отображать не надо: кнопки по работе с макросами и редактором VBA находятся в главном меню на вкладке «Сервис» — «Макрос».

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

Вставляем код VBA в книгу Excel

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

    1. Открываем рабочую книгу в Excel.
    2. Нажатием Alt+F11 вызываем окно редактора Visual Basic
    3. На панели Project-VBAProject кликаем правой кнопкой мыши по имени рабочей книги (в левой верхней части окна редактора) и в контекстном меню выбираем Insert > Module.
    4. Копируем код VBA (с веб-страницы или из другого источника) и вставляем его в правую область редактора VBA (окно Module1).Подсказка: Как увеличить скорость выполнения макроса?

      В самом начале кода Вашего макроса VBA должны содержаться строки:

      Application.ScreenUpdating = False
      Application.Calculation = xlCalculationManual

      Если таких строк нет, то обязательно добавьте следующие строки в свой макрос, чтобы он работал быстрее (см. рисунок выше):

      • В самое начало кода после всех строк, начинающихся с Dim (если строк, начинающихся с Dim нет, то вставляем сразу после строки Sub):

        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual

      • В самый конец кода, перед End Sub:

        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic

      Эти строки, как можно понять из их содержания, отключают обновление экрана и пересчёт формул рабочей книги перед выполнением макроса. После выполнения кода эти параметры снова включаются. Данный приём приводит к ускорению выполнения макроса от 10% до 500% (да, макрос может работать в 5 раз быстрее, если манипуляции над ячейками происходят без лишних остановок).

    5. Сохраняем рабочую книгу, как книгу Excel с поддержкой макросов. Для этого нажмите Ctrl+S и в окне с предупреждением Следующие компоненты невозможно сохранить в книге без поддержки макросов (The following features cannot be saved in macro-free workbook) нажмите Нет (No).Откроется диалоговое окно Сохранение документа (Save as). В выпадающем списке Тип файла (Save as type) выбираем Книга Excel с поддержкой макросов (Excel macro-enabled workbook) и нажимаем кнопку Сохранить (Save).

  1. Нажимаем Alt+Q, чтобы закрыть окно редактора VBA и вернуться к книге Excel.

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

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

Выделяем ячейки, которые нужно объединить, затем переходим на вкладку «Разработчик» и кликаем по кнопочке «Макросы».

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

Макрос выполнился: нужные ячейки объединены, и текст в них сохранен.

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

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

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

Если Вы создали пользовательскую функцию, то вставлять в документ ее также надо как функцию. У меня такая функция должна рассчитывать НДС.

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

Откроется окно «Мастер функций». В поле «Категория» выбираем из выпадающего списка «Определенные пользователем», в поле «Выберите функцию» выбираем название из списка: «NDS». Нажимаем «ОК».

Затем выделяю ячейку, для которой нужно посчитать НДС, и нажимаю «ОК».

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

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

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

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

Отображение вкладки “Разработчик” в ленте меню

Перед тем как записывать макрос, нужно добавить на ленту меню Excel вкладку “Разработчик”. Для этого выполните следующие шаги:

  1. Щелкните правой кнопкой мыши по любой из существующих вкладок на ленте и нажмите «Настроить ленту». Он откроет диалоговое окно «Параметры Excel».
  2. В диалоговом окне «Параметры Excel» у вас будут параметры «Настроить ленту». Справа на панели «Основные вкладки» установите флажок «Разработчик».
  3. Нажмите «ОК».

В результате на ленте меню появится вкладка “Разработчик”

Как запустить макрос из редактора Visual Basic?

Для того чтобы запустить макрос, необходимо открыть приложение, для которого он написан. Из открытого приложения перейти в редактор VisualBasic сочетанием клавиш Alt+F11 (Alt с левой стороны клавиатуры). В обозревателе проектов (окно ProjectExplorer по умолчанию находится в левом верхнем углу редактора) найти проект, а в проекте модуль, в котором записан макрос. Двойной клик левой кнопкой мыши по выбранному модулю отображает все макросы (процедуры, функции), которые в нем хранятся. Остается отыскать макрос с нужным именем, установить курсор в любое место между ключевыми словами Sub и End Sub, после чего нажать кнопку Run Sub в меню редактора либо кнопку F5 на клавиатуре.

Абсолютная и относительная запись макроса

Вы уже знаете про абсолютные и относительные ссылки в Excel? Если вы используете абсолютную ссылку для записи макроса, код VBA всегда будет ссылаться на те же ячейки, которые вы использовали. Например, если вы выберете ячейку A2 и введете текст “Excel”, то каждый раз – независимо от того, где вы находитесь на листе и независимо от того, какая ячейка выбрана, ваш код будет вводить текст “Excel” в ячейку A2.

Если вы используете параметр относительной ссылки для записи макроса, VBA не будет привязываться к конкретному адресу ячейки. В этом случае программа будет “двигаться” относительно активной ячейки. Например, предположим, что вы уже выбрали ячейку A1, и вы начинаете запись макроса в режиме относительной ссылки. Теперь вы выбираете ячейку A2, вводите текст Excel и нажмите клавишу Enter. Теперь, если вы запустите этот макрос, он не вернется в ячейку A2, вместо этого он будет перемещаться относительно активной ячейки. Например, если выбрана ячейка B3, она переместится на B4, запишет текст “Excel” и затем перейдет к ячейке K5.

Теперь давайте запишем макрос в режиме относительных ссылок:

  1. Выберите ячейку A1.
  2. Перейдите на вкладку “Разработчик”.
  3. В группе “Код” нажмите кнопку “Относительные ссылки”. Он будет подсвечиваться, указывая, что он включен.
  4. Нажмите кнопку “Запись макроса”.
  5. В диалоговом окне “Запись макроса” введите имя для своего макроса. Например, имя “ОтносительныеСсылки”.
  6. В опции “Сохранить в” выберите “Эта книга”.
  7. Нажмите “ОК”.
  8. Выберите ячейку A2.
  9. Введите текст “Excel” (или другой как вам нравится).
  10. Нажмите клавишу Enter. Курсор переместиться в ячейку A3.
  11. Нажмите кнопку “Остановить запись” на вкладке “Разработчик”.

Макрос в режиме относительных ссылок будет сохранен.

Теперь сделайте следующее.

  1. Выберите любую ячейку (кроме A1).
  2. Перейдите на вкладку “Разработчик”.
  3. В группе “Код” нажмите кнопку “Макросы”.
  4. В диалоговом окне “Макрос” кликните на сохраненный макрос “ОтносительныеСсылки”.
  5. Нажмите кнопку “Выполнить”.

Как вы заметите, макрос записал текст “Excel” не в ячейки A2. Это произошло, потому что вы записали макрос в режиме относительной ссылки. Таким образом, курсор перемещается относительно активной ячейки. Например, если вы сделаете это, когда выбрана ячейка B3, она войдет в текст Excel – ячейка B4 и в конечном итоге выберет ячейку B5.

Вот код, который записал макрорекодер:

 Sub ОтносительныеСсылки() ' ' ОтносительныеСсылки Макрос ' ' ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset(1, 0).Range("A1").Select End Sub 

Обратите внимание, что в коде нет ссылок на ячейки B3 или B4. Макрос использует Activecell для ссылки на текущую ячейку и смещение относительно этой ячейки.

Не обращайте внимание на часть кода Range(«A1»). Это один из тех случаев, когда макрорекодер добавляет ненужный код, который не имеет никакой цели и может быть удален. Без него код будет работать отлично.

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

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

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

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

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

Пример записи простого макроса

Выполните следующие действия:

Excel 2007-2016

  1. Откройте книгу Excel или создайте новую и сохраните ее как книгу с поддержкой макросов (.xlsm).
  2. На вкладке «Разработчик» нажмите кнопку «Запись макроса».
  3. В окне «Запись макроса» нажмите кнопку «OK», оставив параметры по умолчанию.
  4. Перейдите на вкладку «Главная» и выберите любой цвет заливки ячеек.
  5. Нажмите кнопку «Остановить запись».

Excel 2000-2003

  1. Откройте книгу Excel или создайте новую и сохраните ее с расширением по умолчанию (.xls).
  2. Включите запись макроса, пройдя по пунктам меню «Сервис» — «Макрос» — «Начать запись».
  3. В окне «Запись макроса» нажмите кнопку «OK», оставив параметры по умолчанию.
  4. На панели инструментов выберите любой цвет заливки ячеек.
  5. Нажмите кнопку «Остановить запись».

В результате будет записан простейший макрос окрашивания фона выделенной ячейки или диапазона.

Откройте список макросов, выберите записанный макрос и нажмите кнопку «Изменить». Вы увидите код вашего макроса:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

Sub Макрос1()

‘ Макрос1 Макрос

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.Color = 5296274

.TintAndShade = 0

.PatternTintAndShade = 0

End With

End Sub

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

Рекордер макросов может записывать много лишних строк, без которых можно обойтись. Точно также макрос будет работать и в такой редакции:

Sub Макрос2()

Selection.Interior.Color = 5296274

End Sub

Скопируйте этот код и вставьте его внизу, под вашим макросом, в редакторе VBA (числовое значение цвета можете изменить на свое или оставить, как в примере). Проверьте его работоспособность, выбрав незакрашенные ячейки и запустив макрос клавишей «F5», не забыв о том, что курсор должен находиться внутри этого макроса.

Имена макросов должны различаться в пределах одного модуля, но еще лучше – всем макросам одной книги давать уникальные имена.

Разрешение выполнения макросов Excel 97-2003

В меню «Сервис» выберите «Макрос», в открывшемся вложенном меню нажмите «Безопасность…». В открывшемся окне установите средний или низкий уровень безопасности.

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

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

Работа с макросами

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

Включение/выключение макросов с помощью меню разработчика

В этой статье преимущественно будет рассматриваться работа с автоматическими алгоритмами в Excel 2010, так как на сегодня именно эта версия является самой популярной у пользователей.

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

  1. Зайдите в блок «Файл» и откройте раздел «Параметры».
  2. В боковом меню нажмите на строку «Настройки ленты», после чего в правой области окна поставьте флажок напротив пункта «Разработчик».
  3. Для сохранения внесенных изменений кликните «ОК».
  4. В верхнем меню у вас должен будет появиться новый блок «Разработчик». Перейдите в него и кликните по иконке с изображением восклицательного знака в желтом треугольнике.
  5. Перед вами отобразится центр управления безопасностью. Перейдите в раздел «Параметры макросов» и поставьте флажок напротив пункта «Включить все макросы…». Обратите внимание, вы активируете опцию на свой страх и риск.
  6. Кликните «ОК», для того чтобы сохранить настройки.

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

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

В версиях Microsoft Office 2007 и выше есть так называемая панель быстрого доступа, которая может располагаться как над, так и под лентой. В настройках панели быстрого доступа есть пункт меню «Другие команды». Если в поле «Выбрать команды из:» из выпадающего списка выбрать пункт «Макросы», навести курсор на имя какого-либо макроса и нажать кнопку «Добавить», в панели быстрого доступа появится иконка, нажатие на которую будет запускать макрос. В окне настроек панели быстрого доступа можно изменить отображаемое имя макроса, которое всплывает при наведении курсора мыши на иконку, а также можно изменить изображение на кнопке, выбрав одну из предложенных картинок. И в Word и в Excel эта возможность реализована одинаково.

Активация и выключение макросов во вкладке Разработчика

Сразу стоит отметить, что в процессе выполнения этой задачи некоторые пользователи могут столкнуться с трудностями. Все из-за того, что вкладка “Разработчик” по умолчанию выключена и ее, для начала, нужно активировать.

  1. Щелкаем левой кнопкой мыши по меню «Файл».
  2. Затем, внизу раскрывшегося списка выбираем пункт «Параметры».
  3. В параметрах программы нас интересует пункт «Настройка ленты». Далее ставим галочку напротив вкладки “Разработчик”. Теперь подтверждаем действие нажатием кнопки «OK».

По завершении этих действий вкладка «Разработчик» будет активирована. Теперь можно приступить к включением макросов.

  1. Щелкаем по вкладке “Разработчик”. В левом углу будет находиться требуемый раздел, где нажимаем кнопку «Безопасность макросов» в виде восклицательного знака.
  2. В появившемся окне с настройками можно активировать сразу все макросы. Для этого необходимо выбрать из всех предложенных параметров вариант “Включить все макросы”. Нажатием кнопки “OK” подтверждаем внесенные изменения и выходим из параметров.Однако, следует обратить внимание на то, что разработчики Microsoft не рекомендуют выбирать этот вариант, так как есть вероятность запуска опасной программы, что может навредить компьютеру. Поэтому, выполняя эту операцию, помните, что вы действуете на свой страх и риск.

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

Как следует из названия, в самом нижнем варианте исправно будут работать все макросы, имеющие цифровую подпись. А в двух первых вариантах они будут отключены полностью. После того, как мы сделали выбор, нажимаем кнопку «OK».

Включение и отключение макросов через меню разработчика

Основное внимание мы уделим процедуре включения и отключения макросов в самой популярной и распространённой на сегодня версии программы — Excel 2010. Потом, более бегло поговорим о том, как это сделать в других версиях приложения.

Включить или отключить макросы в Microsoft Excel можно через меню разработчика. Но, проблема состоит в том, что по умолчанию данное меню отключено. Чтобы его включить, переходим во вкладку «Файл». Далее, кликаем по пункту «Параметры».

В открывшемся окне параметров, переходим в раздел «Настройка ленты». В правой части окна данного раздела устанавливаем галочку около пункта «Разработчик». Жмем на кнопку «OK».

После этого, на ленте появляется вкладка «Разработчик».

Переходим во вкладку «Разработчик». В самой правой части ленты расположен блок настроек «Макросы». Чтобы включить или отключить макросы, кликаем по кнопке «Безопасность макросов».

Открывается окно центра управления безопасностью в разделе «Макросы». Для того, чтобы включить макросы, переставляем переключатель в позицию «Включить все макросы». Правда, данное действие разработчик не рекомендует выполнять в целях безопасности. Так что, всё выполняется на свой страх и риск. Жмем на кнопку «OK», которая расположена в нижнем правом углу окна.

Отключаются макросы тоже в этом же окне. Но, существует три варианта отключения, один из которых пользователь должен выбрать в соответствии с ожидаемым уровнем риска:

  1. Отключить все макросы без уведомления;
  2. Отключить все макросы с уведомлением;
  3. Отключить все макросы, кроме макросов с цифровой подписью.

В последнем случае, макросы, у которых будет иметься цифровая подпись, смогут выполнять задачи. Не забываем жать на кнопку «OK».

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

  • Для активации необходимо запустить программу, в верхней левой части нажать на «Файл».

  • Откроется окно, остановитесь на «Параметры».

  • В левой части запустившегося меню, отыщите «Безопасность».

  • Справа кликните по «Параметры центра управления».

  • Страница перегрузится, и справа, в верхнем столбце, нужно установить галочку рядом с «Включить все».

  • Обязательно подтвердите действия, выбрав в нижней части окна «Ок».

Прежде чем приступить к активации, следует запомнить, что:

  • Макрорекордер запишет все действия пользователя, в том числе и ошибки.
  • Записываться будут только те действия, которые выполняются в Microsoft Excel. При переключении на другую программу запись остановится.
  • Макрорекордер способен записать действия, выполняемые серфером вручную.

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

Включение и отключение макросов в других версиях Excel

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

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

Для того, чтобы включить или отключить макросы в программе Excel 2007, нужно сразу кликнуть по логотипу Microsoft Office в верхнем левом углу окна, а затем в нижней части открывшейся страницы нажать на кнопку «Параметры». Далее, открывается окно Центра управления безопасностью, и дальнейшие действия по включению и отключению макросов практически ничем не отличаются от описанных для Excel 2010.

В версии Excel 2007 достаточно просто последовательно перейти по пунктам меню «Сервис», «Макрос» и «Безопасность». После этого, откроется окно, в котором нужно выбрать один из уровней безопасность работы макросов: «Очень высокая», «Высокая», «Средняя» и «Низкая». Эти параметры соответствуют пунктам параметров макросов более поздних версий.

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

Как запустить макрос из приложения?

Чтобы запустить макрос из приложения, для которого он написан, прежде всего, необходимо открыть приложение, затем нажать сочетание клавиш Alt+F8 на клавиатуре, в диалоговом окне «Макрос» отыскать нужный макрос по имени, навести на него курсор и нажать кнопку «Выполнить», либо дважды кликнуть по имени левой кнопкой мыши.

Описание параметров макросов

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

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

Включение и отключение макросов через параметры программы

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

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

Что нельзя сделать с помощью макрорекодера?

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

  • Вы не можете выполнить код без выбора объекта. Например, если вы хотите, чтобы макрос перешел на следующий рабочий лист и выделил все заполненные ячейки в столбце A, не выходя из текущей рабочей таблицы, макрорекодер не сможет этого сделать. В таких случаях вам нужно вручную редактировать код.
  • Вы не можете создать пользовательскую функцию с помощью макрорекордера. С помощью VBA вы можете создавать пользовательские функции, которые можно использовать на рабочем листе в качестве обычных функций.
  • Вы не можете создавать циклы с помощью макрорекордера. Но можете записать одно действие, а цикл добавить вручную в редакторе кода.
  • Вы не можете анализировать условия: вы можете проверить условия в коде с помощью макрорекордера. Если вы пишете код VBA вручную, вы можете использовать операторы IF Then Else для анализа условия и запуска кода, если true (или другой код, если false).

Как включить или отключить макросы в Excel 2010

Запуск макросов в Excel 2010 аналогичен Excel 2007 в связи с этим мы рассмотрим другой способ открыть окно Параметры макросов для возможности включать или отключать макросы.

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

Стоит отметить, что раздел панели инструментов Разработчик в Excel 2007 доступен по умолчанию, а в Excel 2010 его необходимо включить. Это особенно полезно сделать тем пользователям, которые будут часто работать с макросами. Чтобы включить панель инструментов Разработчик в Excel 2010 необходимо запустить Файл | Параметры | Настройка ленты после этого необходимо с правой стороны необходимо поставить галочку напротив надписи Разработчик

Очень надеемся, что наша статья помогла вам в решении вашей проблемы. Будем благодарны, если вы нажмете +1 и/или Мне нравится внизу данной статьи или поделитесь с друзьями с помощью кнопок расположенных ниже.

Расширение файлов Excel, которые содержат макросы

Когда вы записываете макрос или вручную записываете код VBA в Excel, вам необходимо сохранить файл с расширением файла с поддержкой макросов (.xlsm).

До Excel 2007 был достаточен один формат файла – .xls. Но с 2007 года .xlsx был представлен как стандартное расширение файла. Файлы, сохраненные как .xlsx, не могут содержать в себе макрос. Поэтому, если у вас есть файл с расширением .xlsx, и вы записываете / записываете макрос и сохраняете его, он будет предупреждать вас о сохранении его в формате с поддержкой макросов и покажет вам следующее диалоговое окно:

Если вы выберете “Нет”, Excel сохранить файл в формате с поддержкой макросов. Но если вы нажмете “Да”, Excel автоматически удалит весь код из вашей книги и сохранит файл как книгу в формате .xlsx. Поэтому, если в вашей книге есть макрос, вам нужно сохранить его в формате .xlsm, чтобы сохранить этот макрос.

Как включить или отключить макросы в Excel 2007

В Excel 2007 включить или отключить макросы можно таким же способом, но данное меню находится в другом месте. В Excel 2007 это можно сделать в окне Параметры макросов. Чтобы попасть в данное меню вам необходимо перейти в Меню | Параметры Excel

В открывшемся окне необходимо запустить Центр управления безопасностью | Параметры центра управления безопасностью | Параметры макросов

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

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

Как вставить макрос в Excel

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

Вставим код макроса в модуль

Например, нужно объединить несколько ячеек в одну без потери данных. Как известно, Excel может объединять ячейки, сохраняя данные только из левой верхней ячейки. Чтобы сохранить все данные из объединяемых ячеек, будем использовать VBA-код.

Открываем редактор VBА: переходим на вкладку «Разработчик» и кликаем по кнопочке «Visual Basic», также можно воспользоваться комбинацией «Alt+F11».

С левой стороны редактора, в окне «Project», выделяем мышкой рабочую книгу. Рабочая книга – это Ваш открытый документ Excel, в который нужно вставить макрос. У меня он называется «Книга1».

Кликаем по выбранному пункту правой кнопкой мыши и выбираем из меню «Insert»«Module».

В окне «Project» появилась новая папка «Modules», а в ней наш первый модуль с названием «Module1».

Справа появится поле для ввода VBA-кода. С помощью комбинации «Ctrl+V», вставляю в него код, который будет объединять несколько ячеек, без потери данных. Название макроса «MergeCell».

Следите за тем, куда Вы вставляете код, это будет написано или в заголовке редактора, или в заголовке окна для вставки кода. Мы вставляем код в модуль, соответственно надпись – «Modul1(Code)».

Сохраняем изменения, нажав комбинацию «Ctrl+S». Если Вы используете Excel 2007 и выше, появится окно сохранения документа. В нем, в поле «Тип файла», выберите из выпадающего списка «Книга Excel с поддержкой макросов» и нажмите «Сохранить».

Вставим код макроса в рабочий лист

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

Открываем редактор VBA и в окошке «Project» выделяем нужный лист, если их в рабочей книге несколько, на котором должен работать макрос: «Лист1 (Лист1)». Кликаем по нему два раза мышкой.

Справа появиться окошко для ввода кода. Обратите внимание, мы вставляем код в рабочий лист, соответственно в заголовке написано «Лист1(Code)». Сохраните изменения в документе, как было описано выше.

Чтобы вставить код макроса в рабочую книгу, кликните два раза мышкой по пункту «ЭтаКнига» и вставьте код в появившуюся область.

Создадим пользовательскую функцию

Например, создадим функцию, которая будет рассчитывать НДС. В окне «Project» кликаем по рабочему листу правой кнопкой мыши и выбираем «Insert»«Module».

В папке «Modules», появляется второй модуль с названием «Module2». Прописываем VBA-код в соответствующее окно, и сохраняем его, нажав «Ctrl+S». Называться функция будет «NDS».

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

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

  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. Теперь вычисление будет выполняться только один раз.

Назначение макроса кнопке

Теперь давайте назначим записанный макрос (любой из двух) кнопке, добавленной на лист Excel из раздела «Элементы управления формы»:

Excel 2007-2016

  1. На вкладке «Разработчик» нажмите кнопку «Вставить» и в разделе «Элементы управления формы» кликните по изображению кнопки.
  2. Переведите курсор на табличную область листа, курсор примет вид крестика, и кликните левой кнопкой мыши.
  3. В открывшемся окне «Назначить макрос объекту» выберите один из новых макросов и нажмите кнопку «OK». Если нажать кнопку «Отмена», новая кнопка будет создана без назначенного макроса. Его можно будет назначить позднее, кликнув по ней правой кнопкой мыши и выбрав в контекстном меню «Назначить макрос…»

Excel 2000-2003

    1. Отобразите панель инструментов «Формы», пройдя по пунктам меню «Вид» — «Панели инструментов» — «Формы».
    2. Кликните по Кнопке на панели инструментов «Формы», затем переведите курсор на табличную часть рабочего листа, нажмите левую кнопку мыши и, не отпуская ее, нарисуйте прямоугольник (контур кнопки) нужного размера, затем отпустите кнопку мыши.
    3. В открывшемся окне «Назначить макрос объекту» выберите один из новых макросов и нажмите кнопку «OK». Если нажать кнопку «Отмена», новая кнопка будет создана без назначенного макроса. Его можно будет назначить позднее, кликнув по ней правой кнопкой мыши и выбрав в контекстном меню «Назначить макрос…»

Кнопка создана. Выберите ячейку или диапазон и нажмите созданную кнопку. Цвет фона изменится.

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

Сокращенный вариант кода по очистке фона будет выглядеть так:

Sub Макрос3()

Selection.Interior.Pattern = xlNone

End Sub

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

Заключение

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

Источники

  • https://vremya-ne-zhdet.ru/vba-excel/makrosy/
  • https://office-guru.ru/excel/kak-v-excel-2010-ili-2013-vstavit-i-zapustit-kod-vba-rukovodstvo-dlja-nachinayuschih-439.html
  • http://comp-profi.com/rabota-s-makrosami-v-excel/
  • https://MicroExcel.ru/sozdanie-makrosov/
  • https://micro-solution.ru/excel/vba/first-macros
  • http://macros-vba.ru/knigi/vba/281-kak-zapustit-makros
  • https://vremya-ne-zhdet.ru/ofisnaya-rabota/vypolneniye-makrosov-excel/
  • https://public-pc.com/kak-vklyuchit-ili-otklyuchit-makrosy-v-excel/
  • https://MicroExcel.ru/vklyuchenie-i-otklyuchenie-makrosov/
  • https://lumpics.ru/how-to-enable-or-disable-macros-in-excel/
  • https://luchiy-brayzer.ru/programmy-na-pk/instruktsiya-kak-vklyuchit-makrosy-v-eksel-i-ego-opredelenie/
  • https://sirexcel.ru/makrosi_vba/kak-vklyuchit-ili-otklyuchit-makrosy-v-excel-2003-2007-i-2010/

Say I have a button embedded into my spreadsheet that launches some VBA function.

Private Sub CommandButton1_Click()
    SomeVBASub
End Sub

Private Sub SomeVBASub
    DoStuff
    DoAnotherStuff
    AndFinallyDothis
End Sub

I’d like to have an opportunity to have some sort of a «cancel» button that would stop SomeVBASub execution at an arbitrary moment, and I’m not into involving Ctrl+Break here, ’cause I’d like to do it silently.

I guess this should be quite common issue, any ideas?

Thanks.

asked Oct 20, 2010 at 16:02

Kirill Leontev's user avatar

Kirill LeontevKirill Leontev

10.6k7 gold badges43 silver badges49 bronze badges

Add another button called «CancelButton» that sets a flag, and then check for that flag.

If you have long loops in the «stuff» then check for it there too and exit if it’s set. Use DoEvents inside long loops to ensure that the UI works.

Bool Cancel
Private Sub CancelButton_OnClick()
    Cancel=True
End Sub
...
Private Sub SomeVBASub
    Cancel=False
    DoStuff
    If Cancel Then Exit Sub
    DoAnotherStuff
    If Cancel Then Exit Sub
    AndFinallyDothis
End Sub

answered Oct 20, 2010 at 16:10

Jamie Treworgy's user avatar

Jamie TreworgyJamie Treworgy

23.8k8 gold badges75 silver badges119 bronze badges

3

How about Application.EnableCancelKey — Use the Esc button

On Error GoTo handleCancel
Application.EnableCancelKey = xlErrorHandler
MsgBox "This may take a long time: press ESC to cancel"
For x = 1 To 1000000    ' Do something 1,000,000 times (long!)
    ' do something here
Next x

handleCancel:
If Err = 18 Then
    MsgBox "You cancelled"
End If

Snippet from http://msdn.microsoft.com/en-us/library/aa214566(office.11).aspx

answered Oct 20, 2010 at 16:17

Faheem's user avatar

Or, if you want to avoid the use of a global variable you could use the rarely used .Tag property of the userform:

Private Sub CommandButton1_Click()
    Me.CommandButton1.Enabled = False 'Disabling button so user cannot push it
                                      'multiple times
    Me.CommandButton1.caption = "Wait..." 'Jamie's suggestion
    Me.Tag = "Cancel"
End Sub

Private Sub SomeVBASub
    If LCase(UserForm1.Tag) = "cancel" Then
        GoTo StopProcess
    Else
        'DoStuff
    End If

Exit Sub
StopProcess:
    'Here you can do some steps to be able to cancel process adequately
    'i.e. setting collections to "Nothing" deleting some files...
End Sub

answered Mar 25, 2014 at 19:02

simpLE MAn's user avatar

simpLE MAnsimpLE MAn

1,56213 silver badges22 bronze badges

what jamietre said, but

Private Sub SomeVBASub
    Cancel=False
    DoStuff
    If not Cancel Then DoAnotherStuff
    If not Cancel Then AndFinallyDothis
End Sub

answered Oct 20, 2010 at 16:13

Beth's user avatar

BethBeth

9,5131 gold badge23 silver badges43 bronze badges

I do this a lot. A lot. :-)

I have got used to using «DoEvents» more often, but still tend to set things running without really double checking a sure stop method.

Then, today, having done it again, I thought, «Well just wait for the end in 3 hours», and started paddling around in the ribbon. Earlier, I had noticed in the «View» section of the Ribbon a «Macros» pull down, and thought I have a look to see if I could see my interminable Macro running….

I now realise you can also get this up using Alt-F8.

Then I thought, well what if I «Step into» a different Macro, would that rescue me? It did :-)
It also works if you step into your running Macro (but you still lose where you’re upto), unless you are a very lazy programmer like me and declare lots of «Global» variables, in which case the Global data is retained :-)

K

answered Jul 16, 2014 at 14:26

Kenson Gurney's user avatar

~ For those using custom input box

Private Sub CommandButton1_Click()

DoCmd.Close acForm, Me.Name
End

End Sub

answered Apr 1, 2015 at 10:51

Paul Clint's user avatar

Paul ClintPaul Clint

911 gold badge2 silver badges10 bronze badges

This is an old post, but given the title of this question, the END option should be described in more detail. This can be used to stop ALL PROCEDURES (not just the subroutine running). It can also be used within a function to stop other Subroutines (which I find useful for some add-ins I work with).

As Microsoft states:

Terminates execution immediately. Never required by itself but may be placed anywhere in a procedure to end code execution, close files opened with the Open statement, and to clear variables*. I noticed that the END method is not described in much detail. This can be used to stop ALL PROCEDURES (not just the subroutine running).

Here is an illustrative example:

Sub RunSomeMacros()

    Call FirstPart
    Call SecondPart

    'the below code will not be executed if user clicks yes during SecondPart.
    Call ThirdPart
    MsgBox "All of the macros have been run."

End Sub

Private Sub FirstPart()
    MsgBox "This is the first macro"

End Sub

Private Sub SecondPart()
    Dim answer As Long
    answer = MsgBox("Do you want to stop the macros?", vbYesNo)

    If answer = vbYes Then
        'Stops All macros!
        End
    End If

    MsgBox "You clicked ""NO"" so the macros are still rolling..."
End Sub

Private Sub ThirdPart()
    MsgBox "Final Macro was run."
End Sub

answered Jun 19, 2019 at 1:33

pgSystemTester's user avatar

pgSystemTesterpgSystemTester

8,7802 gold badges22 silver badges49 bronze badges

Понравилась статья? Поделить с друзьями:
  • Отключить все надстройки word
  • Отключить все макросы vba excel
  • Отключить все гиперссылки в word
  • Отключить восстановление файлов excel
  • Отключить безопасность для макросов в excel