Создание макросов и пользовательских функций на vba

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

Отображение в Microsoft Office 2007 и 2010

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

Office 2007

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

В офисе 2007 первоначально необходимо зайти в Меню, расположенное в верхнем левом углу, после чего сразу же осуществить переход в «Параметры Excel».

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

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

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

Также включить и отключить макрокоманды в Excel 2007 можно более простым способом, ничем не отличающимся от включения их в Excel 2010.

Office 2010

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

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

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

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

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

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

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

Итак, макрокоманды в табличных редакторах 2003, 2007 и 2010 способны восприниматься большинством пользователей в качестве лучших помощников, позволяющих рутинную работу автоматизировать и повысить её результативность.

Пример создания Сводной таблицы макросом VBA Excel (эксель)

Хочу сразу оговориться, что многие авторитетные сайты, не считают задачу формирования сводной таблицы средствами VBA уместной. По их мнению, прекрасный инструментарий Excel позволяет с наименьшими трудностями обходиться без макросов в этом вопросе… Но, ко мне обращались, представители аналитического сообщества, которым скучно, и неприятно утомительно, из раза в раз устанавливать десятки флажков (checkbox) по нескольким полям большой Базы данных…. Так что все зависит от конкретного случая…. Для кого-то это решение может стать лучшим….

Определение строк сводной таблицы.

На этом этапе важно определить уровни группировки данных (по Вашему желанию или желанию Вашего руководства). With svT.PivotFields(«Препарат») .Orientation = xlRowField .Position = 1 End With With svT.PivotFields(«Упаковка») .Orientation = xlRowField .Position = 2 End With

With svT.PivotFields(«Препарат») .Orientation = xlRowField .Position = 1 End With With svT.PivotFields(«Упаковка») .Orientation = xlRowField .Position = 2 End With

Как видим, здесь в группу «Препарат» попали все виды упаковок данного лекарства.

Определение фильтров сводной таблицы.

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

‘добавляем эталонные строковые значения в массив необходимого размера ReDim ar(0 To 5) ar(0) = «Москва»: ar(1) = «г Москва»: ar(2) = «Москва г»: ar(3) = «Москва, ТЦ «»Малая Родина»»»: ar(4) = «г Владимир»: ar(5) = «Зеленоград»

А сейчас формируем положительный фильтр по этим нескольким значениям

FilterPlusMinus True, ar, «Город» ‘оставляет только указанные города

Или отрицательный фильтр (результат показан на Рис.4)

FilterPlusMinus False, ar, «Город» ‘оставляет города, за исключением указанных

Конечно, фильтр, допускающий только одно значение выглядит проще…

‘добавление фильтра с одним значением With ActiveSheet.PivotTables(tNam).PivotFields(«Поставщик») .Orientation = xlPageField .Position = 1 End With svT.PivotFields(«Поставщик»).ClearAllFilters svT.PivotFields(«Поставщик»).CurrentPage = «Санофи Россия»

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

‘добавление фильтра со всеми значениями (для ручной корректировки в процессе анализа) With ActiveSheet.PivotTables(tNam).PivotFields(«Плательщик») .Orientation = xlPageField .Position = 1 End With svT.PivotFields(«Плательщик»).CurrentPage = «(All)»

Определение полей сводной таблицы с Итоговыми данными (здесь суммами значений).

Итоговые данные (не обязательно суммирование) всегда представляют исключительный интерес… Правда? Таких полей в сводной таблице может быть несколько, но в моем примере на «листе данных» больше нет числовых полей, поэтому и суммирование проводить больше, как по полю «Количество», не уместно…

svT.AddDataField svT.PivotFields(«Количество»), «Сумма по полю Количество», xlSum

И вот, результат.

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

Поэтому, изучать язык программирования VBA очень интересно и выгодно. Долго…? Времени на изучение жалко…? В принципе… это не обязательно… Как не обязательно знать электронную начинку телевизора, чтобы использовать этот телевизор по назначению… Если Вы сотрудничаете с программистом, то Вам останется – указать минимум данных и запустить уже готовый макрос… Все. Пробуйте…

Работа с таблицами

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

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

Работа с таблицей через название привязки

 'переменная для работы с конкретной таблицей
Set Table = Application.ActiveDocument.Bookmarks("НазваниеПривязки").Range.Tables(1)

countColumn = Table.Columns.Count 'количество столбцов таблицы

countRow = Table.Rows.Count 'количество строк таблицы

СellText  = Table.Cell(2,1).Range.Text 'значение ячейки во 2й строке 1го столбца
 

Работа с таблицей через её номер в документе

сountTables = ActiveDocument.Tables.Count 'количество таблиц в документе

Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst, Count:=5, Name:="" 'перейти к таблице номер 5

countColumn  = Selection.Tables(1).Columns.Count 'количество столбцов таблицы

countRow = Selection.Tables(1).Rows.Count 'количество строк таблицы

СellText  = Selection.Tables(1).Cell(2,1).Range.Text 'значение ячейки во 2й строке 1го столбца
 

При работе с таблицами следует помнить ряд моментов:

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

On Error Resume Next ' игнорирование <error 5991> - ячейки таблицы имеют вертикальное объединение
 

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

СellText = Selection.Tables(1).Cell(3,2).Range.Text 'текст ячейки со служебными символами

СellText = Left$(СellText, (Len(CellText) - 2)) 'убираем 2 последних символа ячейки - чистый текст
 

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

Пример 3

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

  1. Как объявлять переменные.
  2. Работу динамического массива.
  3. Цикл Do Until.
  4. Ссылки на ячейки в текущем листе Excel.
  5. Встроенную функцию Ubound, которая предназначена для определения размера массива.

‘ Подпрограмма, которая хранит значения колонки А текущего листа

‘ в массиве

Sub GetCellValues()

Dim iRow As Integer            ‘ сохраняется текущий номер строки

Dim dCellValues() As Double  ‘ массив, в котором хранятся значения ячеек

iRow = 1

ReDim dCellValues(1 To 10)

‘ Цикл Do Until, который извлекает значение каждой ячейки в столбце А

‘ активного листа до тех пор, пока ячейка не окажется пустой

Do Until IsEmpty(Cells(iRow, 1))

‘ Проверка, достаточно ли большой массив dCellValues 

‘ Если нет, используется ReDim, чтобы увеличить размер массива на 10 элементов.

If UBound(dCellValues) < iRow Then

ReDim Preserve dCellValues(1 To iRow + 9)

End If

‘ Сохраняется текущая ячейка в массиве CellValues

dCellValues(iRow) = Cells(iRow, 1).Value

iRow = iRow + 1

Loop

End Sub

Макрос Excel: пример 5

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

'Данный код показывает окно с сообщением, если на текущем рабочем листе
'выбрана ячейка B1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   'Проверяем выбрана ли ячейка B1
   If Target.Count = 1 And Target.Row = 1 And Target.Column = 2 Then

      'Если ячейка B1 выбрана, выполняем необходимое действие
      MsgBox "Вы выбрали ячейку B1"

   End If

End Sub

Что надо сделать, чтобы включить макросы в Excel 2007 или 2003

Включаем макросы в Excel 2007 или более ранних версиях.

  1. Открываем нужный документ и нажимаем на значок офиса в левом верхнем углу.
  2. В открывшемся окне выбираем «Параметры Excel«.
  3. Переходим в «Центр управления безопасностью» и нажимаем на «Параметры центра управления безопасностью«.
  4. Переходим на вкладку «Параметры макросов» и выбираем необходимый вариант использования.

Самый опасный вариант — включение всех макросов. Он открывает уязвимости в программе. Будьте осторожны.

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

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

Дополнительные данные → Похожие темы → Все про Exel → Как вставить значения → Как объединить ячейки → Как вставить форматы → Дополнительные данные → Вставить формулы→ Аргументы функции

Способы создания макросов в Excel

В Excel и других программах Microsoft Office макросы создаются в виде кода на языке программирования VBA (Visual Basic for Applications). Этот язык разработан в Microsoft специально для программ компании — он представляет собой упрощённую версию языка Visual Basic. Но это не значит, что для записи макроса нужно уметь кодить.

Есть два способа создания макроса в Excel:

  • Написать макрос вручную.
    Это способ для продвинутых пользователей. Предполагается, что они откроют окно Visual Basic в Еxcel и самостоятельно напишут последовательность действий для макроса в виде кода.
  • Записать макрос с помощью кнопки меню Excel.
    Способ подойдёт новичкам. В этом варианте Excel запишет программный код вместо пользователя. Нужно нажать кнопку записи и выполнить все действия, которые планируется включить в макрос, и после этого остановить запись — Excel переведёт каждое действие и выдаст алгоритм на языке VBA.

Разберёмся на примере, как создать макрос с помощью второго способа.

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

Так выглядят таблицы с продажами автосалона в первоначальном видеСкриншот: Skillbox Media

Создание случайного образца

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

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

Этот метод очень прост и может помочь вам мгновенно создать образец.

Понятие макроса

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

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

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

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

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

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

Макросы можно запускать по нажатию определенной комбинации клавиш. Например, если нажать Ctrl+J, можно запустить подпрограмму.

Интересный факт: известная программа бухгалтерского учета 1C изначально очень напоминала Excel, но потом ее функционал расширился до текущего.

Если же нужно давать компьютеру сложные инструкции, можно воспользоваться редактором Visual Basic, примеры кода в котором мы и рассмотрим немного позже.

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

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

Excel 2007-2016

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

Excel 2000-2003

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14

SubМакрос1()


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

 

WithSelection.Interior

.Pattern=xlSolid

.PatternColorIndex=xlAutomatic

.Color=5296274

.TintAndShade=

.PatternTintAndShade=

EndWith

EndSub

Число (5296274) в вашем примере будет другим, в зависимости от выбранного цвета заливки.

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

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

1
2
3

SubМакрос2()

Selection.Interior.Color=5296274

EndSub

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

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

Изменение системы нумерации версий и состава пакета «Мой офис»

Помощник для адаптации VBA-макросов появился в составе нового релиза пакета «Мой офис». Одновременно с выпуском обновления разработчики перевели свое ПО на новую систему нумерации версий.

Отныне число перед точкой определяет поколение продукта, следующее за ней – порядковый номер релиза в пределах текущего поколения. В названия самих продуктов теперь добавлен порядковый номер поколения, к примеру, «Мой офис Профессиональный 2» или «Мой офис Почта 2».

В актуальном релизе 2.0, содержащем 293 новых функции, изменился состав компонентов коммерческих продуктов. Самые заметные из них – в пакете «Мой офис Частное облако 2». В частности, была добавлена возможность работы со сторонними почтовыми системами «с целью улучшения интеграции продукта с инфраструктурой крупных корпоративных заказчиков», при этом почтовая система по умолчанию в составе пакета более не поставляется.

Сравниваем отечественный видеоредактор VSDC с продуктами Adobe
импортонезависимость

Почтовое решение можно приобрести отдельно или в составе ПО «Мой офис Профессиональный». Также продукт может интегрироваться с платформой CommuniGatePro и другими почтовыми решениями для отправки почтовых уведомлений.

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

Для этого следуйте нижеприведенной инструкции:

Клавиша для открытия основного окна макросов в программе

Запуск выбранного макроса

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

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

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

  • Как закрепить строку в Excel — Подробные инструкции
  • Выпадающий список в Excel — Инструкция по созданию

Работа с копией отчета, содержащей макрос

При копировании отчета названия всех привязок изменяются.

Рисунок 3. Названия привязок в исходном отчете

Рисунок 4. Названия привязок в копии отчета

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

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

Пример проверки наличия привязки типа «Список». В документе это закладки.

Определяем название привязки типа «Список», которая представляет нужную таблицу (см. Руководство пользователя → ).

BookmarkName = "Изменения_процесса_e1ded8b0" 'название привязки

        'Проверка на корректность названия привязки

        Dim BookmarkIs As Boolean 'сначала считаем, что нужной закладки нет
        Dim Bkm As Bookmark 'переменная типа Закладка

        For Each Bkm InActiveDocument.Bookmarks 'перебираем все закладки в документе

            IfBkm.Name = BookmarkName Then 'если нашли закладку с нашим именем

                BookmarkIs = True 'отмечаем, что закладка есть
                'получаем таблицу по названию привязки 
                Set SettableStatus = Application.ActiveDocument.Bookmarks(BookmarkName).Range.Tables(1)

            End If

        Next

If BookmarkIs Then 'если в документе закладка есть
    
   'производим необходимые действия c таблицей

End If

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

Пример проверки наличия привязки типа Объект

Определяем название привязки типа «Объект», которая представляет нужное поле в отчёте (см. статью Руководство пользователя → ).

VarName = "Статус_процесса_c9a10e8d" 'название привязки

      'Проверка наличия указанной привязки в документе
        Dim VarIs As Boolean 'сначала считаем что привязки нет

        'перебираем все переменные документа
        For Each aVar In ActiveDocument.Variables

            If aVar.Name = VarName Then 'если среди них есть с нашим именем

                VarIs = True 'отмечаем это
                'получаем значение переменной по названию привязки 
                MyVar = Application.ActiveDocument.Variables.Item(VarName).Value 

            End If

        Next aVar

If VarIs Then 'если в документе привязка есть

     'производим необходимые действия с переменной

End If

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

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

Макросы создаются с помощью языка программирования под названием Visual Basic (или просто аббревиатура VB).

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

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

Удобнее всего их создавать в таких версиях Ворда: 2007, 2010, 2013.

Меню макросов

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

Существую разные типы операторов.

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

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

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

Самый простой способ, чтобы начать создание собственного пользовательского макроса – это открыть средство записи.

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

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

Чтобы удалить макрос, следуйте инструкции:

Удаление пользовательского макроса в программе Excel

  1. Откройте окно управления с помощью клавиши «Макросы» на главной вкладке разработчика;
  2. Выберите необходимый вам объект и в правой части окна нажмите на кнопку удаления;
  3. Подтвердите удаление.

Тематические видеоролики:

Пример создания Сводной таблицы макросом VBA Excel (эксель)

Хочу сразу оговориться, что многие авторитетные сайты, не считают задачу формирования сводной таблицы средствами VBA уместной. По их мнению, прекрасный инструментарий Excel позволяет с наименьшими трудностями обходиться без макросов в этом вопросе… Но, ко мне обращались, представители аналитического сообщества, которым скучно, и неприятно утомительно, из раза в раз устанавливать десятки флажков (checkbox) по нескольким полям большой Базы данных…. Так что все зависит от конкретного случая…. Для кого-то это решение может стать лучшим….

Определение строк сводной таблицы.

На этом этапе важно определить уровни группировки данных (по Вашему желанию или желанию Вашего руководства). With svT.PivotFields(«Препарат») .Orientation = xlRowField .Position = 1 End With With svT.PivotFields(«Упаковка») .Orientation = xlRowField .Position = 2 End With

With svT.PivotFields(«Препарат») .Orientation = xlRowField .Position = 1 End With With svT.PivotFields(«Упаковка») .Orientation = xlRowField .Position = 2 End With

Как видим, здесь в группу «Препарат» попали все виды упаковок данного лекарства.

Определение фильтров сводной таблицы.

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

‘добавляем эталонные строковые значения в массив необходимого размера ReDim ar(0 To 5) ar(0) = «Москва»: ar(1) = «г Москва»: ar(2) = «Москва г»: ar(3) = «Москва, ТЦ «»Малая Родина»»»: ar(4) = «г Владимир»: ar(5) = «Зеленоград»

А сейчас формируем положительный фильтр по этим нескольким значениям

FilterPlusMinus True, ar, «Город» ‘оставляет только указанные города

Или отрицательный фильтр (результат показан на Рис.4)

FilterPlusMinus False, ar, «Город» ‘оставляет города, за исключением указанных

Конечно, фильтр, допускающий только одно значение выглядит проще…

‘добавление фильтра с одним значением With ActiveSheet.PivotTables(tNam).PivotFields(«Поставщик») .Orientation = xlPageField .Position = 1 End With svT.PivotFields(«Поставщик»).ClearAllFilters svT.PivotFields(«Поставщик»).CurrentPage = «Санофи Россия»

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

‘добавление фильтра со всеми значениями (для ручной корректировки в процессе анализа) With ActiveSheet.PivotTables(tNam).PivotFields(«Плательщик») .Orientation = xlPageField .Position = 1 End With svT.PivotFields(«Плательщик»).CurrentPage = «(All)»

Определение полей сводной таблицы с Итоговыми данными (здесь суммами значений).

Итоговые данные (не обязательно суммирование) всегда представляют исключительный интерес… Правда? Таких полей в сводной таблице может быть несколько, но в моем примере на «листе данных» больше нет числовых полей, поэтому и суммирование проводить больше, как по полю «Количество», не уместно…

svT.AddDataField svT.PivotFields(«Количество»), «Сумма по полю Количество», xlSum

И вот, результат.

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

Поэтому, изучать язык программирования VBA очень интересно и выгодно. Долго…? Времени на изучение жалко…? В принципе… это не обязательно… Как не обязательно знать электронную начинку телевизора, чтобы использовать этот телевизор по назначению… Если Вы сотрудничаете с программистом, то Вам останется – указать минимум данных и запустить уже готовый макрос… Все. Пробуйте…

Понравилась статья? Поделиться с друзьями:
Самоучитель Брин Гвелл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: