Как открыть макрос в Excel для редактирования
Обновлено: 21.11.2024
В предыдущей главе вы узнали, как писать код макроса в редакторе VBA. Вы можете редактировать код макроса, переименовывать макрос и удалять макрос.
Если вы владеете Excel VBA, написание кода или изменение кода для макроса — тривиальная задача. Вы можете редактировать код макроса, как хотите. Если вы хотите внести лишь несколько простых изменений в код макроса, вы можете даже скопировать код макроса из одного места в другое.
Копирование кода макроса
Вы создали два макроса — MyFirstMacro и Button1_Click в рабочей книге MyFirstMacro.xlsm с поддержкой макросов. Вы создали первый макрос, записав шаги, и второй макрос, написав код. Вы можете скопировать код из первого макроса во второй макрос.
Откройте книгу MyFirstMacro.xlsm.
Перейдите на вкладку "Разработчик" на ленте.
Нажмите Visual Basic. Откроется редактор Visual Basic.
Откройте код для Module1 (код макроса MyFirstMacro) и Module2 (код макроса Button1_Click()).
Перейдите на вкладку "Окно" на ленте.
Выберите Мозаика по горизонтали в раскрывающемся списке.
Вы можете просмотреть код двух макросов в мозаичных окнах.
Скопируйте строку MsgBox в код Module2.
Вставьте его над этой строкой.
Измените строку как -
MsgBox «Привет, мир!»
Скопируйте следующий код из Module1.
Вставьте его в код Module2 между двумя строками кода MsgBox.
Нажмите значок "Сохранить", чтобы сохранить код.
Нажмите кнопку на листе Excel. Появится окно сообщения с сообщением - Hello World! Нажмите "ОК".
Отобразятся данные таблицы (в соответствии с кодом, который вы скопировали) и появится окно сообщения с сообщением - С наилучшими пожеланиями!
Вы можете изменить код всего за несколько шагов. Это самая простая задача для новичка.
Переименование макроса
Предположим, вы хотите запустить отредактированный макрос с любого рабочего листа, кроме того, на котором есть командная кнопка. Вы можете сделать это независимо от нажатия кнопки, переименовав макрос.
- Нажмите вкладку ПРОСМОТР на ленте.
- Нажмите "Макросы".
- Выберите «Просмотреть макросы» в раскрывающемся списке.
Появится диалоговое окно "Макрос".
Код макроса отображается в редакторе VBA.
Измените имя, отображаемое в строке Sub, с Button1_Click на RenamedMacro. Оставьте Sub и скобки как есть.
Откройте диалоговое окно "Макрос". Имя макроса отображается так, как вы его переименовали.
- Нажмите "Макрос переименования".
- Нажмите кнопку «Выполнить». Макрос запускается. Теперь нажатие кнопки не требуется.
Удаление макроса
Вы можете удалить макрос, который вы записали или закодировали.
Появится сообщение подтверждения удаления.
Нажмите Да, если вы уверены, что хотите удалить макрос. В противном случае нажмите Нет.
Если вам нужно внести простые изменения в макрос, например вставить текст или удалить команду, например применить определенный формат к ячейке, вы можете отредактировать макрос. Вы редактируете макрос в редакторе Visual Basic, как показано на рис. 2-6. Элементы редактора Visual Basic описаны в таблице ниже.
Проводник проекта, окно свойств и окно кода появляются при открытии редактора Visual Basic. Поскольку при простом редактировании вам не понадобится окно «Свойства», вы можете закрыть окно «Свойства», а затем развернуть проводник проекта, чтобы увидеть больше его окна.
Каждая открытая книга в Excel имеет связанный с ней проект в Project Explorer. Навигация в проводнике проекта похожа на навигацию в проводнике Windows, поскольку они оба имеют иерархическую структуру. Код макроса хранится в модуле, который является просто местом хранения кода, точно так же, как рабочий лист является местом хранения данных в ячейках. Двойной щелчок по модулю в Project Explorer отображает код модуля в окне кода. Редактирование кода Visual Basic похоже на редактирование текста в текстовом редакторе.
Для получения более подробной информации об обучении макросам и VBA Excel в Лос-Анджелесе позвоните нам по телефону 888-815-0604. Наши занятия практические и под руководством инструктора. Также доступны классы Excel для начинающих, средних и продвинутых пользователей.
Рисунок 2-6: Редактор Visual Basic
Элемент | Описание |
Проводник проекта | Содержит проекты, в которых хранится код Visual Basic для каждой открытой книги. Каждый проект может содержать папки для объектов (например, рабочих листов в книге), форм, ссылок и модулей. Вы выбираете модуль для просмотра его кода, копируете модули в другие открытые рабочие книги и удаляете модули. |
Окно кода | Отображает код Visual Basic для выбранного модуля в проекте. |
Окно свойств | Отображает определенные характеристики объекта, такие как имя объекта или стандартная ширина столбцы. |
Стандартная панель инструментов (макро) | Отображает основные инструменты, необходимые для использования редактора Visual Basic. |
Поле объектов | Содержит раскрывающийся список, из которого можно выбрать нужный объект, код которого вы хотите просмотреть в окне кода. Если в поле «Объект» отображается «Общие», весь код макросов, связанных с выбранным модулем, появляется в окне «Код». |
Поле «Процедура» | Содержит раскрывающийся список, из которого можно выбрать макрос для отображения кода макроса в окне кода. |
Этапы редактирования макроса
Чтобы отобразить редактор Visual Basic:
- В группе "Код" на вкладке "Разработчик" нажмите кнопку Visual Basic.
Чтобы изменить макрос:
- Отобразить редактор Visual Basic.
- В меню "Инструменты" выберите "Макросы".
- В диалоговом окне "Макросы" в раскрывающемся списке "Макросы в" выберите проект, содержащий макрос, который вы хотите изменить.
- В списке "Имя макроса" выберите нужный макрос.
- Выберите «Изменить».
- В окне кода внесите необходимые изменения.
- Закройте диалоговое окно "Макросы".
Чтобы закрыть редактор Visual Basic:
- В меню "Файл" выберите "Закрыть и вернуться в Microsoft Excel".
Удаление макроса
Если вам больше не нужен макрос, вы можете удалить его. Удаление ненужных макросов упрощает просмотр макросов в окне "Код" в редакторе Visual Basic, а также просмотр макросов в диалоговом окне "Макрос".
Вы можете удалить макрос в открытой книге с помощью диалогового окна "Макрос" или редактора Visual Basic. Если вы хотите удалить макрос в личной книге макросов с помощью диалогового окна «Макрос», вы должны сначала отобразить личную книгу макросов. Преимущество использования редактора Visual Basic заключается в том, что вы можете удалить любой макрос в любой открытой книге или личной книге макросов, не открывая ее.
Шаги по удалению макроса
Метод диалогового окна макроса:
- Найдите группу «Код» на вкладке «Разработчик» на ленте.
- В группе "Код" на вкладке "Разработчик" нажмите кнопку "Макросы".
- В диалоговом окне "Макрос" в списке "Имя макроса" выберите макрос, который нужно удалить.
- Выберите «Удалить».
- В появившемся окне сообщения выберите Да.
Метод редактора Visual Basic:
- Найдите группу "Код" на вкладке "Разработчик" на ленте.
- В группе "Код" на вкладке "Разработчик" нажмите кнопку Visual Basic.
- В меню "Инструменты" выберите "Макросы".
- В диалоговом окне "Макросы" в раскрывающемся списке "Макросы в" выберите проект, содержащий макрос, который вы хотите удалить.
- В списке "Имя макроса" выберите нужный макрос.
- Выберите «Удалить».
- В меню "Файл" выберите "Закрыть и вернуться в Microsoft Excel".
Обучение Excel на месте
Благодаря нашей сети местных инструкторов мы проводим групповое обучение работе с Microsoft Excel по всей стране. Ознакомьтесь с нашими отзывами об обучении Excel или узнайте стоимость индивидуального курса Excel.
Если вы записываете макрос, а затем хотите внести изменения, не перезаписывая его, его можно отредактировать в окне Visual Basic. Этот урок знакомит вас с языком программирования Visual Basic (также называемым VB или VBA) — кодом, который Excel использует для записи макросов. Используя язык Visual Basic и редактор Visual Basic, вы можете вносить небольшие изменения в свои макросы после их записи.
Лучший способ узнать о Visual Basic — просмотреть существующий код. В этом уроке мы рассмотрим, как просматривать и редактировать код существующего макроса.
Показать личную книгу
Прежде чем приступить к редактированию макроса, нужно подумать о том, где он сохраняется. Если он сохранен в личной книге, вам нужно сначала отобразить его. Личная рабочая книга — это специальный файл, в котором хранятся универсальные макросы. Он сохраняется на вашем компьютере и открывается каждый раз, когда вы открываете Excel. Однако этот файл по умолчанию скрыт, поэтому вы не узнаете, что он там, если не отобразите его.Личная книга должна быть скрыта, если вы хотите редактировать сохраненные в ней макросы.
- Перейдите на вкладку "Вид".
- Нажмите кнопку "Показать окно".
- Убедитесь, что выбрано ЛИЧНОЕ, и нажмите OK.
Личная рабочая книга откроется в другом окне. Для того, чтобы в нем редактировать макросы, он просто должен быть виден. Вы можете редактировать макросы в любом открытом файле.
После того, как вы закончите редактирование личной книги, вы захотите снова ее скрыть.
Редактировать макрос
- Перейдите на вкладку "Разработчик".
- Нажмите кнопку "Макросы".
Появится диалоговое окно "Макрос". Здесь вы можете увидеть макросы, которые вы записали.
Появится программа Microsoft Visual Basic для приложений. То, что может выглядеть как беспорядочный текст, на самом деле является кодом Visual Basic — языком, который использовался Excel для записи созданного вами макроса.
Однако вам не нужно изучать Visual Basic, чтобы владеть Excel, знание основ может быть полезным, если вы когда-нибудь захотите изменить существующий макрос. Если вы внимательно посмотрите на код своего макроса, некоторые процедуры должны быть вам понятны. Например, если ваш макрос выбирает несколько ячеек в книге, вы можете увидеть текст «Выбрать» или «Выбор».
Вы можете удалить участки кода, чтобы удалить определенные действия из макроса, или отредактировать код, чтобы изменить действия макроса.
Окно редактора Visual Basic закроется, и вы вернетесь в главное окно Excel.
Удалить макрос
- Перейдите на вкладку "Разработчик".
- Нажмите кнопку "Макросы".
Появится диалоговое окно "Макрос". Здесь вы можете увидеть макросы, которые вы записали.
Макрос удален.
Проверка отредактированного макроса
После того как вы отредактировали код Visual Basic, рекомендуется снова запустить макрос, чтобы убедиться, что он работает так, как вы хотите.
- Выбрав лист, на котором вы хотите запустить отредактированный макрос, нажмите кнопку "Макросы" на вкладке "Разработчик".
- Выберите редактируемый макрос.
- Нажмите кнопку "Выполнить".
Макрос запускается, и любые изменения, внесенные в код VBA, отражаются на листе.
БЕСПЛАТНЫЙ краткий справочник
Бесплатно для распространения с нашей благодарностью; мы надеемся, что вы рассмотрите наше платное обучение.
Макросы в Excel хранятся в виде кода VBA, и иногда вам может понадобиться отредактировать этот код напрямую. В этом руководстве рассказывается, как просматривать и редактировать макросы, описываются некоторые методы отладки макросов и приводятся некоторые распространенные примеры редактирования.
Просмотр макросов
Список макросов можно отобразить в диалоговом окне "Макросы". Чтобы просмотреть это диалоговое окно, выберите вкладку "Разработчик" на ленте и нажмите кнопку "Макросы".
Если открыто несколько книг, макросы из всех книг будут показаны в списке. Макросы в активной книге будут отображаться только по имени, а макросы в других книгах будут иметь префикс имени книги и восклицательный знак (например, «Book2!OtherMacro»).
Открыть макрос для редактирования
Вы можете использовать диалоговое окно «Макрос», чтобы открыть код макроса, выбрав имя макроса и нажав кнопку «Изменить». Это откроет макрос в редакторе VB.
Кроме того, вы можете открыть редактор VB напрямую, нажав кнопку Visual Basic на вкладке "Разработчик" или нажав сочетание клавиш ALT+F11.
С помощью этого метода вам нужно будет перейти к нужному макросу (также называемому «процедурой»). Мы рассмотрим макет редактора VBA:
Обзор редактора VB
Редактор VB имеет несколько окон; в этом руководстве мы рассмотрим окно проекта, окно свойств и окно кода.
Окно проекта
В окне "Проект" каждый файл Excel отображается как отдельный проект со всеми объектами в этом проекте, классифицированными по типу. Записанные макросы появятся в категории «Модули», обычно в объекте «Модуль1». (Если в вашем проекте несколько модулей и вы не знаете, где хранится ваш макрос, просто откройте его в вышеупомянутом диалоговом окне «Макросы».)
Окно свойств
В окне свойств отображаются свойства и связанные значения объекта. Например, если щелкнуть объект рабочего листа в окне проекта, отобразится список свойств рабочего листа. Имена свойств указаны слева, а значения свойств — справа.
При выборе модуля в окне проекта будет показано, что он имеет только одно свойство «(Имя)». Вы можете изменить имя модуля, дважды щелкнув значение свойства, введя новое имя и нажав Enter. Изменение имени модуля приведет к его переименованию в окне проекта, что полезно, если у вас много модулей.
Окна кода
Окна кода — это специальные текстовые редакторы, в которых вы можете редактировать код VBA вашего макроса. Если вы хотите увидеть код макроса, находящегося в Module1, вы должны дважды щелкнуть «Module1» в окне проекта.
Запуск макросов в редакторе VB
Макросы можно запускать непосредственно из VB Editor, что удобно при тестировании и отладке.
Запуск макроса
- В окне проекта дважды щелкните модуль, содержащий макрос, который вы хотите протестировать (чтобы открыть его окно кода).
- В окне «Код» поместите курсор в любое место кода макроса между «Sub» и «End Sub».
- Нажмите кнопку "Выполнить" на панели инструментов или нажмите сочетание клавиш F5.
«Пошаговое выполнение» макроса
Вместо того, чтобы запускать макрос сразу, вы можете запускать макрос по одной строке за раз, используя сочетание клавиш для «пошагового выполнения» кода. Макрос будет приостанавливаться на каждой строке, что позволит вам убедиться, что каждая строка кода делает то, что вы ожидаете в Excel. Вы также можете остановить выполнение макроса в любое время, используя этот метод.
Чтобы «пройтись» по макросу:
- В окне проекта дважды щелкните модуль, содержащий макрос, который вы хотите протестировать (чтобы открыть его окно кода).
- В окне кода поместите курсор в любое место кода макроса.
- Нажмите сочетание клавиш F8, чтобы начать пошаговый процесс.
- Повторно нажимайте клавишу F8, чтобы ускорить выполнение кода, что отображается желтым цветом в окне кода.
- Чтобы остановить выполнение макроса, нажмите кнопку "Сброс".
Зачем редактировать макросы VBA?
Запись макросов, хотя и эффективная, также очень ограничена. В некоторых случаях он создает медленные макросы, записывает действия, которые вы не собирались повторять, или записывает то, что вы не думали делать. Научившись редактировать макросы, вы поможете им работать быстрее, эффективнее и предсказуемее.
Помимо устранения этих проблем, вы также значительно повысите производительность, используя все возможности макросов. Макросы не обязательно должны быть просто записями задач — макросы могут включать в себя логику, поэтому они выполняют задачи только при определенных условиях.Всего за пару минут вы можете создавать циклы, которые повторяют задачу сотни или тысячи раз за один раз!
Ниже вы найдете несколько полезных советов по оптимизации кода макросов, а также инструменты, которые сделают ваши макросы более эффективными и эффективными.
Распространенные примеры редактирования макросов
Ускорение макросов
Если у вас есть макрос, выполнение которого занимает много времени, может быть несколько причин, по которым он работает медленно.
Во-первых, когда запускается макрос, Excel показывает все так, как это происходит в режиме реального времени. Хотя для вас это может выглядеть быстро, на самом деле отображение работы значительный удар по производительности. Один из способов значительно ускорить работу Excel — это запретить обновление экрана:
Строка «Application.ScreenUpdating = False» означает, что вы не увидите, что макрос работает, но он будет работать намного быстрее. Обратите внимание, что вы всегда должны устанавливать для ScreenUpdating значение True в конце вашего макроса, иначе Excel может работать не так, как вы ожидаете позже!
Еще один способ ускорить макросы: отключить автовычисление в макросе. Если вы работали со сложными электронными таблицами, вы знаете, что небольшие изменения могут вызвать тысячи вычислений, для выполнения которых требуется время, поэтому многие люди отключают автоматический расчет в параметрах Excel. Вы также можете переключить это с помощью кода VBA, чтобы ваш макрос по-прежнему быстро работал на других компьютерах. Это помогает в тех случаях, когда вы копируете и вставляете много ячеек с формулами или запускаете множество вычислений при вставке данных в диапазон:
Добавить циклы и логику (операторы if)
Макрозаписывающее устройство сохраняет все ваши действия в виде кода на языке VBA. VBA — это больше, чем просто способ записи действий в Excel. Это язык программирования, что означает, что он может содержать код для принятия решений о том, какие действия выполнять, или повторять действия до тех пор, пока не будет выполнено условие.
Зацикливание
Предположим, вы хотите создать макрос для подготовки отчета, и как часть этого макроса вам нужно добавить в рабочую книгу девятнадцать листов, всего двадцать. Вы можете записать, как вы нажимаете кнопку (+) снова и снова, или вы можете написать цикл, который повторяет действие за вас, например:
В этом примере мы используем цикл For, который является своего рода циклом, который выполняет итерацию по ряду элементов. Здесь наш диапазон — это числа от 1 до 19 с использованием переменной с именем «i», чтобы цикл мог отслеживать. Внутри нашего цикла между строками for и next повторяется только одно действие (добавление листа), но вы можете добавить в цикл столько кода, сколько захотите. делать такие вещи, как форматирование листа или копирование и вставка данных на каждый лист — все, что вы хотите повторить.
Если операторы
Инструкция If используется для определения того, выполняется какой-либо код или нет, с использованием логического теста для принятия решения. Вот простой пример:
В этом простом примере показано, как работает оператор If: вы проверяете какое-либо условие, которое равно True или False (значение выбранной ячейки меньше 100?), и если тест возвращает True , код внутри запускается.
Недостаток этого кода заключается в том, что он проверяет только одну ячейку за раз (и не будет работать, если вы выберете несколько ячеек). Это было бы полезнее, если бы вы могли... прокручивать каждую выбранную ячейку и проверять каждую...
В этом примере используется несколько иной цикл For. Он не перебирает диапазон чисел, а перебирает все выбранные ячейки, используя для отслеживания переменную с именем «c». Внутри цикла значение «c» используется для определения того, следует ли очищать ячейку или нет.
Циклы и операторы If можно комбинировать любым удобным для вас образом — вы можете поместить циклы внутри циклов, или один оператор If внутри другого, или использовать оператор If, чтобы решить, должен ли цикл выполняться вообще.
Удалить эффекты прокрутки
Частой причиной редактирования кода макроса является удаление прокрутки экрана. При записи макроса вам, возможно, придется прокручивать другие области рабочего листа, но макросам не нужно прокручивать для доступа к данным.
Прокрутка может загромождать ваш код сотнями или даже тысячами строк ненужного кода. Вот пример кода, который записывается, когда вы щелкаете и перетаскиваете полосу прокрутки:
Такой код совершенно не нужен, и его можно удалить, не затрагивая других функций. Даже если вы хотите сохранить прокрутку, этот код все равно можно сжать в цикл.
Удалить лишний код
Записанные макросы, как правило, содержат много избыточного кода, который не обязательно отражает то, что вы хотите, чтобы макрос делал. Возьмем, к примеру, следующий записанный код, который записывает изменение имени шрифта в ячейке:
Несмотря на то, что было изменено только имя шрифта, было записано одиннадцать (11) изменений шрифта, таких как размер шрифта, текстовые эффекты и т. д. Если целью макроса было изменить только имя шрифта (оставив все остальные свойства один) этот записанный макрос не будет работать!
Можно изменить этот макрос так, чтобы он изменял только имя шрифта:
Теперь этот макрос не только будет работать, как задумано, но и станет намного легче читать.
Удалить движения курсора
Еще одна вещь, которая записывается в макросы, – это выбор рабочего листа и ячеек. Это проблема, потому что пользователь может легко потерять представление о том, над чем он только что работал, если курсор переместится в другую позицию после запуска макроса.
Как и при прокрутке, вам может потребоваться перемещать курсор и выбирать разные ячейки для выполнения задачи, но макросам не нужно использовать курсор для доступа к данным. Рассмотрим следующий код, который копирует диапазон, а затем вставляет его в три других листа:
С этим кодом есть несколько проблем:
- Пользователь потеряет свое предыдущее место в книге.
- Макрос не указывает, с какого листа мы копируем из – это может быть проблемой, если макрос запускался не на том листе.
Кроме того, код труден для чтения и является расточительным. Эти проблемы можно решить достаточно легко:
В этом коде ясно видно, что мы копируем с Листа 1, и ни активный рабочий лист, ни выбранный диапазон не нужно изменять для вставки данных. (Одним существенным изменением является использование «PasteSpecial» вместо «Paste». Объекты Range, такие как «Range(«C4″)», имеют доступ только к команде PasteSpecial.)
Всякий раз, когда код переполняется ссылками на ".Select" и "Selection", это означает, что этот код можно оптимизировать и сделать более эффективным.
Читайте также: