Vba excel макрос изменения макроса

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше

Чтобы изменить макрос, прикрепленный к книге Microsoft Excel, используйте редактор Visual Basic.

Важно: Для работы с макросами необходимо включить вкладку Разработчик. Дополнительные сведения см. в статье Отображение вкладки «Разработчик».

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

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

  1. На вкладке Разработчик в группе Код выберите элемент Безопасность макросов.

    Группа "Код" на вкладке "Разработчик"

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

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

Редактирование макроса

  1. На вкладке Разработчик в группе Код нажмите кнопку Макросы.

  2. В поле Имя макроса выберите макрос, который вы хотите изменить.

  3. и нажмите кнопку Изменить. Откроется редактор Visual Basic.

Совет: Чтобы получить справку во время работы в редакторе Visual Basic, в меню Справка выберите Microsoft Visual Basic Справкаили нажмите F1.

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

Содержание

  1. Редактирование макроса
  2. Vba excel макрос изменения макроса
  3. Как создавать, изменять и запускать макросы в Excel
  4. Что такое макрос и для чего он применяется
  5. Как создать новый макрос в Excel
  6. Способ 1. Автоматический запуск макроса
  7. Запуск выполнения макроса
  8. Корректировка макроса
  9. Способ 2. Создание макроса в ручном режиме
  10. Как изменять существующие макросы
  11. Заключение

Редактирование макроса

Узнайте, как изменить макрос в специальном текстовом редакторе Visual Basic. Visual Basic — это язык программирования, используемый для записи макросов.

Откройте вкладку «Разработчик».

На вкладке «Разработчик» на ленте находятся все команды макроса.

Чтобы она была отображаться на ленте, щелкните «Файл» > «Параметры> Настроитьленту», выберите «Разработчик» и нажмите кнопку «ОК».

На вкладке «Разработчик» в группе «Код» есть кнопка «Запись макроса» и некоторые другие полезные кнопки.

Создание макроса с помощью Visual Basic

Щелкните «Разработчик» > Visual Basic.

При необходимости в меню Insert (Вставка) выберите команду Module (Модуль).

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

В окне кода модуля введите или скопируйте нужный текст макроса.

Для запуска макроса из окна модуля нажмите клавишу F5.

Когда макрос будет создан, в меню File (Файл) выберите команду Close and Return to Microsoft Excel (Закрыть и вернуться в Microsoft Excel).

На вкладке «Разработчик» в группе «Код» нажмите кнопку «Макрос».

В поле «Имя макроса» выберите макрос, который вы хотите изменить.

и нажмите кнопку Изменить. Откроется редактор Visual Basic.

Источник

Vba excel макрос изменения макроса

В этой статье я расскажу, как можно редактировать макрос, записанный с помощью команды «Запись макроса. «.

Файлы для скачивания:

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

Давайте возьмем файл с предварительно записанным макросом или запишем новый макрос, как это сделать описано в статье «Как записать макрос не зная языка VBA? «.

Напомню, мы записывали макрос, который копирует данные из диапазона ячеек E2:E6, и вставляет их как значения в ячейки G2:G6. Допустим, у нас увеличился диапазон копирования и теперь нам нужно копировать данные из диапазона E2:E10, не переписывать же из-за этого макрос. Нам будет достаточно его отредактировать.

Итак, давайте откроем наш файл с записанным макросом, нажмем сочетания клавиш Alt+F8, должно будет открыться диалоговое окно макрос:

В данном окне мы выбираем наш макрос «Макрос1» и нажимаем кнопку «Изменить», откроется окно редактора Visual Basic for Application, в котором мы увидим VBA-код нашего макроса:

Нам необходимо перейти курсором в окно кода и поменять в строке кода Range(«E2:E6»).Select на Range(«E2:E10»).Select и закрыть редактор, после чего сохранить файл.

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

Источник

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

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

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

Что такое макрос и для чего он применяется

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

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

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

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

Давайте приведем один пример. Любое приложение, независимо от используемой операционной системы, содержит кнопку «Закрыть». Если мы хотим сделать это через макрос, нам нужно ввести в среду разработки команду ActiveWindow.Close. Видим, что по названиям операторов можно много чего понять, поскольку все они пишутся на английском языке. Это также упрощает задачу пользователя, который знает английский язык.

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

Как создать новый макрос в Excel

Как мы уже поняли, есть два способа записи макросов в Excel: ручной или автоматический. Чтобы воспользоваться последним методом, не требуется наличие каких-либо навыков программирования. Правда, он ограничен и не дает возможности записывать условия, формировать сложные циклы и так далее.

Поэтому для профессионального овладения электронными таблицами умение программировать обязательно. Ведь нередко кроме непосредственно написания кода невозможно вообще как-либо решать поставленные задачи.

Способ 1. Автоматический запуск макроса

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

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

После этого мы увидим вкладку «Разработчик» в нашей программе. Делаем переход по ней. Перед нами появляется большое количество инструментов разработчика. Из всего этого ассортимента нас интересует группа «Код». Там находится маленькая кнопка «Записать макрос», после клика по которой осуществляется непосредственная запись этой программы.

Далее пользователь увидит диалоговое окно. С него можно задать параметры для нашей будущей подпрограммы. Здесь доступны следующие настройки:

  1. Имя макроса. Допустимо использование какого-угодно имени за исключением того, которое начинается с числа или символа. При этом нельзя в качестве имени использовать больше одного слова.
  2. Комбинация клавиш. Это некий пусковой крючок для макроса. Он используется для того, чтобы включить макрос. Все горячие клавиши начинаются с клавиши Ctrl, а вторую можно настроить самостоятельно. Например, можно использовать горячую клавишу r. Также возможен ввод большой буквы. Для этого необходимо воспользоваться клавишей Shift, которая автоматически добавляется в комбинацию горячих клавиш.
  3. Место хранения. По умолчанию предусмотрен вариант, когда макрос применяется к текущей книге. Тем не менее, пользователь может выбрать новую или создать собственную книгу для макросов.
  4. Описание. При желании пользователь может в нескольких предложениях описать, что будет делать макрос. Это будет особенно полезно, если одной и той же книгой пользуются несколько человек.

После выполнения всех действий нужно нажать клавишу ОК, тем самым подтвердив изменения. Теперь все действия, совершаемые пользователем, будут автоматически записываться в макрос. Это будет продолжаться ровно до тех пор, пока запись программы не будет остановлена. Значительно проще разобрать это на реальном примере. Давайте сделаем программку, которая будет умножать содержимое двух ячеек. Для этого нужно запустить запись макроса, ввести в ячейку формулу (в нашем случае это =B2*B3), нажать клавишу Enter, после чего остановить запись. Кнопка остановки записи макроса находится на вкладке «Разработчик» в группе «Код».

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

Как же проверить, работает ли наш макрос? Для этого нужно выполнить следующие действия:

  1. Открыть вкладку «Разработчик». Там в самой левой части есть кнопка «Макросы», по которой нужно сделать левый клик мышью один раз. Кроме этого, пользователь может открыть аналогичную опцию путем нажатия горячих клавиш Alt + F8.
  2. После этого у нас откроется окно настройки макросов. Нужно выбрать тот, который мы только что создали, и нажать на кнопку «Выполнить». Этот же результат можно получить, если нажать сочетание клавиш, которое мы назначили для макроса раньше.
  3. О том, что макрос работает, мы можем судить по действиям программы. Если они повторяют те, которые были сделаны раньше, значит все ОК.

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

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

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

  1. Открыть окошко макросов путем нажатия на ту же кнопку, что была описана выше или же воспользоваться комбинацией клавиш.
  2. Выбираем наш макрос. Находим кнопку «Изменить», которая находится справа от него. Делаем единичный левый клик мышью по ней.
  3. После этого откроется редактор Visual Basic. Правки придется вносить в код, поэтому если навыков программирования нет, нужно быть очень внимательным при записи макроса.

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

Далее следуют команды, которые выполняют конкретные действия. Например, номер ячейки мы получаем с помощью оператора Range. В нашем примере, мы получаем ячейку B2 с помощью команды Range(“B2″).Select. Это действие аналогично выбору ячейки левой кнопкой мышки. Значение ячейки, которая выбрана на данный момент указывается с помощью оператора ActiveCell.FormulaR1C1.

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

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

Но это уже лирическое отступление. Нам еще осталось совершить одно действие – изменить первоначальное выражение, которое касалось ячейки D2, на это: ActiveCell.FormulaR1C1 = «=RC[-2]*R[1]C[-2]*R[2]C[-2]»

Внимание! Видим, что адреса в ячейках в данном примере записываются, как R1C1.

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

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

Также можно ускорить работу макроса путем добавления команды Application.ScreenUpdating = False. После этого на экране не будут показываться те промежуточные шаги, которые выполняет макрос, лишь конечный результат. Если же нужно, чтобы отображение на экране было вновь включено, тогда нужно заменить False на True.

Способ 2. Создание макроса в ручном режиме

Автоматическая запись макроса – это хорошо, но данный метод имеет множество недостатков. Профессионалы создают макросы вручную. Для этого нужно выучить язык VBA и выполнять следующие действия:

  1. Перейти во вкладку «Разработчик» и нажать на кнопку «Visual Basic». Она находится в самой левой части панели инструментов в этой вкладке.
  2. Далее появится окно, которое мы уже знаем по предыдущему разделу.
  3. Весь код пишется здесь.

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

Как изменять существующие макросы

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

Заключение

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

Источник

 

Александр

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

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

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

Можно ли получить как-то содержимое макроса из открытой книги в переменную, а потом replace- ом заменить необходимый кусок и перезаписать его?

Изменено: Александр13.01.2021 16:04:49

 

DANIKOLA

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

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

Тема не новая, подобный вопрос был

здесь

, там посмотрите #6, хорошая ссылка.

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#3

14.01.2021 09:06:55

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

пример

Изменено: Jack Famous14.01.2021 09:08:19

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Александр

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

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

DANIKOLA, спасибо, буду пробовать

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

 

Дмитрий(The_Prist) Щербаков

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

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

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

#5

14.01.2021 11:48:32

Цитата
Александр написал:
нельзя обратиться непосредственно к макросу по его имени

почему нет? Если знаете имя, то проблем нет. Например, вот этот код запоминает в переменную res весь текст искомой процедуры/функции:

Код
Sub GetSubText()
    Dim objVBProj As Object
    Dim sProcName As String, res As String
    Dim lProcLineNum As Long, lProcLinesCnt As Long, lProcKind As Long, vMdl
    
    sProcName = "Макрос1" 'имя процедуры или функции, которые ищем
    Set objVBProj = ActiveWorkbook.VBProject
    On Error Resume Next
    
    'цикл по всем модулям проекта(стандартные, классы, формы, листы, книги)
    For Each vMdl In objVBProj.VBComponents
        For lProcKind = 0 To 3
            lProcLineNum = vMdl.CodeModule.ProcStartLine(sProcName, lProcKind)
            If lProcLineNum > 0 Then
                lProcLinesCnt = vMdl.CodeModule.ProcCountLines(sProcName, lProcKind)
                res = vMdl.CodeModule.Lines(lProcLineNum, lProcLinesCnt)
                MsgBox res
                Exit Sub
            End If
        Next
    Next
End Sub

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

 

Mershik

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

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

#6

14.01.2021 12:06:53

Цитата
Jack Famous написал:
можно давать ссылку сразу на конкретный пост, кликнув по #

а я и не знал) спасибо.

Не бойтесь совершенства. Вам его не достичь.

 

Александр

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

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

#7

14.01.2021 18:16:59

Цитата
Дмитрий(The_Prist) Щербаков написал:
почему нет? Если знаете имя, то проблем нет.

Отлично! Спасибо

 

Александр

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

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

#8

27.01.2021 11:14:06

Не вышло изменить макрос =(

ни при попытке обратиться к самому макросу:

Код
Sub GetSubText()
    Dim objVBProj As Object
    Dim sProcName As String, res As String
    Dim lProcLineNum As Long, lProcLinesCnt As Long, lProcKind As Long, vMdl
     
    sProcName = "КвазиИнтерполAll" 'имя процедуры или функции, которые ищем
    Set objVBProj = ActiveWorkbook.VBProject
    On Error Resume Next
     
    'цикл по всем модулям проекта(стандартные, классы, формы, листы, книги)
    For Each vMdl In objVBProj.VBComponents
        For lProcKind = 0 To 3
            lProcLineNum = vMdl.CodeModule.ProcStartLine(sProcName, lProcKind)
            If lProcLineNum > 0 Then
                lProcLinesCnt = vMdl.CodeModule.ProcCountLines(sProcName, lProcKind)
                'MsgBox lProcLinesCnt
                ChangeMe = vMdl.CodeModule.Lines(lProcLineNum, lProcLinesCnt)
                'Часть макроса которую хотим поменять
                Text1 = "RowsStart = 120"
                'Часть макроса на который хотим поменять
                Text2 = "RowsStart = 124"
                'в текстовой переменной производим замену нужного участка кода
                ChangeMe = Replace(ChangeMe, Text1, Text2)
                'записываем изменения в макрос
                vMdl.CodeModule.Lines(lProcLineNum, lProcLinesCnt) = ChangeMe
                'vMdl.CodeModule.ProcCountLines(sProcName, lProcKind) = lProcLinesCnt
                MsgBox ChangeMe
                Exit Sub
            End If
        Next
    Next
    
End Sub

ни при попытке обращения к модулю

Код
Sub ChangeSubText()
'имя модуля для копирования
    sModuleName = "Season"
    On Error Resume Next
    'проект книги, из которой копируем модуль
    'Set objVBProj = ActiveWorkbook.VBProject
    Set objVBProj = ThisWorkbook.VBProject
    'необходимый компонент
    Set objVBComp = objVBProj.VBComponents(sModuleName)
    'Часть макроса которую хотим поменять
    Text1 = "RowsStart = 120"
    'Часть макроса на который хотим поменять
    Text2 = "RowsStart = 124"
    'objVBComp = Replace(objVBComp, Text1, Text2)
    objVBProj.VBComponents(sModuleName) = objVBComp.ReplaceLine(130, "RowsStart = 124")
End Sub

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

Изменено: Александр27.01.2021 11:47:15

 

БМВ

Модератор

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

Excel 2013, 2016

наверно не разрешили в настройках безопасности программы обращаться к этим объектам.

По вопросам из тем форума, личку не читаю.

 

Александр

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

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

#10

27.01.2021 11:40:59

Добавил —

Цитата
Tools-References-Microsoft Visual Basic For Applications Extensibility 5.X

Включено —

Цитата
Файл -Параметры -Центр управления безопасностью -Параметры макросов -поставить галочку «Доверять доступ к объектной модели проектов VBA»
 

Александр

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

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

#11

27.01.2021 13:20:49

Нашел рабочий код

тут

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

активной книге

и

только в указанном модуле

Код
Option Explicit

Sub ReplaceTextInCodeModules()

' Must add a reference to "Microsoft Visual Basic For Applications Extensibility 5.3"
' Also must set "Trust access to the VBA project object model"
' See the url below for more info on these.
' Based on code found at:
' Source: www.cpearson.com/excel/vbe.aspx Copyright 2013, Charles H. Pearson

Dim theWorkbook As Workbook
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim numLines As Long ' end line
Dim lineNum As Long
Dim thisLine As String
Dim message As String
Dim numFound As Long

Const FIND_WHAT As String = "RowsStart = 124"
Const REPLACE_WITH As String = "RowsStart = 150"

    numFound = 0

    'For Each theWorkbook In Application.Workbooks
        Set theWorkbook = ActiveWorkbook
        If theWorkbook.Name <> ThisWorkbook.Name Then
            If theWorkbook.HasVBProject Then
                Set VBProj = theWorkbook.VBProject
                'For Each VBComp In VBProj.VBComponents
                    Set VBComp = VBProj.VBComponents("Season")
                    Set CodeMod = VBComp.CodeModule

                    With CodeMod
                        numLines = .CountOfLines
                        For lineNum = 1 To numLines
                            thisLine = .Lines(lineNum, 1)
                            If InStr(1, thisLine, FIND_WHAT, vbTextCompare) > 0 Then
                                message = message & theWorkbook.Name & " | " & VBComp.Name & " | Line #" & lineNum & vbNewLine
                                .ReplaceLine lineNum, Replace(thisLine, FIND_WHAT, REPLACE_WITH, , , vbTextCompare)
                                numFound = numFound + 1
                            End If
                        Next lineNum
                    End With
                'Next VBComp
            End If
        End If
    'Next theWorkbook

    Debug.Print "Found: " & numFound
    If message <> "" Then
        Debug.Print message
    End If

End Sub

You have learnt how to write macro code in VBA editor in the previous chapter. You can edit the macro code, rename a macro and delete a macro.

If you master Excel VBA, writing code or modifying code for a macro is a trivial task. You can edit the macro code however you want. If you want to make only few simple changes in the macro code, you can even copy macro code from one place to another.

Copying a Macro Code

You have created two macros – MyFirstMacro and Button1_Click in the macro enabled workbook MyFirstMacro.xlsm. You have created the first macro by recording the steps and the second macro by writing code. You can copy code from the first macro into the second macro.

  • Open the workbook MyFirstMacro.xlsm.

  • Click the Developer tab on the Ribbon.

  • Click Visual Basic. The Visual Basic editor opens.

  • Open the code for Module1 (MyFirstMacro macro code) and Module2 (Button1_Click () macro code).

  • Click the Window tab on the Ribbon.

  • Select Tile Horizontally from the dropdown list.

You can view the code of the two macros in the tiled windows.

Copying

  • Copy the MsgBox line in the Module2 code.

  • Paste it above that line.

  • Modify the string as −

    MsgBox “Hello World!”

  • Copy the following code from Module1.

Copy Code

Paste it in the Module2 code in between the two MsgBox lines of code.

MsgBox

  • Click the Save icon to save the code.

  • Click the Button in the Excel sheet. A Message box appears with the message — Hello World! Click OK.

Hello World

The table data appears (according to the code that you copied) and message box appears with message — Best Wishes to You!

Table Data

You can modify the code in just a few steps. This is the easiest task for a beginner.

Renaming a Macro

Suppose you want to run the edited macro from any worksheet other than the one that has the command button. You can do it irrespective of button click by renaming the macro.

  • Click the VIEW tab on the Ribbon.
  • Click Macros.
  • Select View Macros from the dropdown list.

The Macro dialog box appears.

  • Click the macro name – Button1_Click.
  • Click the Edit button.

Renaming Macro

The macro code appears in the VBA editor.

Change the name that appears in the Sub line from Button1_Click to RenamedMacro. Leave Sub and parenthesis as they are.

RenamedMacro

Open the Macro dialog box. The macro name appears as you renamed.

Open Macro

  • Click RenamedMacro.
  • Click the Run button. The macro runs. Now a button click is not necessary.

Deleting a Macro

You can delete a macro that you have recorded or coded.

  • Open the Macros dialog box.
  • Click the macro name.
  • Click the Delete button.

Deleting Macro

The Delete confirmation message appears.

Delete Confirmation

Click Yes if you are sure to delete the macro. Otherwise, click No.

В этой статье я расскажу, как можно редактировать макрос, записанный с помощью команды «Запись макроса…».

Файлы для скачивания:

Файл Описание Размер файла: Скачивания
Скачать этот файл (P_Macros_02.zip)Пример   11 Кб 1531

Давайте возьмем файл с предварительно записанным макросом или запишем новый макрос, как это сделать описано в статье «Как записать макрос не зная языка VBA?«.

Напомню, мы записывали макрос, который копирует данные из диапазона ячеек E2:E6, и вставляет их как значения в ячейки G2:G6. Допустим, у нас увеличился диапазон копирования и теперь нам нужно копировать данные из диапазона E2:E10, не переписывать же из-за этого макрос. Нам будет достаточно его отредактировать.

Итак, давайте откроем наш файл с записанным макросом, нажмем сочетания клавиш Alt+F8, должно будет открыться диалоговое окно макрос:

kak-otredaktirovat-zapisannyj-makros_2.png

В данном окне мы выбираем наш макрос «Макрос1» и нажимаем кнопку «Изменить», откроется окно редактора Visual Basic for Application, в котором мы увидим VBA-код нашего макроса:

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

Нам необходимо перейти курсором в окно кода и поменять в строке кода Range(«E2:E6»).Select на Range(«E2:E10»).Select и закрыть редактор, после чего сохранить файл.

Sub Макрос1()
'
' Макрос1 Макрос
'
 
'
    Range("E2:E6").Select 'Надо поменять данные в этой строке
    Selection.Copy
    Range("G2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub 
Sub Макрос1()
'
' Макрос1 Макрос
'
 
'
    Range("E2:E10").Select 'Вместо ("E2:E6") написать ("E2:E10")
    Selection.Copy
    Range("G2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

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

Добавить комментарий

Хитрости »

3 Август 2013              25350 просмотров


Рано или поздно у разработчика по различным причинам возникает желание внести какие-либо изменения в созданный им код или добавить в только что созданный кодом файл код VBA. Распространенная ситуация: создали файл обработки, разослали пользователям. Потом доработали код VBA, что-то там добавили, улучшили, а заменять файлы пользователей уже нельзя(они там данные вносят и хранят). Изменять отдельно код VBA каждого файла занятие не из самых привлекательных. Вот здесь-то как раз очень бы пригодилось изменять коды программно.
О том как именно изменять описано в других статьях, например: Как добавить код процедуры программно, скопировать модуль. Эта же статья посвящена тому, что необходимо знать прежде чем начать вносить изменения.

Итак, работать с объектной моделью проекта VBA нам позволяет библиотека Microsoft Visual Basic For Applications Extensibility. Её можно подключить через меню VBE:

ToolsReferences-Microsoft Visual Basic For Applications Extensibility 5.X (номер может быть другим)

Так же эту библиотеку к проекту можно подключить программно(по идентификатору GUID):

ThisWorkbook.VBProject.References.AddFromGuid _
                  GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3

Что мне нравится в VBA так это то, что он допускает обращение к методам и свойствам объектов любой имеющейся библиотеки без её подключения в настройках, чем я постоянно и пользуюсь — в своих кодах я не использую текстовые константы из библиотеки Extensibility, заменив их числовыми. Это избавляет от проверки подключенной библиотеки на ПК конечного пользователя. Подключение же библиотеки позволяет использовать Intellisence для интуитивного просмотра свойст и методов объектов. Бывает очень полезно, если не знаете какое-либо свойство или метод или константу. Подключили библиотеку, подсмотрели, применили.
Но куда важнее то, без чего работа с проектом VBA программно невозможна. Я знаю два основных условия:

  1. Необходимо проставить доверие к проекту VBA:
    • Excel 2010-2019: ФайлПараметрыЦентр управления безопасностьюПараметры макросов -поставить галочку «Доверять доступ к объектной модели проектов VBA»;
    • Excel 2007: МенюПараметры ExcelЦентр управления безопасностьюПараметры макросов -поставить галочку «Доверять доступ к объектной модели проектов VBA»;
    • Excel 2003: СервисПараметры -вкладка БезопасностьПараметры макросовДоверять доступ к Visual Basic Project
    • Причем сделать это необходимо на том ПК, на котором будет выполняться код.

  2. Изменяемый VBA-проект не должен быть защищен.

Исключить первое условие программно нельзя. Точнее через VBA не получится изменить данный параметр, т.к. это будет происходить в любом случае при запущенном Excel, а при изменении данного параметра программно необходим перезапуск приложения. Да и изменить параметр возможно лишь через реестр, а не у всех пользователей может быть доступ не только к записи, но и даже к чтению реестра Windows. Зато можно проверить разрешен ли доступ к проектной модели VBA и если запрещен, то уведомить пользователя в необходимости это сделать и приложить инструкции по необходимым действиям.
Можно использовать такой код для проверки:

Sub Check_VBOM()
    Dim oVBProj As Object
    On Error Resume Next
    Set oVBProj = ActiveWorkbook.VBProject
    If Not oVBProj Is Nothing Then
        MsgBox "Доступ к проектной модели VBA разрешен", vbInformation
    Else
        MsgBox "Доступ к проектной модели VBA запрещен", vbInformation
    End If
End Sub

Главное его достоинство в том, что он не требует наличия каких-либо прав доступа к реестру.
А кодом ниже можно проверить доступ к объектной модели VBA проекта через реестр Windows, что означает необходимость наличия у пользователя прав доступа как минимум для чтения реестра:

Sub Change_VBOM()
    Dim objShell As Object, sExVersion As String, lLevel As Long
 
    'Определяем версию Excel и в зависимости от этого определяем ветку реестра
    sExVersion = Application.Version
 
    Set objShell = CreateObject("WScript.Shell")
    lLevel = objShell.RegRead("HKEY_CURRENT_USERSoftwareMicrosoftOffice" & sExVersion & "ExcelSecurityAccessVBOM")
    'Проверяем доступ к объектной модели VBA
    If lLevel = 0 Then
        MsgBox "Доступ к проектной модели VBA запрещен", vbInformation
    Else
        MsgBox "Доступ к проектной модели VBA разрешен", vbInformation
    End If
    Set objShell = Nothing
End Sub

Если вдруг кому-то захочется поэкспериментировать, то вот код для VB, который меняет доступ программно:

Sub Change_VBOM()
    Dim objExcelApp As Object, objShell As Object, sExVersion As String, lLevel As Long
 
    'Определяем версию Excel и в зависимости от этого определяем ветку реестра
    Set objExcelApp = CreateObject("Excel.Application")
    sExVersion = objExcelApp.Version: objExcelApp.Quit
 
    Set objShell = CreateObject("WScript.Shell")
    lLevel = objShell.RegRead("HKEY_CURRENT_USERSoftwareMicrosoftOffice" & sExVersion & "ExcelSecurityAccessVBOM")
    'Разрешаем доступ к объектной модели VBA
    'AccessVBOM - 0 - запрещен доступ; 1 - разрешен
    If lLevel = 0 Then
        objShell.RegWrite _
                "HKEY_CURRENT_USERSoftwareMicrosoftOffice" & _
                sExVersion & "ExcelSecurityAccessVBOM", 1, "REG_DWORD"
    End If
    Set objExcelApp = Nothing: Set objShell = Nothing
End Sub

Зато снять пароль с проекта VBA можно средствами самого VBA. Об этом я рассказывал в статье Как программно снять пароль с VBA проекта?
Других ограничений на программное внесение изменений в проект VBA я пока не нашел.

Также см.:
Ошибка — Cant find project or library
Как добавить код процедуры программно, скопировать модуль
Управление безопасностью макросов
Как запустить файл с включенными макросами?


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Макросы Excel – Обзор

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

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

Макро и VBA

Вы можете записывать и запускать макросы с помощью команд Excel или из Excel VBA.

VBA расшифровывается как Visual Basic для приложений и представляет собой простой язык программирования, доступный через Excel Visual Basic Editor (VBE), который доступен на вкладке DEVELOPER на ленте. Когда вы записываете макрос, Excel генерирует код VBA. Если вы просто хотите записать макрос и запустить его, вам не нужно изучать Excel VBA. Однако, если вы хотите изменить макрос, вы можете сделать это только путем изменения кода VBA в редакторе VBA Excel.

Вы узнаете, как записывать простой макрос и запускать его с помощью команд Excel, в главе «Создание простого макроса». Вы узнаете больше о макросах и о создании и / или изменении макросов из редактора Excel VBA в последующих главах.

Личная Макро Книга

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

О персональной книге макросов вы узнаете в главе «Сохранение всех ваших макросов в одной книге».

Макрос безопасности

Макросы будут храниться в виде кода VBA в Excel. Как и в случае с любым другим кодом, макрос-код также подвержен вредоносному коду, который может запускаться при открытии книги. Это угроза вашему компьютеру. Microsoft предоставила средство Macro Security, которое поможет вам защитить ваш компьютер от таких макровирусов.

Подробнее об этом вы узнаете в главе «Безопасность макросов».

Абсолютные ссылки и относительные ссылки

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

Вы узнаете об этом в главах – Использование абсолютных ссылок для макроса и Использование относительных ссылок для макроса.

Макрокод в VBA

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

Тем не менее, вы должны знать, как просмотреть код макроса. Вы можете узнать, как получить доступ к редактору VBA в Excel и о различных частях редактора VBA в главе – Excel VBA.

Вы можете узнать, как просмотреть код макроса в редакторе Excel VBA, и понять код макроса в главе – Понимание кода макроса.

Назначение макросов объектам

Вы можете назначить макрос объекту, такому как фигура, графика или элемент управления. Затем вы можете запустить макрос, нажав на этот объект. Об этом вы узнаете в главе «Назначение макросов объектам».

Запуск макросов

В Excel предусмотрено несколько способов запуска макроса. Вы можете выбрать способ запуска макроса. Об этих различных возможных способах запуска макроса вы узнаете в главе «Запуск макроса».

Создание макроса с помощью редактора VBA

Если вы решили написать код макроса, вы можете изучить его в главе «Создание макроса с помощью VBA Editor». Однако обязательным условием является знание Excel VBA.

Редактирование макроса

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

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

Формы пользователя

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

Вы узнаете, как создать пользовательскую форму и как использовать различные элементы управления в главе «Пользовательские формы».

Отладка макроса кода

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

Настройка макроса для запуска при открытии книги

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

Макросы Excel – Создание

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

Предположим, вам необходимо повторно собирать определенные результаты в следующем формате:

Формат

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

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

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

  • Нажмите вкладку VIEW на ленте.
  • Нажмите Макросы в группе Макросы.
  • Выберите Record Macro из выпадающего списка.

запись

Откроется диалоговое окно « Запись макроса ».

  • Введите MyFirstMacro в поле Имя макроса.

  • Введите «Простой макрос» в поле «Описание» и нажмите «ОК».

Введите MyFirstMacro в поле Имя макроса.

Введите «Простой макрос» в поле «Описание» и нажмите «ОК».

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

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

  • Нажмите в ячейке B2.

  • Создать таблицу.

  • Нажмите в другой ячейке на листе.

  • Нажмите вкладку VIEW на ленте.

  • Нажмите Макросы.

  • Выберите Остановить запись из выпадающего списка.

Нажмите в ячейке B2.

Создать таблицу.

Нажмите в другой ячейке на листе.

Нажмите вкладку VIEW на ленте.

Нажмите Макросы.

Выберите Остановить запись из выпадающего списка.

Остановить запись

Ваша запись макроса завершена.

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

Запуск макроса

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

  • Нажмите на новый лист.

Обратите внимание на активную ячейку. В нашем случае это А1.

  • Нажмите вкладку VIEW на ленте.

  • Нажмите Макросы .

  • Выберите View Macros из выпадающего списка.

Нажмите вкладку VIEW на ленте.

Нажмите Макросы .

Выберите View Macros из выпадающего списка.

Посмотреть

Откроется диалоговое окно «Макрос».

Диалоговое окно Macro

В списке макросов появляется только записанный вами макрос.

  • Щелкните имя макроса – MyFirstMacro в диалоговом окне «Макрос». Будет отображено описание, введенное вами во время записи макроса. Описание макроса позволяет определить, для какой цели вы записали макрос.

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

Щелкните имя макроса – MyFirstMacro в диалоговом окне «Макрос». Будет отображено описание, введенное вами во время записи макроса. Описание макроса позволяет определить, для какой цели вы записали макрос.

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

Список макросов

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

  • Хотя активной ячейкой перед запуском макроса была A1, таблица помещается в ячейку B2, как вы записали.

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

Хотя активной ячейкой перед запуском макроса была A1, таблица помещается в ячейку B2, как вы записали.

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

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

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

Хранение макроса

Вы можете задаться вопросом, как сохранить созданные макросы. В этом контексте вам нужно знать –

  • Хранение макроса
  • Сохранение файла с макросами

Как и при создании макроса, вы можете выбрать, где хранить этот конкретный макрос. Вы можете сделать это в диалоговом окне « Запись макроса ».

Установите флажок – Хранить макрос в . Доступны следующие три варианта:

  • Это рабочая тетрадь.
  • Новая рабочая тетрадь.
  • Личная Макро Книга

Магазин Макро

Эта рабочая тетрадь

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

Новая рабочая книга

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

Личная Макро Книга

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

Сохранение файла с макросами

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

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

Эта рабочая тетрадь

Примечание. Если вы нажмете кнопку «Да», Excel сохранит вашу книгу как файл без макросов .xls, а макрос, сохраненный с помощью параметра «Эта книга», не будет сохранен. Чтобы избежать этого, Excel предоставляет вам возможность сохранить рабочую книгу как макроподключенную книгу с расширением .xlsm.

  • Нажмите Нет в окне с предупреждением.
  • Выберите Excel Macro-Enabled Workbook (* .xlsm) в типе Сохранить как.
  • Нажмите Сохранить.

Сохранить файл

Вы узнаете больше об этом в последующих главах этого урока.

Макросы Excel – Макросы в одной книге

Excel предоставляет вам возможность хранить все ваши макросы в одной книге. Рабочая книга называется «Персональная макрокоманда» – Personal.xlsb. Это скрытая рабочая книга, хранящаяся на вашем компьютере, которая открывается каждый раз, когда вы открываете Excel. Это позволяет вам запускать макросы из любой книги. На каждом компьютере будет отдельная книга личных макросов, и вы не сможете поделиться ею между компьютерами. Вы можете просматривать и запускать макросы в своей личной книге макросов из любой книги на вашем компьютере.

Сохранение макросов в личной книге макросов

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

Выберите «Персональная книга макросов» в раскрывающемся списке под категорией « Хранить макрос» .

Персональный макрос

  • Запишите свой второй макрос.
  • Укажите детали макроса в диалоговом окне «Запись макроса», как показано ниже.
  • Нажмите ОК.

Второй макрос

Ваша запись начинается. Создайте таблицу, как показано ниже.

Запись начинается

  • Прекратить запись.

  • Нажмите вкладку VIEW на ленте.

  • Нажмите Макросы.

  • Выберите View Macros из выпадающего списка. Откроется диалоговое окно «Макрос».

Прекратить запись.

Нажмите вкладку VIEW на ленте.

Нажмите Макросы.

Выберите View Macros из выпадающего списка. Откроется диалоговое окно «Макрос».

Посмотреть макросы

Имя макроса отображается с префиксом PERSONAL.XLSB! указывает на то, что макрос находится в личной книге макросов.

Сохраните свою рабочую книгу. Он будет сохранен как файл .xls, так как макрос отсутствует в вашей книге и закроет Excel.

Вы получите следующее сообщение о сохранении изменений в Персональной книге макросов:

Сохранить

Нажмите кнопку Сохранить. Ваш макрос сохраняется в файле Personal.xlsb на вашем компьютере.

Скрытие / отображение персональной макрокоманды

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

  • Нажмите вкладку VIEW на ленте.

  • Нажмите Показать в группе окон.

Нажмите вкладку VIEW на ленте.

Нажмите Показать в группе окон.

Посмотреть вкладку

Откроется диалоговое окно «Показать».

Unhide

PERSONAL.XLSB появится в поле «Показать книгу» и нажмите «ОК».

Персональный XLSB

Теперь вы можете просматривать макросы, сохраненные в личной книге макросов.

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

  • Нажмите на личную книгу макросов.
  • Нажмите вкладку VIEW на ленте.
  • Нажмите Скрыть на ленте.

Запуск макросов, сохраненных в личной книге макросов

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

  • Нажмите «Просмотреть макросы».
  • Выберите имя макроса из списка макросов.
  • Нажмите кнопку «Выполнить». Макрос будет работать.

Добавление / удаление макросов в личной книге макросов

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

Вы можете удалить макрос в личной книге макросов следующим образом:

  • Убедитесь, что личная рабочая тетрадь с макросами не скрыта.
  • Щелкните имя макроса в диалоговом окне «Просмотр макросов».
  • Нажмите кнопку Удалить.

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

Скрытая рабочая книга

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

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

Макросы Excel – Безопасность

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

Что такое макро-вирусы?

Excel VBA, в котором написаны макросы, имеет доступ к большинству системных вызовов Windows и выполняется автоматически при открытии книг. Следовательно, существует потенциальная угроза существования вируса, написанного в виде макроса и скрытого в Excel, который выполняется при открытии книги. Поэтому макросы Excel могут быть очень опасны для вашего компьютера во многих отношениях. Однако Microsoft предприняла соответствующие меры для защиты книг от макровирусов.

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

Книги Excel с поддержкой макросов

Самая важная функция безопасности макросов Excel – расширения файлов.

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

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

Способы доверять книге с поддержкой макросов

Excel предоставляет три способа доверять книге с поддержкой макросов.

  • Помещение книг с поддержкой макросов в надежную папку

  • Проверка, если макрос имеет цифровую подпись

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

Помещение книг с поддержкой макросов в надежную папку

Проверка, если макрос имеет цифровую подпись

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

Помещение книг с поддержкой макросов в надежную папку

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

Проверка, если макрос имеет цифровую подпись

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

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

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

Безопасность

Вы можете установить любой из этих трех параметров в центре управления безопасностью в параметрах Excel.

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

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

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

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

  • Нажмите вкладку ФАЙЛ на ленте.

  • Нажмите Опции. Откроется диалоговое окно «Параметры Excel».

  • Нажмите Центр управления безопасностью на левой панели.

  • Нажмите кнопку Настройки центра управления безопасностью в Центре управления безопасностью Microsoft Excel.

Нажмите вкладку ФАЙЛ на ленте.

Нажмите Опции. Откроется диалоговое окно «Параметры Excel».

Нажмите Центр управления безопасностью на левой панели.

Нажмите кнопку Настройки центра управления безопасностью в Центре управления безопасностью Microsoft Excel.

Настройки макроса

Откроется диалоговое окно « Центр управления безопасностью ».

Трастовый центр

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

Настройки макроса

Настройки макроса находятся в центре управления безопасностью.

Настройки макроса

В настройках макроса доступны четыре параметра.

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

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

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

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

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

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

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

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

У вас есть дополнительная опция безопасности в Настройках макроса разработчика с флажком.

  • Доверительный доступ к объектной модели проекта VBA.

    • Этот параметр обеспечивает программный доступ к объектной модели Visual Basic для приложений (VBA) из клиента автоматизации.

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

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

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

Доверительный доступ к объектной модели проекта VBA.

Этот параметр обеспечивает программный доступ к объектной модели Visual Basic для приложений (VBA) из клиента автоматизации.

Этот параметр безопасности предназначен для кода, написанного для автоматизации программы Office и управления средой VBA и объектной моделью.

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

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

Определение надежного местоположения

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

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

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

Надежное расположение

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

Вы также можете найти варианты, которые офис не рекомендует, например, места в Интернете.

Макросы с цифровой подписью из надежных источников

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

Вы найдете доверенных издателей в центре доверия.

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

  • Выберите сертификат и нажмите «Просмотр».

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

Выберите сертификат и нажмите «Просмотр».

Доверенные издатели

Информация о сертификате отображается.

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

Использование предупреждающих сообщений

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

Предупреждающие сообщения

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

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

Включение / отключение предупреждений безопасности на панели сообщений

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

  • Нажмите вкладку ФАЙЛ на ленте.
  • Нажмите Опции. Откроется диалоговое окно «Параметры Excel».
  • Нажмите Траст-центр.
  • Нажмите кнопку Настройки центра управления безопасностью.
  • Нажмите Панель сообщений.

Появятся настройки панели сообщений для всех приложений Office.

Панель сообщений

В разделе « Отображение панели сообщений» есть два варианта.

Вариант 1 – Показывать панель сообщений во всех приложениях, когда активный контент, такой как макросы, заблокирован.

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

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

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

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

Показ сообщения

Вариант 2 – Никогда не показывать информацию о заблокированном контенте.

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

блокированный

Макросы Excel – абсолютные ссылки

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

Вы узнаете об абсолютных ссылках на макрос в этой главе. Вы узнаете об относительных ссылках в следующей главе.

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

Абсолютная Ссылка

Теперь отчет должен быть помещен в ячейку B2 и должен быть в заданном формате.

Образец, заполненный в отчете, будет таким, как показано ниже –

Образец

За исключением данных в следующих ячейках, информация является постоянной для каждого отчета, который вы генерируете для проекта.

  • C3 – Отчет за дату.
  • C13 – Количество задач, выполненных сегодня.
  • C14 – Общее количество выполненных задач.
  • C15 -% работа выполнена.

Из них также в C3 (Отчет за дату) вы можете поместить функцию Excel = TODAY (), которая помещает дату вашего отчета без вашего вмешательства. Кроме того, в ячейке C15 вы можете использовать формулу C14 / C12 и отформатировать ячейку C15 в процентах, чтобы рассчитать% Work Complete для вас в Excel.

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

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

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

Обеспечение Абсолютных Ссылок

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

  • Начните запись макроса.
  • Создайте новый лист.
  • Щелкните в любой ячейке, кроме B2, на новом листе.
  • Нажмите в ячейке B2.
  • Продолжить запись макроса.

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

Примечание . Первые три шага, приведенные выше, очень важны.

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

  • Если вы не нажмете другую ячейку в начале записи, даже если активная ячейка – B2, Excel поместит записанные шаги в активную ячейку. Когда вы запустите макрос, он поместит записанный формат отчета в любую часть рабочего листа на основе активной ячейки. Явно щелкая в ячейке, отличной от B2, а затем в ячейке B2, вы говорите рекордеру всегда размещать ваши макроэтапы в ячейке B2.

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

Если вы не нажмете другую ячейку в начале записи, даже если активная ячейка – B2, Excel поместит записанные шаги в активную ячейку. Когда вы запустите макрос, он поместит записанный формат отчета в любую часть рабочего листа на основе активной ячейки. Явно щелкая в ячейке, отличной от B2, а затем в ячейке B2, вы говорите рекордеру всегда размещать ваши макроэтапы в ячейке B2.

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

Вы можете начать запись макроса с помощью команды « Запись макроса» на ленте на вкладке «ПРОСМОТР» → «Макросы». Вы также можете нажать кнопку « Начать запись макроса» в левой части панели задач Excel.

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

  • Начните запись макроса. Откроется диалоговое окно « Запись макроса ».

  • Дайте осмысленное имя, чтобы идентифицировать макрос как отчет о конкретном проекте.

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

  • Дайте описание вашему макросу и нажмите ОК.

Начните запись макроса. Откроется диалоговое окно « Запись макроса ».

Дайте осмысленное имя, чтобы идентифицировать макрос как отчет о конкретном проекте.

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

Дайте описание вашему макросу и нажмите ОК.

Описание

Ваш макрос начинает запись.

  • Создайте новый лист. Это гарантирует, что ваш новый отчет будет на новом листе.

  • Щелкните в любой ячейке, кроме B2, на новом листе.

  • Нажмите в ячейке B2. Это гарантирует, что макрос всегда помещает ваши записанные шаги в B2.

  • Создайте формат для отчета.

  • Заполните статическую информацию для отчета по проекту.

  • Поместите = СЕГОДНЯ () в C3 и = C14 / C12 в ячейку C15.

  • Отформатируйте ячейки с датами.

Создайте новый лист. Это гарантирует, что ваш новый отчет будет на новом листе.

Щелкните в любой ячейке, кроме B2, на новом листе.

Нажмите в ячейке B2. Это гарантирует, что макрос всегда помещает ваши записанные шаги в B2.

Создайте формат для отчета.

Заполните статическую информацию для отчета по проекту.

Поместите = СЕГОДНЯ () в C3 и = C14 / C12 в ячейку C15.

Отформатируйте ячейки с датами.

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

Остановить запись

Остановить запись макроса можно либо с помощью команды « Остановить запись» на ленте на вкладке «ПРОСМОТР» → «Макросы», либо нажав кнопку «Остановить запись макроса», расположенную в левой части панели задач Excel.

Taskbar

Макрос вашего отчета о проекте готов. Сохраните книгу как макрокоманду (с расширением .xlsm).

Запуск макроса

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

  • Нажмите кнопку VIEW на ленте.
  • Нажмите Макросы.
  • Выберите View Macros из выпадающего списка. Откроется диалоговое окно «Макрос».
  • Щелкните макрос Report_ProjectXYZ.
  • Нажмите кнопку «Выполнить».

В вашей книге будет создан новый лист, а в ячейке B2 будет создан трафарет отчета.

Макросы Excel – Относительные ссылки

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

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

  • Название избирательного округа.
  • Общая численность населения в избирательном округе.
  • Количество избирателей в избирательном округе.
  • Количество избирателей мужского пола, и
  • Количество женщин-избирателей.

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

Относительные ссылки

Невозможно проанализировать данные в вышеуказанном формате. Поэтому расположите данные в таблице, как показано ниже.

Таблица

Если вы пытаетесь расположить данные в вышеуказанном формате –

  • Сбор данных из 280 избирательных округов занимает значительное время

  • Это может быть подвержено ошибкам

  • Это становится мирской задачей, не позволяющей вам сосредоточиться на технических вещах

Сбор данных из 280 избирательных округов занимает значительное время

Это может быть подвержено ошибкам

Это становится мирской задачей, не позволяющей вам сосредоточиться на технических вещах

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

Использование относительных ссылок

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

  • Нажмите вкладку VIEW на ленте.

  • Нажмите Макросы .

  • Нажмите « Использовать относительные ссылки» .

Нажмите вкладку VIEW на ленте.

Нажмите Макросы .

Нажмите « Использовать относительные ссылки» .

Относительная ссылка

Подготовка формата данных

Первым шагом в организации приведенных выше данных является определение формата данных в таблице с заголовками.

Создайте строку заголовков, как показано ниже.

Подготовка

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

Запишите макрос следующим образом –

  • Нажмите Запись макроса.

  • Дайте осмысленное имя, скажем, DataArrange макросу.

  • Тип = строка () – 3 в ячейке B4. Это потому, что номер S. является текущим номером строки – 3 строки над ним.

  • Разрежьте ячейки B5, B6, B7, B8 и B9 и вставьте их в ячейки C4-C8 соответственно.

  • Теперь нажмите на ячейку B5. Ваша таблица выглядит так, как показано ниже.

Нажмите Запись макроса.

Дайте осмысленное имя, скажем, DataArrange макросу.

Тип = строка () – 3 в ячейке B4. Это потому, что номер S. является текущим номером строки – 3 строки над ним.

Разрежьте ячейки B5, B6, B7, B8 и B9 и вставьте их в ячейки C4-C8 соответственно.

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

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

Первый набор данных расположен в первой строке таблицы. Удалите строки B6 – B11 и щелкните в ячейке B5.

Первый набор данных

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

Прекратите запись макроса. Ваш макрос для размещения данных готов.

Запуск макроса

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

Активная ячейка B5. Запустите макрос. Второй набор данных будет размещен во второй строке таблицы, а активной ячейкой будет B6.

Макрос Бег

Запустите макрос снова. Третий набор данных будет размещен в третьей строке таблицы, и активной ячейкой станет B7.

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

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

Запускайте макрос, пока все 280 наборов данных не будут объединены в 280 строк таблицы. Этот процесс занимает несколько секунд, и, поскольку шаги автоматизированы, все упражнение не содержит ошибок.

Макросы Excel – VBA

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

Вы узнаете, как создать макрос, написав код VBA, в главе «Создание макроса с помощью редактора VBA». Вы узнаете, как изменить макрос, отредактировав код VBA в главе «Редактирование макроса». В этой главе вы узнаете о возможностях Excel VBA.

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

Вы можете получить доступ к коду макроса в VBA на вкладке Разработчик на ленте.

разработчик

Если вы не найдете вкладку «Разработчик» на ленте, вам нужно добавить ее следующим образом:

  • Щелкните правой кнопкой мыши на ленте.

  • Выберите « Настроить ленту» в раскрывающемся списке.

Щелкните правой кнопкой мыши на ленте.

Выберите « Настроить ленту» в раскрывающемся списке.

Настроить ленту

Откроется диалоговое окно « Параметры Excel ».

  • Выберите « Основные вкладки» в раскрывающемся списке « Настройка ленты» .

  • Установите флажок «Разработчик» в списке «Основные вкладки» и нажмите «ОК». Появится вкладка разработчика.

Выберите « Основные вкладки» в раскрывающемся списке « Настройка ленты» .

Установите флажок «Разработчик» в списке «Основные вкладки» и нажмите «ОК». Появится вкладка разработчика.

Параметры Excel

Команды разработчика для макросов

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

Нажмите вкладку РАЗРАБОТЧИК на ленте. Следующие команды доступны в группе Код –

  • Visual Basic
  • макрос
  • Запись макроса
  • Используйте относительные ссылки
  • Макрос безопасности

управления

Команда Visual Basic используется для открытия редактора VBA в Excel, а команда Macros – для просмотра, запуска и удаления макросов.

Вы уже изучили команды, отличные от VBA Editor, в предыдущих главах.

VBA Editor

VBA Editor или VBE – это платформа для разработчиков VBA в Excel.

Откройте книгу – MyFirstMacro.xlsm, которую вы сохранили ранее в главе «Создание простого макроса» в этом учебном пособии.

Вы можете открыть VBE любым из двух способов –

Вариант 1. Нажмите Visual Basic в группе «Код» на вкладке «Разработчик» на ленте.

VBA Editor

Вариант 2. Нажмите «Редактировать» в диалоговом окне «Макрос», которое появляется при нажатии вкладки «ПРОСМОТР» → «Макросы» → «Просмотр макросов».

Посмотреть макрос

VBE появляется в новом окне.

VBE

Имя вашего учебника с поддержкой макросов Excel отображается с префиксом Microsoft Visual Basic для приложений.

Вы найдете следующее в VBE –

  • Проводник проектов.
  • Свойства.
  • Модуль окна с кодом.

Проводник проектов

В Project Explorer вы найдете имена проектов VBA. Под проектом вы найдете имена листов и модулей. При щелчке по имени модуля соответствующий код появляется в правой части окна.

Окно свойств

Свойства являются параметрами для объектов VBA. Когда у вас есть объект, такой как командная кнопка, его свойства появятся в окне свойств.

Окно модуля с кодом

Код макроса будет храниться в модуле в VBA. Когда вы выбираете макрос и нажимаете «Редактировать», код макроса появляется в соответствующем окне модуля.

Макросы Excel – Понимание кодов

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

Однако вы все равно можете просмотреть код макроса в редакторе Excel VBA и сопоставить его с шагами, которые вы записали в макросе. Вы узнаете, как просматривать код и понимать его для первого макроса, который вы создали в этом руководстве – MyFirstMacro.

Просмотр макрокода в VBA Editor

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

  • Откройте книгу, в которой вы сохранили макрос.
  • Нажмите вкладку VIEW на ленте.
  • Нажмите Макросы.
  • Выберите View Macros из выпадающего списка.

Просмотр

Откроется диалоговое окно «Макрос».

  • Нажмите MyFirstMacro в списке макросов.
  • Нажмите кнопку Изменить.

редактировать

Откроется редактор VBA и появится код макроса MyFirstMacro.

макрос

Понимание записанных действий как частей кода

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

  • Начните читать код.
  • Сопоставьте код с записанными шагами.

понимание

Прокрутите код, чтобы увидеть больше кода. Кроме того, вы можете увеличить окно кода.

Увеличить код

Обратите внимание, что код прост. Если вы изучите Excel VBA, вы можете создать макросы, написав код в редакторе VBA.

Вы узнаете, как написать код VBA для создания макроса, в главе «Создание макроса с помощью редактора VBA».

Макросы Excel – Назначение макросов объектам

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

В этой главе вы узнаете, как включить объект в рабочую книгу и назначить ему макрос.

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

Отзыв

Назначение макроса для фигуры

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

  • Нажмите вкладку INSERT на ленте.

  • Нажмите « Фигуры» в группе «Иллюстрации».

  • Выберите любую из готовых фигур, которые появляются в раскрывающемся списке. Например, форма Блок-схема – Подготовка, так как вы находитесь в процессе подготовки данных.

Нажмите вкладку INSERT на ленте.

Нажмите « Фигуры» в группе «Иллюстрации».

Выберите любую из готовых фигур, которые появляются в раскрывающемся списке. Например, форма Блок-схема – Подготовка, так как вы находитесь в процессе подготовки данных.

Назначение

Нарисуйте форму и отформатируйте ее.

Draw Shape

  • Щелкните правой кнопкой мыши на фигуре и выберите Edit Text из выпадающего списка.

  • Введите текст внутри фигуры – Запустить макрос.

  • Отформатируйте текст.

Щелкните правой кнопкой мыши на фигуре и выберите Edit Text из выпадающего списка.

Введите текст внутри фигуры – Запустить макрос.

Отформатируйте текст.

Редактировать текст

  • Щелкните правой кнопкой мыши на форме.
  • Выберите Назначить макрос из выпадающего списка.

Назначить макрос

Откроется диалоговое окно «Назначить макрос». Щелкните имя макроса, т.е. RelativeMacro, и нажмите ОК.

Имя макроса

Макрос присваивается фигуре.

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

  • Переместите курсор (указатель) на фигуру. Курсор (указатель) изменится на палец.

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

Переместите курсор (указатель) на фигуру. Курсор (указатель) изменится на палец.

Курсор

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

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

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

  • Нажмите вкладку INSERT на ленте.
  • Нажмите «Изображения» в группе «Иллюстрации».
  • Выберите файл, который содержит вашу графику.

графический

Остальные шаги такие же, как и в форме, приведенной в предыдущем разделе.

Назначение макроса элементу управления

Вставка элемента управления VBA и назначение ему макроса делает вашу работу профессиональной. Элементы управления VBA можно вставить на вкладке «Разработчик» на ленте.

  • Нажмите вкладку РАЗРАБОТЧИК на ленте.

  • Нажмите « Вставить» в группе «Элементы управления».

Нажмите вкладку РАЗРАБОТЧИК на ленте.

Нажмите « Вставить» в группе «Элементы управления».

Вставить

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

Элементы управления формой

  • Щелкните ячейку на листе, в которую вы хотите вставить элемент управления Button. Откроется диалоговое окно «Назначить макрос».

  • Нажмите на имя макроса и нажмите ОК.

Щелкните ячейку на листе, в которую вы хотите вставить элемент управления Button. Откроется диалоговое окно «Назначить макрос».

Нажмите на имя макроса и нажмите ОК.

Кнопочное управление

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

Кнопка управления

  • Щелкните правой кнопкой мыши на кнопке.
  • Нажмите Редактировать текст.
  • Тип – Запустить макрос.
  • Форматировать текст и изменить размер кнопки.

Тип Выполнить макрос

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

Использование элементов управления форм – это простой и эффективный способ взаимодействия с пользователем. Подробнее об этом вы узнаете в главе «Взаимодействие с пользователем».

Макросы Excel – Запуск макроса

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

Вы можете запустить макрос следующими способами:

  • Запуск макроса из вкладки «Вид»
  • Запуск макроса нажатием клавиши Ctrl и сочетания клавиш
  • Запуск макроса нажатием кнопки на панели быстрого доступа
  • Запуск макроса нажатием кнопки в пользовательской группе на ленте
  • Запуск макроса, нажав на графический объект
  • Запуск макроса из вкладки разработчика
  • Запуск макроса из редактора VBA

Запуск макроса из вкладки «Просмотр»

Вы уже научились запускать макрос на вкладке «Вид» на ленте. Краткий обзор –

  • Нажмите вкладку VIEW на ленте.
  • Нажмите Макросы.
  • Выберите View Macros из выпадающего списка.

Активная ячейка

Откроется диалоговое окно «Макрос».

  • Нажмите на имя макроса.
  • Нажмите кнопку «Выполнить».

Диалоговое окно

Запуск макроса с помощью сочетания клавиш

Вы можете назначить сочетание клавиш (Ctrl + клавиша) для макроса. Вы можете сделать это во время записи макроса в диалоговом окне « Создание макроса ». В противном случае вы можете добавить это позже в диалоговом окне « Параметры макроса ».

Добавление сочетания клавиш во время записи макроса

  • Нажмите на вкладку VIEW.
  • Нажмите Макросы.
  • Выберите Record Macro из выпадающего списка.

Откроется диалоговое окно «Создание макроса».

  • Введите имя макроса
  • Введите букву, скажем q, в поле рядом с Ctrl + под сочетанием клавиш.

Добавление

Добавление сочетания клавиш в параметры макроса

  • Нажмите на вкладку VIEW.
  • Нажмите Макросы.
  • Выберите View Macros из выпадающего списка.

Откроется диалоговое окно «Макрос».

  • Выберите имя макроса.
  • Нажмите кнопку «Параметры».

Быстрая клавиша

Откроется диалоговое окно «Параметры макроса». Введите букву, скажем q, в поле рядом с Ctrl + под сочетанием клавиш. Нажмите ОК.

Введите письмо

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

Примечание. Для сочетания клавиш макроса можно использовать любые строчные или прописные буквы. Если вы используете комбинацию клавиш Ctrl + буква, которая является сочетанием клавиш Excel, вы переопределите ее. Примеры включают в себя Ctrl + C, Ctrl + V, Ctrl + X и т. Д. Следовательно, используйте вашу юрисдикцию при выборе букв.

Запуск макроса через панель быстрого доступа

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

Предположим, у вас есть макрос с именем MyMacro в вашей личной книге макросов.

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

  • Щелкните правой кнопкой мыши на панели быстрого доступа.

  • Выберите « Настроить панель быстрого доступа» в раскрывающемся списке.

Щелкните правой кнопкой мыши на панели быстрого доступа.

Выберите « Настроить панель быстрого доступа» в раскрывающемся списке.

Быстрый доступ

Откроется диалоговое окно «Параметры Excel». Выберите Macros из выпадающего списка под категорией – Выберите команды из .

команды

Список макросов появляется в разделе Макросы.

  • Нажмите PERSONAL.XLSB! MyMacro.
  • Нажмите кнопку Добавить.

Список

Имя макроса отображается справа с изображением кнопки макроса.

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

  • Нажмите на имя макроса в правом поле.
  • Нажмите кнопку Изменить.

изменять

Откроется диалоговое окно « Изменить кнопку ». Выберите один символ, чтобы установить его в качестве значка кнопки.

Значок

Измените отображаемое имя, которое отображается, когда вы помещаете указатель на изображение кнопки на панели быстрого доступа, на значимое имя, например, «Запуск MyMacro» для этого примера. Нажмите ОК.

MyMacro

Имя макроса и символ значка изменяются на правой панели. Нажмите ОК.

Условное обозначение

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

Указатель

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

Запуск макроса в пользовательской группе

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

  • Щелкните правой кнопкой мыши на ленте.
  • Выберите «Настроить ленту» в раскрывающемся списке.

Пользовательская группа

Откроется диалоговое окно « Параметры Excel ».

  • Выберите «Основные вкладки» в разделе «Настройка ленты».
  • Нажмите Новая вкладка.

Вариант Excel

Новая вкладка (Custom) появится в списке основных вкладок.

  • Нажмите Новая вкладка (Custom).
  • Нажмите кнопку «Новая группа».

Новая группа (Пользовательская) отображается в разделе Новая вкладка (Пользовательская).

  • Нажмите Новая вкладка (Custom).
  • Нажмите кнопку Переименовать.

изготовленный на заказ

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

переименовывать

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

Имя новой вкладки изменится на Мои макросы (Пользовательский).

  • Нажмите Новая группа (Пользовательская).
  • Нажмите кнопку Переименовать.

Новая группа

Откроется диалоговое окно Rename . Введите имя группы в диалоговом окне «Отображаемое имя» и нажмите «ОК».

Отображаемое имя

Имя новой группы изменится на Персональные макросы (пользовательские).

Нажмите Макросы на левой панели под заголовком Выбрать команды из .

Команды из

  • Выберите имя вашего макроса, скажем – MyFirstMacro из списка макросов.
  • Нажмите кнопку Добавить.

Список макросов

Макрос будет добавлен в группу «Персональные макросы» (Custom).

Персональные макросы

  • Нажмите Мои макросы (Пользовательские) в списке.
  • Нажмите стрелки, чтобы переместить вкладку вверх или вниз.

Стрелы

Положение вкладки в списке основных вкладок определяет, где она будет размещена на ленте. Нажмите ОК.

Позиция

Ваша пользовательская вкладка – Мои макросы появится на ленте.

Нажмите на вкладку – Мои макросы. На ленте появится группа «Личные макросы». MyFirstMacro появляется в группе «Персональные макросы». Чтобы запустить макрос, просто нажмите MyFirstMacro в группе «Персональные макросы».

Нажмите Tab

Запуск макроса нажатием на объект

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

Подробнее о запуске макроса с использованием объектов см. Главу «Назначение макросов объектам».

Запуск макроса на вкладке разработчика

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

  • Перейдите на вкладку «Разработчик» на ленте.
  • Нажмите Макросы.

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

Откроется диалоговое окно «Макрос». Щелкните по имени макроса и затем нажмите «Выполнить».

Нажмите Run

Запуск макроса из редактора VBA

Вы можете запустить макрос из редактора VBA следующим образом:

  • Перейдите на вкладку «Выполнить» на ленте.
  • Выберите Run Sub / UserForm из выпадающего списка.

UserForm

Создание макроса с помощью редактора VBA

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

VBA объекты и модули

Прежде чем приступить к написанию макроса, разберитесь с объектами и модулями VBA.

  • Откройте книгу с поддержкой макросов первым макросом.
  • Нажмите вкладку РАЗРАБОТЧИК на ленте.
  • Нажмите Visual Basic в группе кода.

Объекты

Откроется окно редактора VBA.

Окно открывается

В окне Projects Explorer вы увидите следующее:

  • Книга с поддержкой макросов – MyFirstMacro.xlsm отображается как проект VBA.

  • Все рабочие листы и рабочая тетрадь отображаются в виде объектов Microsoft Excel в рамках проекта.

  • Модуль 1 появляется в разделе Модули. Ваш код макроса находится здесь.

  • Нажмите Module1.

  • Перейдите на вкладку «Вид» на ленте.

  • Выберите Код из выпадающего списка.

Книга с поддержкой макросов – MyFirstMacro.xlsm отображается как проект VBA.

Все рабочие листы и рабочая тетрадь отображаются в виде объектов Microsoft Excel в рамках проекта.

Модуль 1 появляется в разделе Модули. Ваш код макроса находится здесь.

Нажмите Module1.

Перейдите на вкладку «Вид» на ленте.

Выберите Код из выпадающего списка.

Код

Появляется код вашего макроса.

Код Макроса

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

Затем создайте второй макрос в той же книге – на этот раз написав код VBA.

Вы можете сделать это в два этапа –

  • Вставьте командную кнопку.

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

Вставьте командную кнопку.

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

Вставка командной кнопки

  • Создайте новый лист.

  • Нажмите на новый лист.

  • Нажмите кнопку РАЗРАБОТЧИК на ленте.

  • Нажмите «Вставить» в группе «Элементы управления».

  • Выберите значок кнопки в элементах управления формы .

Создайте новый лист.

Нажмите на новый лист.

Нажмите кнопку РАЗРАБОТЧИК на ленте.

Нажмите «Вставить» в группе «Элементы управления».

Выберите значок кнопки в элементах управления формы .

Вставка команды

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

Button1_Click

Откроется редактор Visual Basic.

Visual Basic

Вы увидите следующее –

  • Новый модуль – Module2 вставлен в Project Explorer.
  • Появится окно кода с заголовком Module2 (Код).
  • Подпроцедура Button1_Click () вставлена ​​в код Module2.

Кодирование макроса

Ваше кодирование наполовину сделано самим редактором VBA.

Например, введите MsgBox «С наилучшими пожеланиями!» В подпроцедуре Button1_Click (). Окно сообщения с заданной строкой будет отображаться при нажатии кнопки команды.

Окно сообщения

Это оно! Ваш код макроса готов к запуску. Как вам известно, код VBA не требует компиляции, так как работает с интерпретатором.

Запуск макроса из редактора VBA

Вы можете проверить свой макрос-код из самого редактора VBA.

  • Перейдите на вкладку «Выполнить» на ленте.

  • Выберите Run Sub / UserForm из выпадающего списка. Окно сообщения с введенной вами строкой появится на вашем листе.

Перейдите на вкладку «Выполнить» на ленте.

Выберите Run Sub / UserForm из выпадающего списка. Окно сообщения с введенной вами строкой появится на вашем листе.

Макрос из VBA

Вы можете видеть, что кнопка выбрана. Нажмите OK в окне сообщения. Вы вернетесь к редактору VBA.

Запуск макроса из рабочего листа

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

  • Нажмите где-нибудь на листе.
  • Нажмите кнопку. Окно сообщения появляется на листе.

Макрос из листа

Вы создали макрос, написав код VBA. Как вы можете заметить, кодировка VBA проста.

Макросы Excel – Редактирование

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

Если вы осваиваете Excel VBA, написание кода или изменение кода для макроса – тривиальная задача. Вы можете редактировать код макроса, как хотите. Если вы хотите внести всего несколько простых изменений в код макроса, вы можете даже скопировать код макроса из одного места в другое.

Копирование макроса

Вы создали два макроса – MyFirstMacro и Button1_Click в рабочей книге с поддержкой макросов MyFirstMacro.xlsm. Вы создали первый макрос, записав шаги, а второй макрос написав код. Вы можете скопировать код из первого макроса во второй макрос.

  • Откройте книгу MyFirstMacro.xlsm.

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

  • Нажмите Visual Basic. Откроется редактор Visual Basic.

  • Откройте код для Module1 (код макроса MyFirstMacro) и Module2 (код макроса Button1_Click ()).

  • Перейдите на вкладку «Окно» на ленте.

  • Выберите Tile Horizontally из выпадающего списка.

Откройте книгу MyFirstMacro.xlsm.

Перейдите на вкладку «Разработчик» на ленте.

Нажмите Visual Basic. Откроется редактор Visual Basic.

Откройте код для Module1 (код макроса MyFirstMacro) и Module2 (код макроса Button1_Click ()).

Перейдите на вкладку «Окно» на ленте.

Выберите Tile Horizontally из выпадающего списка.

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

копирование

  • Скопируйте строку MsgBox в коде Module2.

  • Вставьте его выше этой линии.

  • Изменить строку как –

    MsgBox «Привет, мир!»

  • Скопируйте следующий код из Module1.

Скопируйте строку MsgBox в коде Module2.

Вставьте его выше этой линии.

Изменить строку как –

MsgBox «Привет, мир!»

Скопируйте следующий код из Module1.

Скопировать код

Вставьте его в код Module2 между двумя строками кода MsgBox.

MsgBox

  • Нажмите значок Сохранить, чтобы сохранить код.

  • Нажмите кнопку на листе Excel. Появится окно сообщения с сообщением – Hello World! Нажмите ОК.

Нажмите значок Сохранить, чтобы сохранить код.

Нажмите кнопку на листе Excel. Появится окно сообщения с сообщением – Hello World! Нажмите ОК.

Привет, мир

Появятся данные таблицы (в соответствии с кодом, который вы скопировали), и появится окно с сообщением – С наилучшими пожеланиями!

Данные таблицы

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

Переименование макроса

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

  • Нажмите вкладку VIEW на ленте.
  • Нажмите Макросы.
  • Выберите View Macros из выпадающего списка.

Откроется диалоговое окно «Макрос».

  • Нажмите имя макроса – Button1_Click.
  • Нажмите кнопку Изменить.

Переименование макроса

Код макроса появляется в редакторе VBA.

Измените имя, отображаемое в строке Sub, с Button1_Click на RenamedMacro. Оставьте Sub и круглые скобки как они есть.

RenamedMacro

Откройте диалоговое окно «Макрос». Имя макроса отображается при переименовании.

Открыть макрос

  • Нажмите RenamedMacro.
  • Нажмите кнопку «Выполнить». Макрос работает. Теперь нажатие кнопки не требуется.

Удаление макроса

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

  • Откройте диалоговое окно «Макросы».
  • Нажмите на имя макроса.
  • Нажмите кнопку Удалить.

Удаление макроса

Появится сообщение с подтверждением удаления .

Подтвердить удаление

Нажмите Да, если вы уверены, что хотите удалить макрос. В противном случае нажмите Нет.

Макросы Excel – пользовательские формы

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

Основным преимуществом UserForm является то, что вы можете сэкономить время, которое вы тратите на то, как и как информация должна быть заполнена.

Создание пользовательской формы

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

  • Нажмите вкладку РАЗРАБОТЧИК на ленте.
  • Нажмите Visual Basic. Откроется окно Visual Basic для книги.
  • Нажмите Вставить,
  • Выберите UserForm из выпадающего списка.

Создание пользовательской формы

Пользовательская форма появляется в правой части окна.

Появляется пользовательская форма

Понимание пользовательской формы

Разверните окно UserForm.xlsx – UserForm1.

Вы находитесь в режиме дизайна сейчас. Вы можете вставить элементы управления в пользовательскую форму и написать код для соответствующих действий. Элементы управления доступны в панели инструментов. Свойства UserForm находятся в окне свойств. UserForm1 (подпись UserForm) указывается в разделе «Формы» в проводнике проектов.

Понимание UserForm

  • Измените заголовок UserForm на Project Report – Daily в окне свойств.
  • Измените имя пользовательской формы на ProjectReport.

Отчет о проекте

Изменения отражаются в пользовательской форме, свойствах и проводнике проекта.

Элементы управления в панели инструментов

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

Excel предоставляет два типа элементов управления – элементы управления формы и элементы управления ActiveX. Вы должны понимать разницу между этими двумя типами элементов управления.

Элементы управления формой

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

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

Элементы управления ActiveX

Элементы управления ActiveX могут использоваться в пользовательских формах VBA. Элементы управления ActiveX имеют широкие свойства, которые можно использовать для настройки их внешнего вида, поведения, шрифтов и других характеристик.

У вас есть следующие элементы управления ActiveX в UserForm ToolBox –

  • Указатель
  • этикетка
  • Текстовое окно
  • Поле со списком
  • ListBox
  • CheckBox
  • OptionButton
  • Рамка
  • Кнопка-переключатель
  • CommandButton
  • TabStrip
  • MultiPage
  • Полоса прокрутки
  • в полях ввода
  • Образ

В дополнение к этим элементам управления Visual Basic предоставляет функцию MsgBox, которую можно использовать для отображения сообщений и / или запроса пользователя о действии.

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

этикетка

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

пример

этикетка

Текстовое окно

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

пример

Текстовое окно

Список

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

  • Вставьте ListBox в пользовательскую форму.
  • Нажмите на список.
  • Введите ProjectCodes для Name в окне свойств ListBox.

Есть три типа списков –

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

  • Список выбора множественного выбора – Список списка множественного выбора включает либо один выбор, либо смежные (смежные) варианты.

  • Поле со списком расширенного выбора – Поле со списком расширенного выбора позволяет выбрать один, непрерывный и несмежный (или несвязанный) выбор.

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

Список выбора множественного выбора – Список списка множественного выбора включает либо один выбор, либо смежные (смежные) варианты.

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

Вы можете выбрать один из этих типов списков в окне свойств.

ListBox

  • Щелкните правой кнопкой мыши на пользовательской форме.
  • Выберите View Code из выпадающего списка. Откроется окно кода UserForm.
  • Нажмите Инициализировать в правом верхнем углу окна кода.
  • Введите следующее в Private Sub UserForm_Initialize ().
ProjectCodes.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5") 

инициализировать

  • Перейдите на вкладку «Выполнить» на ленте.
  • Выберите Run Sub / UserForm из выпадающего списка.

Выберите Run

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

Поле со списком

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

  • Вставьте ComboBox в пользовательскую форму.
  • Нажмите ComboBox.
  • Введите ProjectCodes2 для имени в окне свойств ComboBox.

Поле со списком

  • Щелкните правой кнопкой мыши на пользовательской форме.
  • Выберите View Code из выпадающего списка.
  • Откроется окно кода UserForm.

Введите следующее, как показано ниже.

ProjectCodes2.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5") 

Окно кода

  • Перейдите на вкладку «Выполнить» на ленте.
  • Выберите Run Sub / UserForm из выпадающего списка.

Запустить вкладку

Нажмите стрелку вниз, чтобы отобразить список элементов.

Нажмите стрелку вниз

Нажмите на нужный элемент, скажем, Project2016-5. Выбранная опция будет отображаться в поле со списком.

Обязательный пункт

CheckBox

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

Флажок может иметь два состояния:

  • Выбрано (включено), помечено галочкой в ​​поле
  • Очищено (выключено), обозначено прозрачной рамкой

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

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

  • Установите флажки в пользовательской форме, как показано ниже.

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

Установите флажки в пользовательской форме, как показано ниже.

CheckBox

  • Перейдите на вкладку «Выполнить» на ленте.
  • Выберите Run Sub / UserForm из выпадающего списка.
  • Нажмите на поля для выбранных вами вариантов.

Ящики

OptionButton

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

Кнопка выбора представлена ​​маленьким кружком. Кнопка выбора может иметь одно из следующих двух состояний:

  • Выбран (включен), обозначен точкой в ​​круге
  • Сброс (выключен), обозначается пробелом

Рамка

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

Элемент управления фреймом представлен прямоугольным объектом с необязательной меткой.

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

  • Вставьте две кнопки с надписями «Да» и «Нет» в элементе управления кадром. Опции Да и Нет являются взаимоисключающими.

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

Вставьте две кнопки с надписями «Да» и «Нет» в элементе управления кадром. Опции Да и Нет являются взаимоисключающими.

Рамка

  • Перейдите на вкладку «Выполнить» на ленте.
  • Выберите Run Sub / UserForm из выпадающего списка.
  • Нажмите на выбранный вами вариант.

Выбранный вариант

Кнопка-переключатель

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

Вставьте кнопку переключения на пользовательскую форму, как показано ниже –

TogglebButton

  • Перейдите на вкладку «Выполнить» на ленте.

  • Выберите Run Sub / UserForm из выпадающего списка. По умолчанию кнопка переключения будет в активированном состоянии.

Перейдите на вкладку «Выполнить» на ленте.

Выберите Run Sub / UserForm из выпадающего списка. По умолчанию кнопка переключения будет в активированном состоянии.

По умолчанию

Нажмите кнопку переключения. Кнопка переключения будет отключена.

Кнопка-переключатель

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

CommandButton

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

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

CommandButton

  • Щелкните правой кнопкой мыши на кнопке.
  • Введите следующий код в sub Commandbutton1_click ().
ProjectCodes2.DropDown 

CommandButton1

  • Перейдите на вкладку «Выполнить» на ленте.
  • Выберите Run Sub / UserForm из выпадающего списка.

Ежедневный отчет

Нажмите кнопку команды. Откроется выпадающий список со списком, так как это действие, которое вы написали в коде.

Поле со списком

TabStrip

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

Полоса прокрутки

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

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

Полоса прокрутки

  • Щелкните правой кнопкой мыши по полосе прокрутки.
  • Выберите View Code из выпадающего списка. Откроется окно кода.
  • Добавьте следующую строку под sub ScrollBar1_Scroll ().
TextBox2.Text = "Scrolling Values" 

Значение прокрутки

  • Перейдите на вкладку «Выполнить» на ленте.
  • Выберите Run Sub / UserForm из выпадающего списка.

Отчет ScrollBar

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

Текстовое окно

MsgBox ()

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

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

Функция MsgBox

Отображается значок окна сообщения

Вы можете использовать значки сообщений в окне, которые изображают конкретное сообщение. У вас есть несколько значков сообщений в соответствии с вашими целями –

  • Введите следующий код в ScrollBar1_scroll.
MsgBox "Select Ok or Cancel", vbOKCancel, "OK  - Cancel Message" 
MsgBox "It's an Error!", vbCritical, "Run time result" 
MsgBox "Why this value", vbQuestion, "Run time result" 
MsgBox "Value Been for a Long Time", vbInformation, "Run time result" 
MsgBox "Oh Is it so", vbExclamation, "Run time result" 
  • Перейдите на вкладку «Выполнить» на ленте.
  • Выберите Run Sub / UserForm из выпадающего списка.
  • Перетащите поле прокрутки.

Вы получите следующие сообщения последовательно.

Окна сообщений

Разработка UserForm

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

Обратитесь к учебнику VBA в этой библиотеке учебников для примера UserForm.

Макросы Excel – отладка кода

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

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

Отладка VBA

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

  • Пошаговое выполнение кода
  • Использование точек останова
  • Резервное копирование или движение вперед в коде
  • Не переступая через каждую строку кода
  • Запрашивать что-либо во время пошагового выполнения кода
  • Остановка казни

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

Пошаговое выполнение кода

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

Вы можете перейти к коду из диалогового окна «Макрос» в рабочей книге или из самого редактора VBA.

Войдя в код из рабочей книги

Чтобы войти в код из рабочей книги, выполните следующие действия:

  • Нажмите вкладку VIEW на ленте.
  • Нажмите Макросы.
  • Выберите View Macros из выпадающего списка.

Откроется диалоговое окно «Макрос».

  • Нажмите на имя макроса.
  • Нажмите кнопку Шаг в.

Шаг в

Откроется редактор VBA и в окне кода появится код макроса. Первая строка в коде макроса будет выделена желтым цветом.

Макрос код

Шаг в код от редактора VBA

Чтобы войти в код из редактора VBA, выполните следующие действия:

  • Нажмите вкладку РАЗРАБОТЧИК на ленте.
  • Нажмите Visual Basic. Откроется редактор VBA.
  • Нажмите на модуль, который содержит код макроса.

Код макроса появится в окне кода.

Шагая

  • Перейдите на вкладку «Отладка» на ленте.

  • Выберите Step into из выпадающего списка.

Перейдите на вкладку «Отладка» на ленте.

Выберите Step into из выпадающего списка.

Падать

Первая строка в коде макроса будет выделена. Код находится в режиме отладки, и параметры в раскрывающемся списке «Отладка» станут активными.

активный

Резервное копирование или движение вперед в коде

Вы можете двигаться вперед или назад в коде, выбрав Step Over или Step Out.

Не переступая через каждую строку кода

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

Использование точек останова

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

Использование часов

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

Остановка казни

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

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

Макросы Excel – Настройка макроса

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

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

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

Вы можете записать макрос Auto_Run следующим образом –

  • Нажмите вкладку VIEW на ленте.
  • Нажмите Макросы.
  • Нажмите Запись макроса. Откроется диалоговое окно «Запись макроса».
  • Введите Auto_Run в качестве имени макроса.
  • Введите описание и нажмите ОК.

Auto_Open

  • Начните запись макроса.
  • Остановить запись.
  • Сохранить рабочую книгу как макрокоманду.
  • Закройте рабочую книгу.
  • Откройте рабочую книгу. Макрос Auto_Run запустится автоматически.

Если вы хотите, чтобы Excel запускался без запуска макроса Auto_Open, удерживайте клавишу SHIFT при запуске Excel.

Ограничения Auto_Open Macro

Ниже приведены ограничения макроса Auto_Open:

  • Если рабочая книга, в которой вы сохранили макрос Auto_Open, содержит код для события Open книги, код события Open переопределит действия в макросе Auto_Open.

  • Макрос Auto_Open игнорируется, когда книга открывается при запуске кода, использующего метод Open.

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

Если рабочая книга, в которой вы сохранили макрос Auto_Open, содержит код для события Open книги, код события Open переопределит действия в макросе Auto_Open.

Макрос Auto_Open игнорируется, когда книга открывается при запуске кода, использующего метод Open.

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

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

Код VBA для открытого события рабочей книги

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

Откройте книгу, в которой вы сохранили макрос, который вы написали для абсолютных ссылок – Report_ProjectXYZ. Когда этот макрос выполняется, новый лист будет добавлен в рабочую книгу, а структура отчета проекта появится на новом листе.

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

Следуйте приведенной ниже процедуре в редакторе VBA.

  • Дважды щелкните ThisWorkbook в Projects Explorer.

  • В окне кода выберите Workbook в левом раскрывающемся списке и Open в правом раскрывающемся списке. Sub Workbook_Open () появляется.

Дважды щелкните ThisWorkbook в Projects Explorer.

В окне кода выберите Workbook в левом раскрывающемся списке и Open в правом раскрывающемся списке. Sub Workbook_Open () появляется.

Workbook_Open

  • Нажмите Модули в проводнике проектов.

  • Дважды щелкните по имени модуля, содержащего код макроса.

  • Скопируйте код макроса из модуля и вставьте его в Sub WorkBook_Open ().

Нажмите Модули в проводнике проектов.

Дважды щелкните по имени модуля, содержащего код макроса.

Скопируйте код макроса из модуля и вставьте его в Sub WorkBook_Open ().

Sub Workbook_open

Сохраните книгу с поддержкой макросов. Откройте его снова. Макрос запускается и вставляется новый лист со структурой отчета.

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

LightZ

Дата: Суббота, 02.02.2013, 19:28 |
Сообщение № 1

Группа: Авторы

Ранг: Форумчанин

Сообщений: 120


Репутация:

48

±

Замечаний:
0% ±


Всем привет!
Не знаю на сколько данный вопрос будет трудный для вас, но просто хочется расшевелить макросо-знавцев smile
Итак, вопрос:
Как с помощью одного макроса изменить КОД другого макроса.
Оба макроса находятся в одной книге.
Пример: есть модуль «tt», в нём есть макрос «test», в котором есть строка MsgBox «No :(«, необходимо с помощью второго макроса заменить данную строку с MsgBox на MsgBox с текстом «Yes :)»
Что находится в модуле «tt», помимо макроса «test» — нам не известно. Также не известно расположение данного макроса.
Мой вариант — 285 символов кода


E-mail: overseerpower@gmail.com
Skype: Bogdan_Rud
WMR: R166238237296

Сообщение отредактировал LightZВоскресенье, 03.02.2013, 12:51

 

Ответить

AlexM

Дата: Суббота, 02.02.2013, 22:53 |
Сообщение № 2

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Цитата (LightZ)

модуль «tt», в нём есть MsgBox «No :(«

Т.е в модуле «tt» макрос типа
[vba]

Код

Sub yy()
MsgBox «No :(»
End Sub

[/vba]
Так?



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

Hugo

Дата: Воскресенье, 03.02.2013, 00:09 |
Сообщение № 3

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ


excel@nxt.ru
webmoney: R418926282008 Z422237915069

 

Ответить

AlexM

Дата: Воскресенье, 03.02.2013, 08:28 |
Сообщение № 4

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Цитата (Hugo)

http://msoffice.nm.ru/faq/macros/module.htm#faq327

Это значит раскрылись? smile



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

Serge_007

Дата: Воскресенье, 03.02.2013, 09:29 |
Сообщение № 5

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Цитата (AlexM)

Это значит раскрылись?

А где

Цитата (LightZ)

285 символов кода

?
wink


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

AlexM

Дата: Воскресенье, 03.02.2013, 09:55 |
Сообщение № 6

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Я про ссылку. Там много решений
Видно что можно сделать значительно короче 285. Почти в три раза.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

Сообщение отредактировал AlexMВоскресенье, 03.02.2013, 10:03

 

Ответить

Serge_007

Дата: Воскресенье, 03.02.2013, 10:05 |
Сообщение № 7

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Цитата (AlexM)

можно сделать

Тогда за чем дело стало? smile


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

AlexM

Дата: Воскресенье, 03.02.2013, 10:08 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Ок.
[vba]

Код

ThisWorkbook.VBProject.VBComponents.Item(«tt»).CodeModule.ReplaceLine 2, «MsgBox «»Yes :)»»»

[/vba]
92 символа
Если в модуле «tt» макрос типа
[vba]

Код

Sub yy()
MsgBox «No :(»
End Sub

[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

Сообщение отредактировал AlexMВоскресенье, 03.02.2013, 10:09

 

Ответить

ikki

Дата: Воскресенье, 03.02.2013, 11:46 |
Сообщение № 9

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

Цитата (AlexM)

Если в модуле «tt» макрос типа

а условия каждый сам под себя переписывает как заблагорассудится? biggrin

автором темы сказано лишь:

Цитата (LightZ)

есть модуль «tt», в нём есть MsgBox «No :(«

пс. у меня решения пока нет.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

AlexM

Дата: Воскресенье, 03.02.2013, 12:04 |
Сообщение № 10

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Цитата (ikki)

условия каждый сам под себя переписывает как заблагорассудится?

Что не запрещено, то можно. smile



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

LightZ

Дата: Воскресенье, 03.02.2013, 12:15 |
Сообщение № 11

Группа: Авторы

Ранг: Форумчанин

Сообщений: 120


Репутация:

48

±

Замечаний:
0% ±


Изначально не известно как выглядит модуль «tt», дано только условие, что в макросе есть строка MsgBox «No :(«


E-mail: overseerpower@gmail.com
Skype: Bogdan_Rud
WMR: R166238237296

 

Ответить

LightZ

Дата: Воскресенье, 03.02.2013, 12:27 |
Сообщение № 12

Группа: Авторы

Ранг: Форумчанин

Сообщений: 120


Репутация:

48

±

Замечаний:
0% ±


Сократил до 229 символов


E-mail: overseerpower@gmail.com
Skype: Bogdan_Rud
WMR: R166238237296

Сообщение отредактировал LightZВоскресенье, 03.02.2013, 12:30

 

Ответить

LightZ

Дата: Воскресенье, 03.02.2013, 12:52 |
Сообщение № 13

Группа: Авторы

Ранг: Форумчанин

Сообщений: 120


Репутация:

48

±

Замечаний:
0% ±


Обновил условия в первом посте.


E-mail: overseerpower@gmail.com
Skype: Bogdan_Rud
WMR: R166238237296

 

Ответить

AlexM

Дата: Воскресенье, 03.02.2013, 12:59 |
Сообщение № 14

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Тогда 177 знаков



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

ikki

Дата: Воскресенье, 03.02.2013, 14:11 |
Сообщение № 15

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

Цитата (LightZ)

Оба макроса находятся в одной книге.

в какой?
текущей?
в той же, в которой мы пишем свой макрос?

пока 252 символа, включая пробелы, вставляемые редактором автоматически.

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


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

Сообщение отредактировал ikkiВоскресенье, 03.02.2013, 14:29

 

Ответить

AlexM

Дата: Воскресенье, 03.02.2013, 14:30 |
Сообщение № 16

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

У меня в текущей.
В одном модуле «tt» некий макрос, у которого есть строка MsgBox «No :(»
А во втором модуле макрос в 177 символов. Подсчет как в правилах форума, без строки заголовка макроса и без строки окончания.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

ikki

Дата: Воскресенье, 03.02.2013, 14:34 |
Сообщение № 17

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

Цитата (AlexM)

некий макрос

почему «некий»?
у него есть вполне конкретное имя.

Цитата (AlexM)

А во втором модуле

а откуда это следует?

вообще — смотрите первый пост. там всё довольно неплохо написано wink


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

Сообщение отредактировал ikkiВоскресенье, 03.02.2013, 14:38

 

Ответить

LightZ

Дата: Воскресенье, 03.02.2013, 14:39 |
Сообщение № 18

Группа: Авторы

Ранг: Форумчанин

Сообщений: 120


Репутация:

48

±

Замечаний:
0% ±


Ну, цель была расшевелить макросо-знавцев, возможно даже кому-то вникнуть в что-то новое smile
Так что — раскрываем карты?


E-mail: overseerpower@gmail.com
Skype: Bogdan_Rud
WMR: R166238237296

 

Ответить

ikki

Дата: Воскресенье, 03.02.2013, 14:41 |
Сообщение № 19

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

у меня самое длинное решение, поэтому напишу:
[vba]

Код

Sub x()
     With ThisWorkbook.VBProject.VBComponents.Item(«tt»).CodeModule
       n = .ProcStartLine(«test», 0)
       m = .ProcCountLines(«test», 0)
       s = .Lines(n, m)
       .DeleteLines n, m
       .AddFromString Replace(s, «MsgBox «»No :(«»», «MsgBox «»Yes :)»»»)
     End With
End Sub

[/vba]

а вообще времени немного прошло.
может, ещё желающие найдутся побить рекорд AlexМ‘а


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

Сообщение отредактировал ikkiВоскресенье, 03.02.2013, 14:45

 

Ответить

LightZ

Дата: Воскресенье, 03.02.2013, 14:59 |
Сообщение № 20

Группа: Авторы

Ранг: Форумчанин

Сообщений: 120


Репутация:

48

±

Замечаний:
0% ±


У меня чуток не так, с циклом:
[vba]

Код

    s = «MsgBox » & Chr(34) & «No :(» & Chr(34)
     x = «MsgBox » & Chr(34) & «Yes :)» & Chr(34)
     With ThisWorkbook.VBProject.VBComponents(«tt»).CodeModule
         For i = .ProcBodyLine(«test», 0) To (.ProcCountLines(«test», 0) + .ProcBodyLine(«test», 0))
             If .Lines(i, 1) = s Then
                 .ReplaceLine i, x
             End If
         Next
     End With

[/vba]


E-mail: overseerpower@gmail.com
Skype: Bogdan_Rud
WMR: R166238237296

 

Ответить

Like this post? Please share to your friends:
  • Vba excel макрос для удаления макросов
  • Vba excel массив уникальных значений
  • Vba excel массив синтаксис
  • Vba excel макрос для поиска
  • Vba excel массив с разными типами