Создание таблицы с помощью кода VBA Excel. Создание умной и обычной пользовательской таблицы. Указание стиля умной таблицы, добавление строки итогов. Примеры.
Создание и удаление умной таблицы
Создание умной таблицы
Создается умная таблица Excel с помощью следующего кода:
ActiveSheet.ListObjects.Add(xlSrcRange, Range(«$A$1:$L$15»), , xlNo).Name _ = «МояТаблица1» |
В данном примере:
ActiveSheet — лист, на котором создается таблица, может быть любой лист рабочей книги Excel.
Range(«$A$1:$L$15») — диапазон, который преобразуется в таблицу. Можно использовать и такую форму: Range(Cells(1, 1), Cells(15, 12)), где индексы строк и столбцов можно заменить переменными.
xlNo — указывает, что первая строка выбранного диапазона не содержит заголовки столбцов (граф) будущей таблицы, и их необходимо добавить. В этом случае будет добавлена дополнительная строка с наименованиями столбцов по умолчанию: Столбец1, Столбец2, Столбец3 и т.д., которые в дальнейшем можно переименовать (количество строк в таблице, включая строку заголовков, получится на одну больше, чем в указанном диапазоне). Если в диапазоне уже содержатся заголовки столбцов будущей таблицы, то следует указать вместо xlNo значение xlYes. В этом случае первая строка указанного диапазона будет преобразована в строку заголовков, а если она будет не заполнена, то добавятся названия столбцов по умолчанию: Столбец1, Столбец2, Столбец3 и т.д. (количество строк в таблице, включая строку заголовков, будет то же, что и в указанном диапазоне).
МояТаблица1 — имя, присваиваемое создаваемой таблице. Имя должно быть без пробелов: при указании в коде VBA названия таблицы с пробелами, во время его выполнения Excel заменит пробелы знаками подчеркивания (по крайней мере, так происходит в Excel 2016).
Таблица будет создана со стилем по умолчанию (TableStyleMedium2 в Excel 2016).
Стиль умной таблицы
Присвоение стиля таблице (изменение стиля) осуществляется с помощью свойства TableStyle объекта ListObjects:
ActiveSheet.ListObjects(«МояТаблица1»).TableStyle = «TableStyleMedium15» |
Свойство TableStyle может принимать следующие значения:
- TableStyleLight (светлый) с индексом от 1 до 21 (в Excel 2016);
- TableStyleMedium (средний) с индексом от 1 до 28 (в Excel 2016);
- TableStyleDark (темный) с индексом от 1 до 11 (в Excel 2016).
Например, TableStyleLight5, TableStyleMedium24, TableStyleDark8.
Чтобы отменить стиль таблицы в коде VBA, необходимо свойству TableStyle присвоить пустую строку:
ActiveSheet.ListObjects(«МояТаблица1»).TableStyle = «» |
Этому коду соответствует выбор в разделе «Конструктор» на ленте инструментов Excel самого первого значка стилей в разделе «Светлый».
Добавление строки итогов
Строка итогов умной таблицы добавляется следующим образом:
ActiveSheet.ListObjects(«МояТаблица1»).ShowTotals = True |
Удаляется строка итогов умной таблицы так:
ActiveSheet.ListObjects(«МояТаблица1»).ShowTotals = False |
Удаление умной таблицы
Удалить умную таблицу очень просто:
ActiveSheet.ListObjects(«МояТаблица1»).Delete |
Создание пользовательской таблицы
Мне не приходилось на практике с помощью VBA Excel создавать умные таблицы, в отличие от пользовательских таблиц, которые использовались для улучшения восприятия различных отчетов или сгенерированных документов.
Для создания такой таблицы необходимо:
- определить диапазон, если он заранее не известен (иногда для этого может понадобиться определить номер последней заполненной строки);
- добавить границы ячеек;
- отформатировать строку заголовков;
- добавить строку итогов, если она необходима.
Подробнее о создании пользовательской таблицы в Примере 2.
Примеры создания таблиц
Задание для примеров
Набор данных для примеров создания таблиц
Допустим, на лист Excel переданы данные для заполнения табличной части товарного чека со следующими условиями:
- в табличной части 5 граф: № п/п, Наименование, Количество, Цена и Сумма;
- сколько наименований добавил пользователь неизвестно.
Нам необходимо:
- определить количество строк;
- добавить строку заголовков;
- отобразить сетку (границы ячеек);
- добавить строку итогов.
Таблицу будем оформлять двумя способами: путем создания умной и пользовательской таблиц.
Пример 1 — умная таблица
Упаковываем набор данных из задания в умную таблицу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub test1() ‘Объявляем переменную для присвоения ей количества строк Dim a As Long ‘Определяем количество строк a = Cells(1, 1).CurrentRegion.Rows.Count ‘Создаем умную таблицу с добавлением строки заголовков ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1),Cells(a, 5)), , xlNo).Name _ = «ТоварныйЧек1» ‘Изменяем названия граф Cells(1, 1) = «№ п/п» Cells(1, 2) = «Наименование» Cells(1, 3) = «Количество» Cells(1, 4) = «Цена» Cells(1, 5) = «Сумма» ‘Добавляем строку итогов ActiveSheet.ListObjects(«ТоварныйЧек1»).ShowTotals = True ‘Стиль оставляем по умолчанию End Sub |
Результат выполнения кода Примера 1 получится такой:
Умная таблица из заданного набора данных
Пример 2 — «обычная» таблица
Упаковываем набор данных из задания в пользовательскую таблицу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Sub test2() ‘Объявляем переменную для присвоения ей количества строк Dim a As Long ‘Определяем количество строк a = Cells(1, 1).CurrentRegion.Rows.Count ‘Добавляем строку заголовков Cells(1, 1).EntireRow.Insert ‘Указываем названия граф Cells(1, 1) = «№ п/п» Cells(1, 2) = «Наименование» Cells(1, 3) = «Количество» Cells(1, 4) = «Цена» Cells(1, 5) = «Сумма» ‘Добавляем сетку Range(Cells(1, 1), Cells(a + 1, 5)).Borders.LineStyle = True ‘Добавляем строку итогов Cells(a + 2, 4) = «Итого:» With Cells(a + 2, 5) .FormulaR1C1 = «=SUM(R[-« & a & «]C:R[-1]C)» .Borders.LineStyle = True .Font.Bold = True End With ‘Выделяем заголовки жирным шрифтом и ‘применяем автоподстройку ширины столбцов With Range(Cells(1, 1), Cells(1, 5)) .Font.Bold = True .EntireColumn.AutoFit End With End Sub |
Результат выполнения кода Примера 2 получится такой:
Пользовательская таблица из заданного набора данных
Если решите поэкспериментировать с моим кодом, добавьте любые данные в пять колонок на активном листе Excel, количество строк может быть любым, в пятой графе должны быть числа.
О работе с умной таблицей (обращение к ячейкам, строкам и столбцам; добавление и удаление строк и столбцов) рассказано в статье VBA Excel. Работа с умной таблицей
Всё о работе с ячейками в Excel-VBA: обращение, перебор, удаление, вставка, скрытие, смена имени.
Содержание:
Table of Contents:
- Что такое ячейка Excel?
- Способы обращения к ячейкам
- Выбор и активация
- Получение и изменение значений ячеек
- Ячейки открытой книги
- Ячейки закрытой книги
- Перебор ячеек
- Перебор в произвольном диапазоне
- Свойства и методы ячеек
- Имя ячейки
- Адрес ячейки
- Размеры ячейки
- Запуск макроса активацией ячейки
2 нюанса:
- Я почти везде стараюсь использовать ThisWorkbook (а не, например, ActiveWorkbook) для обращения к текущей книге, в которой написан этот код (считаю это наиболее безопасным для новичков способом обращения к книгам, чтобы случайно не внести изменения в другие книги). Для экспериментов можете вставлять этот код в модули, коды книги, либо листа, и он будет работать только в пределах этой книги.
- Я использую английский эксель и у меня по стандарту листы называются Sheet1, Sheet2 и т.д. Если вы работаете в русском экселе, то замените Thisworkbook.Sheets(«Sheet1») на Thisworkbook.Sheets(«Лист1»). Если этого не сделать, то вы получите ошибку в связи с тем, что пытаетесь обратиться к несуществующему объекту. Можно также заменить на Thisworkbook.Sheets(1), но это менее безопасно.
Что такое ячейка Excel?
В большинстве мест пишут: «элемент, образованный пересечением столбца и строки». Это определение полезно для людей, которые не знакомы с понятием «таблица». Для того, чтобы понять чем на самом деле является ячейка Excel, необходимо заглянуть в объектную модель Excel. При этом определения объектов «ряд», «столбец» и «ячейка» будут отличаться в зависимости от того, как мы работаем с файлом.
Объекты в Excel-VBA. Пока мы работаем в Excel без углубления в VBA определение ячейки как «пересечения» строк и столбцов нам вполне хватает, но если мы решаем как-то автоматизировать процесс в VBA, то о нём лучше забыть и просто воспринимать лист как «мешок» ячеек, с каждой из которых VBA позволяет работать как минимум тремя способами:
- по цифровым координатам (ряд, столбец),
- по адресам формата А1, B2 и т.д. (сценарий целесообразности данного способа обращения в VBA мне сложно представить)
- по уникальному имени (во втором и третьем вариантах мы будем иметь дело не совсем с ячейкой, а с объектом VBA range, который может состоять из одной или нескольких ячеек). Функции и методы объектов Cells и Range отличаются. Новичкам я бы порекомендовал работать с ячейками VBA только с помощью Cells и по их цифровым координатам и использовать Range только по необходимости.
Все три способа обращения описаны далее
Как это хранится на диске и как с этим работать вне Excel? С точки зрения хранения и обработки вне Excel и VBA. Сделать это можно, например, сменив расширение файла с .xls(x) на .zip и открыв этот архив.
Пример содержимого файла Excel:
Далее xl -> worksheets и мы видим файл листа
Содержимое файла:
То же, но более наглядно:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac xr xr2 xr3" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr2="http://schemas.microsoft.com/office/spreadsheetml/2015/revision2" xmlns:xr3="http://schemas.microsoft.com/office/spreadsheetml/2016/revision3" xr:uid="{00000000-0001-0000-0000-000000000000}">
<dimension ref="B2:F6"/>
<sheetViews>
<sheetView tabSelected="1" workbookViewId="0">
<selection activeCell="D12" sqref="D12"/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultRowHeight="14.4" x14ac:dyDescent="0.3"/>
<sheetData>
<row r="2" spans="2:6" x14ac:dyDescent="0.3">
<c r="B2" t="s">
<v>0</v>
</c>
</row>
<row r="3" spans="2:6" x14ac:dyDescent="0.3">
<c r="C3" t="s">
<v>1</v>
</c>
</row>
<row r="4" spans="2:6" x14ac:dyDescent="0.3">
<c r="D4" t="s">
<v>2</v>
</c>
</row>
<row r="5" spans="2:6" x14ac:dyDescent="0.3">
<c r="E5" t="s">
<v>0</v></c>
</row>
<row r="6" spans="2:6" x14ac:dyDescent="0.3">
<c r="F6" t="s"><v>3</v>
</c></row>
</sheetData>
<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
</worksheet>
Как мы видим, в структуре объектной модели нет никаких «пересечений». Строго говоря рабочая книга — это архив структурированных данных в формате XML. При этом в каждую «строку» входит «столбец», и в нём в свою очередь прописан номер значения данного столбца, по которому оно подтягивается из другого XML файла при открытии книги для экономии места за счёт отсутствия повторяющихся значений. Почему это важно. Если мы захотим написать какой-то обработчик таких файлов, который будет напрямую редактировать данные в этих XML, то ориентироваться надо на такую модель и структуру данных. И правильное определение будет примерно таким: ячейка — это объект внутри столбца, который в свою очередь находится внутри строки в файле xml, в котором хранятся данные о содержимом листа.
Способы обращения к ячейкам
Выбор и активация
Почти во всех случаях можно и стоит избегать использования методов Select и Activate. На это есть две причины:
- Это лишь имитация действий пользователя, которая замедляет выполнение программы. Работать с объектами книги можно напрямую без использования методов Select и Activate.
- Это усложняет код и может приводить к неожиданным последствиям. Каждый раз перед использованием Select необходимо помнить, какие ещё объекты были выбраны до этого и не забывать при необходимости снимать выбор. Либо, например, в случае использования метода Select в самом начале программы может быть выбрано два листа вместо одного потому что пользователь запустил программу, выбрав другой лист.
Можно выбирать и активировать книги, листы, ячейки, фигуры, диаграммы, срезы, таблицы и т.д.
Отменить выбор ячеек можно методом Unselect:
Selection.Unselect
Отличие выбора от активации — активировать можно только один объект из раннее выбранных. Выбрать можно несколько объектов.
Если вы записали и редактируете код макроса, то лучше всего заменить Select и Activate на конструкцию With … End With. Например, предположим, что мы записали вот такой макрос:
Sub Macro1()
' Macro1 Macro
Range("F4:F10,H6:H10").Select 'выбрали два несмежных диапазона зажав ctrl
Range("H6").Activate 'показывает только то, что я начал выбирать второй диапазон с этой ячейки (она осталась белой). Это действие ни на что не влияет
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535 'залили желтым цветом, нажав на кнопку заливки на верхней панели
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Почему макрос записался таким неэффективным образом? Потому что в каждый момент времени (в каждой строке) программа не знает, что вы будете делать дальше. Поэтому в записи выбор ячеек и действия с ними — это два отдельных действия. Этот код лучше всего оптимизировать (особенно если вы хотите скопировать его внутрь какого-нибудь цикла, который должен будет исполняться много раз и перебирать много объектов). Например, так:
Sub Macro11()
'
' Macro1 Macro
Range("F4:F10,H6:H10").Select '1. смотрим, что за объект выбран (что идёт до .Select)
Range("H6").Activate
With Selection.Interior '2. понимаем, что у выбранного объекта есть свойство interior, с которым далее идёт работа
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Sub Optimized_Macro()
With Range("F4:F10,H6:H10").Interior '3. переносим объект напрямую в конструкцию With вместо Selection
' ////// Здесь я для надёжности прописал бы ещё Thisworkbook.Sheet("ИмяЛиста") перед Range,
' ////// чтобы минимизировать риск любых случайных изменений других листов и книг
' ////// With Thisworkbook.Sheet("ИмяЛиста").Range("F4:F10,H6:H10").Interior
.Pattern = xlSolid '4. полностью копируем всё, что было записано рекордером внутрь блока with
.PatternColorIndex = xlAutomatic
.Color = 55555 '5. здесь я поменял цвет на зеленый, чтобы было видно, работает ли код при поочерёдном запуске двух макросов
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Пример сценария, когда использование Select и Activate оправдано:
Допустим, мы хотим, чтобы во время исполнения программы мы одновременно изменяли несколько листов одним действием и пользователь видел какой-то определённый лист. Это можно сделать примерно так:
Sub Select_Activate_is_OK()
Thisworkbook.Worksheets(Array("Sheet1", "Sheet3")).Select 'Выбираем несколько листов по именам
Thisworkbook.Worksheets("Sheet3").Activate 'Показываем пользователю третий лист
'Далее все действия с выбранными ячейками через Select будут одновременно вносить изменения в оба выбранных листа
'Допустим, что тут мы решили покрасить те же два диапазона:
Range("F4:F10,H6:H10").Select
Range("H6").Activate
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Единственной причиной использовать этот код по моему мнению может быть желание зачем-то показать пользователю определённую страницу книги в какой-то момент исполнения программы. С точки зрения обработки объектов, опять же, эти действия лишние.
Получение и изменение значений ячеек
Значение ячеек можно получать/изменять с помощью свойства value.
'Если нужно прочитать / записать значение ячейки, то используется свойство Value
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Value 'записать значение ячейки А1 листа "Sheet1" в переменную "a"
ThisWorkbook.Sheets("Sheet1").Cells (1,1).Value = 1 'задать значение ячейки А1 (первый ряд, первый столбец) листа "Sheet1"
'Если нужно прочитать текст как есть (с форматированием), то можно использовать свойство .text:
ThisWorkbook.Sheets("Sheet1").Cells (1,1).Text = "1"
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Text
'Когда проявится разница:
'Например, если мы считываем дату в формате "31 декабря 2021 г.", хранящуюся как дата
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Value 'эапишет как "31.12.2021"
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Text 'запишет как "31 декабря 2021 г."
Ячейки открытой книги
К ячейкам можно обращаться:
'В книге, в которой хранится макрос (на каком-то из листов, либо в отдельном модуле или форме)
ThisWorkbook.Sheets("Sheet1").Cells(1,1).Value 'По номерам строки и столбца
ThisWorkbook.Sheets("Sheet1").Cells(1,"A").Value 'По номерам строки и букве столбца
ThisWorkbook.Sheets("Sheet1").Range("A1").Value 'По адресу - вариант 1
ThisWorkbook.Sheets("Sheet1").[A1].Value 'По адресу - вариант 2
ThisWorkbook.Sheets("Sheet1").Range("CellName").Value 'По имени ячейки (для этого ей предварительно нужно его присвоить)
'Те же действия, но с использованием полного названия рабочей книги (книга должна быть открыта)
Workbooks("workbook.xlsm").Sheets("Sheet1").Cells(1,1).Value 'По номерам строки и столбца
Workbooks("workbook.xlsm").Sheets("Sheet1").Cells(1,"A").Value 'По номерам строки и букве столбца
Workbooks("workbook.xlsm").Sheets("Sheet1").Range("A1").Value 'По адресу - вариант 1
Workbooks("workbook.xlsm").Sheets("Sheet1").[A1].Value 'По адресу - вариант 2
Workbooks("workbook.xlsm").Sheets("Sheet1").Range("CellName").Value 'По имени ячейки (для этого ей предварительно нужно его присвоить)
Ячейки закрытой книги
Если нужно достать или изменить данные в другой закрытой книге, то необходимо прописать открытие и закрытие книги. Непосредственно работать с закрытой книгой не получится, потому что данные в ней хранятся отдельно от структуры и при открытии Excel каждый раз производит расстановку значений по соответствующим «слотам» в структуре. Подробнее о том, как хранятся данные в xlsx см выше.
Workbooks.Open Filename:="С:closed_workbook.xlsx" 'открыть книгу (она становится активной)
a = ActiveWorkbook.Sheets("Sheet1").Cells(1,1).Value 'достать значение ячейки 1,1
ActiveWorkbook.Close False 'закрыть книгу (False => без сохранения)
Скачать пример, в котором можно посмотреть, как доставать и как записывать значения в закрытую книгу.
Код из файла:
Option Explicit
Sub get_value_from_closed_wb() 'достать значение из закрытой книги
Dim a, wb_path, wsh As String
wb_path = ThisWorkbook.Sheets("Sheet1").Cells(2, 3).Value 'get path to workbook from sheet1
wsh = ThisWorkbook.Sheets("Sheet1").Cells(3, 3).Value
Workbooks.Open Filename:=wb_path
a = ActiveWorkbook.Sheets(wsh).Cells(3, 3).Value
ActiveWorkbook.Close False
ThisWorkbook.Sheets("Sheet1").Cells(4, 3).Value = a
End Sub
Sub record_value_to_closed_wb() 'записать значение в закрытую книгу
Dim wb_path, b, wsh As String
wsh = ThisWorkbook.Sheets("Sheet1").Cells(3, 3).Value
wb_path = ThisWorkbook.Sheets("Sheet1").Cells(2, 3).Value 'get path to workbook from sheet1
b = ThisWorkbook.Sheets("Sheet1").Cells(5, 3).Value 'get value to record in the target workbook
Workbooks.Open Filename:=wb_path
ActiveWorkbook.Sheets(wsh).Cells(4, 4).Value = b 'add new value to cell D4 of the target workbook
ActiveWorkbook.Close True
End Sub
Перебор ячеек
Перебор в произвольном диапазоне
Скачать файл со всеми примерами
Пройтись по всем ячейкам в нужном диапазоне можно разными способами. Основные:
- Цикл For Each. Пример:
Sub iterate_over_cells() For Each c In ThisWorkbook.Sheets("Sheet1").Range("B2:D4").Cells MsgBox (c) Next c End Sub
Этот цикл выведет в виде сообщений значения ячеек в диапазоне B2:D4 по порядку по строкам слева направо и по столбцам — сверху вниз. Данный способ можно использовать для действий, в который вам не важны номера ячеек (закрашивание, изменение форматирования, пересчёт чего-то и т.д.).
- Ту же задачу можно решить с помощью двух вложенных циклов — внешний будет перебирать ряды, а вложенный — ячейки в рядах. Этот способ я использую чаще всего, потому что он позволяет получить больше контроля над исполнением: на каждой итерации цикла нам доступны координаты ячеек. Для перебора всех ячеек на листе этим методом потребуется найти последнюю заполненную ячейку. Пример кода:
Sub iterate_over_cells() Dim cl, rw As Integer Dim x As Variant 'перебор области 3x3 For rw = 1 To 3 ' цикл для перебора рядов 1-3 For cl = 1 To 3 'цикл для перебора столбцов 1-3 x = ThisWorkbook.Sheets("Sheet1").Cells(rw + 1, cl + 1).Value MsgBox (x) Next cl Next rw 'перебор всех ячеек на листе. Последняя ячейка определена с помощью UsedRange 'LastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 'LastCol = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1 'For rw = 1 To LastRow 'цикл перебора всех рядов ' For cl = 1 To LastCol 'цикл для перебора всех столбцов ' Действия ' Next cl 'Next rw End Sub
- Если нужно перебрать все ячейки в выделенном диапазоне на активном листе, то код будет выглядеть так:
Sub iterate_cell_by_cell_over_selection() Dim ActSheet As Worksheet Dim SelRange As Range Dim cell As Range Set ActSheet = ActiveSheet Set SelRange = Selection 'if we want to do it in every cell of the selected range For Each cell In Selection MsgBox (cell.Value) Next cell End Sub
Данный метод подходит для интерактивных макросов, которые выполняют действия над выбранными пользователем областями.
- Перебор ячеек в ряду
Sub iterate_cells_in_row() Dim i, RowNum, StartCell As Long RowNum = 3 'какой ряд StartCell = 0 ' номер начальной ячейки (минус 1, т.к. в цикле мы прибавляем i) For i = 1 To 10 ' 10 ячеек в выбранном ряду ThisWorkbook.Sheets("Sheet1").Cells(RowNum, i + StartCell).Value = i '(i + StartCell) добавляет 1 к номеру столбца при каждом повторении Next i End Sub
- Перебор ячеек в столбце
Sub iterate_cells_in_column() Dim i, ColNum, StartCell As Long ColNum = 3 'какой столбец StartCell = 0 ' номер начальной ячейки (минус 1, т.к. в цикле мы прибавляем i) For i = 1 To 10 ' 10 ячеек ThisWorkbook.Sheets("Sheet1").Cells(i + StartCell, ColNum).Value = i ' (i + StartCell) добавляет 1 к номеру ряда при каждом повторении Next i End Sub
Свойства и методы ячеек
Имя ячейки
Присвоить новое имя можно так:
Thisworkbook.Sheets(1).Cells(1,1).name = "Новое_Имя"
Для того, чтобы сменить имя ячейки нужно сначала удалить существующее имя, а затем присвоить новое. Удалить имя можно так:
ActiveWorkbook.Names("Старое_Имя").Delete
Пример кода для переименования ячеек:
Sub rename_cell()
old_name = "Cell_Old_Name"
new_name = "Cell_New_Name"
ActiveWorkbook.Names(old_name).Delete
ThisWorkbook.Sheets(1).Cells(2, 1).Name = new_name
End Sub
Sub rename_cell_reverse()
old_name = "Cell_New_Name"
new_name = "Cell_Old_Name"
ActiveWorkbook.Names(old_name).Delete
ThisWorkbook.Sheets(1).Cells(2, 1).Name = new_name
End Sub
Адрес ячейки
Sub get_cell_address() ' вывести адрес ячейки в формате буква столбца, номер ряда
'$A$1 style
txt_address = ThisWorkbook.Sheets(1).Cells(3, 2).Address
MsgBox (txt_address)
End Sub
Sub get_cell_address_R1C1()' получить адрес столбца в формате номер ряда, номер столбца
'R1C1 style
txt_address = ThisWorkbook.Sheets(1).Cells(3, 2).Address(ReferenceStyle:=xlR1C1)
MsgBox (txt_address)
End Sub
'пример функции, которая принимает 2 аргумента: название именованного диапазона и тип желаемого адреса
'(1- тип $A$1 2- R1C1 - номер ряда, столбца)
Function get_cell_address_by_name(str As String, address_type As Integer)
'$A$1 style
Select Case address_type
Case 1
txt_address = Range(str).Address
Case 2
txt_address = Range(str).Address(ReferenceStyle:=xlR1C1)
Case Else
txt_address = "Wrong address type selected. 1,2 available"
End Select
get_cell_address_by_name = txt_address
End Function
'перед запуском нужно убедиться, что в книге есть диапазон с названием,
'адрес которого мы хотим получить, иначе будет ошибка
Sub test_function() 'запустите эту программу, чтобы увидеть, как работает функция
x = get_cell_address_by_name("MyValue", 2)
MsgBox (x)
End Sub
Размеры ячейки
Ширина и длина ячейки в VBA меняется, например, так:
Sub change_size()
Dim x, y As Integer
Dim w, h As Double
'получить координаты целевой ячейки
x = ThisWorkbook.Sheets("Sheet1").Cells(2, 2).Value
y = ThisWorkbook.Sheets("Sheet1").Cells(3, 2).Value
'получить желаемую ширину и высоту ячейки
w = ThisWorkbook.Sheets("Sheet1").Cells(6, 2).Value
h = ThisWorkbook.Sheets("Sheet1").Cells(7, 2).Value
'сменить высоту и ширину ячейки с координатами x,y
ThisWorkbook.Sheets("Sheet1").Cells(x, y).RowHeight = h
ThisWorkbook.Sheets("Sheet1").Cells(x, y).ColumnWidth = w
End Sub
Прочитать значения ширины и высоты ячеек можно двумя способами (однако результаты будут в разных единицах измерения). Если написать просто Cells(x,y).Width или Cells(x,y).Height, то будет получен результат в pt (привязка к размеру шрифта).
Sub get_size()
Dim x, y As Integer
'получить координаты ячейки, с которой мы будем работать
x = ThisWorkbook.Sheets("Sheet1").Cells(2, 2).Value
y = ThisWorkbook.Sheets("Sheet1").Cells(3, 2).Value
'получить длину и ширину выбранной ячейки в тех же единицах измерения, в которых мы их задавали
ThisWorkbook.Sheets("Sheet1").Cells(2, 6).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).ColumnWidth
ThisWorkbook.Sheets("Sheet1").Cells(3, 6).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).RowHeight
'получить длину и ширину с помощью свойств ячейки (только для чтения) в поинтах (pt)
ThisWorkbook.Sheets("Sheet1").Cells(7, 9).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).Width
ThisWorkbook.Sheets("Sheet1").Cells(8, 9).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).Height
End Sub
Скачать файл с примерами изменения и чтения размера ячеек
Запуск макроса активацией ячейки
Для запуска кода VBA при активации ячейки необходимо вставить в код листа нечто подобное:
3 важных момента, чтобы это работало:
1. Этот код должен быть вставлен в код листа (здесь контролируется диапазон D4)
2-3. Программа, ответственная за запуск кода при выборе ячейки, должна называться Worksheet_SelectionChange и должна принимать значение переменной Target, относящейся к триггеру SelectionChange. Другие доступные триггеры можно посмотреть в правом верхнем углу (2).
Скачать файл с базовым примером (как на картинке)
Скачать файл с расширенным примером (код ниже)
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' имеем в виду, что триггер SelectionChange будет запускать эту Sub после каждого клика мышью (после каждого клика будет проверяться:
'1. количество выделенных ячеек и
'2. не пересекается ли выбранный диапазон с заданным в этой программе диапазоном.
' поэтому в эту программу не стоит без необходимости писать никаких других тяжелых операций
If Selection.Count = 1 Then 'запускаем программу только если выбрано не более 1 ячейки
'вариант модификации - брать адрес ячейки из другой ячейки:
'Dim CellName as String
'CellName = Activesheet.Cells(1,1).value 'брать текстовое имя контролируемой ячейки из A1 (должно быть в формате Буква столбца + номер строки)
'If Not Intersect(Range(CellName), Target) Is Nothing Then
'для работы этой модификации следующую строку надо закомментировать/удалить
If Not Intersect(Range("D4"), Target) Is Nothing Then
'если заданный (D4) и выбранный диапазон пересекаются
'(пересечение диапазонов НЕ равно Nothing)
'можно прописать диапазон из нескольких ячеек:
'If Not Intersect(Range("D4:E10"), Target) Is Nothing Then
'можно прописать несколько диапазонов:
'If Not Intersect(Range("D4:E10"), Target) Is Nothing or Not Intersect(Range("A4:A10"), Target) Is Nothing Then
Call program 'выполняем программу
End If
End If
End Sub
Sub program()
MsgBox ("Program Is running") 'здесь пишем код того, что произойдёт при выборе нужной ячейки
End Sub
Содержание
- Что такое макрос?
- Запись макроса в Excel
- Первая программа на VBA Excel
- Запуск редактора Visual Basic
- Альтернативный вариант открытия файла
- Создание «умной» таблицы
- Стиль «умной» таблицы
- Добавление строки итогов
- Отображение вкладки “Разработчик” в ленте меню
- Знакомство с редактором VBA
- Создание сводных таблиц макросом
- Примеры макросов для автоматизации работы
- Окна редактора Visual Basic
Что такое макрос?
Для начала немного о терминологии.
Макрос – это код, написанный на встроенном в Excel языке VBA (Visual Basic for Application). Макросы могут создаваться как вручную, так и записываться автоматически с помощью так называемого макрорекодера.
Макрорекодер – это инструмент в Excel, который пошагово записывает все что вы выполняете в Excel и преобразует это в код на языке VBA. Макрорекодер создает очень подробный код (как мы увидим позже), который вы сможете при необходимости отредактировать в дальнейшем.
Записанный макрос можно будет запускать неограниченное количество раз и Excel повторит все записанные шаги. Это означает, что даже если вы ничего не знаете о VBA, вы можете автоматизировать некоторые задачи, просто записав свои шаги и затем повторно использовать их позже.
Теперь давайте погрузимся и посмотрим, как записать макрос в Excel.
Теперь давайте запишем очень простой макрос, который выбирает ячейку и вводит в нее текст, например “Excel”.
Вот шаги для записи такого макроса:
- Перейдите на вкладку “Разработчик”.
- В группе “Код” нажмите кнопку “Запись макроса”. Откроется одноименное диалоговое окно.
- В диалоговом окне “Запись макроса” введите имя для своего макроса, например “ВводТекста”. Есть несколько условий именования, которые необходимо соблюдать при назначении макроса. Например, вы не можете использовать пробелы между ними. Обычно я предпочитаю сохранять имена макросов как одно слово, с разными частями с заглавным первым алфавитом. Вы также можете использовать подчеркивание для разделения двух слов – например, “Ввод_текста”.
- Если вы хотите, то можете задать сочетание клавиш. В этом случае мы будем использовать ярлык Ctrl + Shift + N. Помните, что сочетание, которое вы указываете, будет отменять любые существующие горячие клавиши в вашей книге. Например, если вы назначили сочетание Ctrl + S, вы не сможете использовать это для сохранения рабочей книги (вместо этого, каждый раз, когда вы его используете, он выполняет макрос).
- В поле “Сохранить в” убедитесь, что выбрана опция “Эта книга”. Этот шаг гарантирует, что макрос является частью рабочей книги. Он будет там, когда вы сохраните его и снова откроете, или даже если вы поделитесь файлом с кем-то.
- Введите описание при необходимости. Обычно я этого не делаю, но если у вас много макросов, лучше указать, чтобы в будущем не забыть что делает макрос.
- Нажмите “ОК”. Как только вы нажмете OK, Excel начнет записывать ваши действия. Вы можете увидеть кнопку “Остановить запись” на вкладке “Разработчик”, которая указывает, что выполняется запить макроса.
- Выберите ячейку A2.
- Введите текст “Excel” (или вы можете использовать свое имя).
- Нажмите клавишу Enter. Вы попадете на ячейку A3.
- Нажмите кнопку “Остановить запись” на вкладке “Разработчик”.
Поздравляем! Вы только что записали свой первый макрос в Excel. Хотя макрос не делает ничего полезного, но он поможет нам понять как работает макрорекордер в Excel.
Теперь давайте рассмотрим код который записал макрорекодер. Выполните следующие действия, чтобы открыть редактор кода:
- Удалите текст в ячейке A2. Это нужно, чтобы проверить будет ли макрос вставлять текст в ячейку A2 или нет.
- Выберите любую ячейку – кроме A2. Это нужно проверить, выбирает ли макрос ячейку A2 или нет.
- Перейдите на вкладку “Разработчик”.
- В группе “Код” нажмите кнопку “Макросы”.
- В диалоговом окне “Макрос” щелкните макрос “ВводТекста”.
- Нажмите кнопку “Выполнить”.
Вы увидите, что как только вы нажмете кнопку “Выполнить”, текст “Excel” будет вставлен в ячейку A2 и выбрана ячейка A3. Это происходит за миллисекунды. Но на самом деле макрос последовательно выполнил записанные действия.
Примечание. Вы также можете запустить макрос с помощью сочетания клавиш Ctrl + Shift + N (удерживайте клавиши Ctrl и Shift, а затем нажмите клавишу N). Это тот же самый ярлык, который мы назначили макросу при его записи.
Первая программа на VBA Excel
Добавляем на стандартный модуль шаблон процедуры – строки ее начала и завершения, между которыми мы и будем писать свою первую программу (процедуру, подпрограмму).
- Откройте стандартный модуль двойным кликом по его ссылке в проводнике. Поместите в него курсор и нажмите кнопку «Procedure…» во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на вторую кнопку после значка Excel на панели инструментов.
В результате откроется окно добавления шаблона процедуры (Sub).
- Наберите в поле «Name» имя процедуры: «Primer1», или скопируйте его отсюда и вставьте в поле «Name». Нажмите кнопку «OK», чтобы добавить в модуль первую и последнюю строки процедуры.
Имя процедуры может быть написано как на латинице, так и на кириллице, может содержать цифры и знак подчеркивания. Оно обязательно должно начинаться с буквы и не содержать пробелы, вместо которых следует использовать знак подчеркивания.
- Вставьте внутрь шаблона процедуры следующую строку:
MsgBox "Привет"
.
Функция MsgBox выводит информационное сообщение с указанным текстом. В нашем примере – это «Привет».
- Проверьте, что курсор находится внутри процедуры, и запустите ее, нажав клавишу «F5». А также, запустить процедуру на выполнение можно, нажав на треугольник (на изображении под пунктом меню «Debug») или на кнопку «Run Sub/UserForm» во вкладке «Run» главного меню редактора VBA Excel.
Если вы увидели такое сообщение, как на изображении, то, поздравляю – вы написали свою первую программу!
Запуск редактора Visual Basic
Простейший способ запустить редактор Visual Basic в Excel – нажать комбинацию клавиш Alt+F11 (то есть нажать клавишу Alt и, удерживая её, нажать клавишу F11). После этого откроется окно редактора Visual Basic, как показано на картинке ниже. Имейте ввиду, что окно Excel остается открытым и находится позади окна редактора.
Альтернативный вариант открытия файла
Set objExcel = New Excel.Application Set wb = objExcel.Workbooks wb.Open fname, local:=True Set ws = wb.Item(1).ActiveSheet
При открытии файла можно использовать доп.параметры (приведу некоторые):
UpdateLinks – обновлять или нет внешние ссылки при открытии файла;
ReadOnly – открытие в режиме только для чтения;
Format – используемый при открытии разделитель (1 – символ tab, 2 – запятые, 3 – пробелы, 4 – точка с запятой, 5 – без разделителя, 6 – пользовательский разделитель, заданный в Delimiter);
Delimiter – пользовательский разделитель (в случае, если Format = 6);
Origin – тип операционной системы (xlMacintosh, xlWindows или xlMSDOS);
Local – использование в Excel языка такого же, как в открываемом файле.
Теперь можно выполнять какие-то действия с открытым файлом, просто обращаясь через wb и ws.
ws.Cells(1, 1).Value = "Test" ws.Cells(1, 1).Font.Size = 18 ' Поменять размер шрифта ws.Cells(1, 1).HorizontalAlignment = xlCenter '
Создание «умной» таблицы
Создается «умная» таблица Excel с помощью следующего кода:
ActiveSheet.ListObjects.Add(xlSrcRange, Range(“$A$1:$L$15”), , xlNo).Name _ = “МояТаблица1” |
В данном примере:
ActiveSheet – лист, на котором создается таблица, может быть любой лист рабочей книги Excel.
Range(“$A$1:$L$15”) – диапазон, который преобразуется в таблицу. Можно использовать и такую форму: Range(Cells(1, 1), Cells(15, 12)), где индексы строк и столбцов можно заменить переменными.
xlNo – указывает, что первая строка выбранного диапазона не содержит заголовки столбцов (граф) будущей таблицы, и их необходимо добавить. В этом случае будет добавлена дополнительная строка с наименованиями столбцов по умолчанию: Столбец1, Столбец2, Столбец3 и т.д., которые в дальнейшем можно переименовать (количество строк в таблице, включая строку заголовков, получится на одну больше, чем в указанном диапазоне). Если в диапазоне уже содержатся заголовки столбцов будущей таблицы, то следует указать вместо xlNo значение xlYes. В этом случае первая строка указанного диапазона будет преобразована в строку заголовков, а если она будет не заполнена, то добавятся названия столбцов по умолчанию: Столбец1, Столбец2, Столбец3 и т.д. (количество строк в таблице, включая строку заголовков, будет то же, что и в указанном диапазоне).
МояТаблица1 – имя, присваиваемое создаваемой таблице. Имя должно быть без пробелов: при указании в коде VBA названия таблицы с пробелами, во время его выполнения Excel заменит пробелы знаками подчеркивания (по крайней мере, так происходит в Excel 2016).
Таблица будет создана со стилем по умолчанию (TableStyleMedium2 в Excel 2016).
Стиль «умной» таблицы
Присвоение стиля таблице (изменение стиля) осуществляется с помощью свойства TableStyle объекта ListObjects:
ActiveSheet.ListObjects(“МояТаблица1”).TableStyle = “TableStyleMedium15” |
Свойство TableStyle может принимать следующие значения:
- TableStyleLight (светлый) с индексом от 1 до 21 (в Excel 2016);
- TableStyleMedium (средний) с индексом от 1 до 28 (в Excel 2016);
- TableStyleDark (темный) с индексом от 1 до 11 (в Excel 2016).
Например, TableStyleLight5, TableStyleMedium24, TableStyleDark8.
Чтобы отменить стиль таблицы в коде VBA, необходимо свойству TableStyle присвоить пустую строку:
ActiveSheet.ListObjects(“МояТаблица1”).TableStyle = “” |
Этому коду соответствует выбор в разделе «Конструктор» на ленте инструментов Excel самого первого значка стилей в разделе «Светлый».
Добавление строки итогов
Строка итогов «умной» таблицы добавляется следующим образом:
ActiveSheet.ListObjects(“МояТаблица1”).ShowTotals = True |
Удаляется строка итогов «умной» таблицы так:
ActiveSheet.ListObjects(“МояТаблица1”).ShowTotals = False |
Отображение вкладки “Разработчик” в ленте меню
Перед тем как записывать макрос, нужно добавить на ленту меню Excel вкладку “Разработчик”. Для этого выполните следующие шаги:
- Щелкните правой кнопкой мыши по любой из существующих вкладок на ленте и нажмите «Настроить ленту». Он откроет диалоговое окно «Параметры Excel».
- В диалоговом окне «Параметры Excel» у вас будут параметры «Настроить ленту». Справа на панели «Основные вкладки» установите флажок «Разработчик».
- Нажмите «ОК».
В результате на ленте меню появится вкладка “Разработчик”
Знакомство с редактором VBA
- Создайте новую книгу Excel и сохраните ее как книгу с поддержкой макросов с расширением .xlsm. В старых версиях Excel по 2003 год – как обычную книгу с расширением .xls.
- Нажмите сочетание клавиш «левая_клавиша_Alt+F11», которое откроет редактор VBA. С правой клавишей Alt такой фокус не пройдет. Также, в редактор VBA можно перейти по ссылке «Visual Basic» из панели инструментов «Разработчик» на ленте быстрого доступа. Если вкладки «Разработчик» на ленте нет, ее следует добавить в настройках параметров Excel.
В левой части редактора VBA расположен проводник проекта, в котором отображены все открытые книги Excel. Верхней строки, как на изображении, у вас скорее всего не будет, так как это – личная книга макросов. Справа расположен модуль, в который записываются процедуры (подпрограммы) с кодом VBA. На изображении открыт модуль листа, мы же далее создадим стандартный программный модуль.
- Нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку после значка Excel на панели инструментов.
После нажатия кнопки «Module» вы увидите ссылку на него, появившуюся в проводнике слева.
Создание сводных таблиц макросом
Источник информации для сводных таблиц всегда один и тот же – база данных. Набор данных образующих базу для обработки в Excel может быть не только на листах рабочей книги, а также и во внешних источниках.
Для описания способа создания сводных таблиц средствами процедур VBA будет использоваться таблица, которая содержит данные по месяцам о оборотах семи магазинов фирмы за последние несколько лет деятельности.
Тестовая база для примера состоит из сгруппированных данных в 21 строке. Благодаря использованию сводных таблиц можно в читабельный вид презентовать изменение данных и извлечь соответственные результаты анализа.
Список данных по каждому месяцу определенного года содержит информацию о размере оборотов в отдельных магазинах фирмы. В таблице включен режим автофильтра, чтобы упростить на сколько возможно предварительный визуальный анализ данных.
С помощью макроса VBA создадим из этого большого объема данных читабельный и удобный для визуального анализа отчет в виде сводной таблице. Нам нужна сводная таблица отчета, в котором без труда можно прочитать интересующую нас информацию без визуального анализа сотен строк в исходной базе данных.
В данном примере создание сводной таблицы VBA-макросом будет достаточно простым. Простота решения будет достигнута за счет симуляции использования подобных параметров и действий, которые предоставляет к распоряжению мастер сводных таблиц в Excel. Используя экземпляр объекта PivotCaches запишем настройки своей сводной таблицы присвоив ей определенное имя. Это позволит потом непосредственно ссылаться на сводную таблицу в любой части кода. Для создания сводной таблицы используя макрос будем использовать метод PivotTableWizard. На этом же шаге будем использовать возможности объекта PivotFields, в котором определим структуру сводной таблицы с учетом исходных данных источника.
Написание кода макросов в Excel всегда начинается с открытия VBA-редактора (ALT+F11): «РАЗРАБОТЧИК»-«Код»-«Visual Basic».
Затем создадим модуль где будет храниться исходный код. Для этого выберите инструмент в редакторе VBA: «Insert»-«Module». В появившемся окне модуля введите следующий VBA-код макроса:
SubCreateTableM()
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="Лист1!A1:D21").CreatePivotTable TableDestination:="", TableName:="ТаблицаМ"
WithActiveSheet
.Name ="Анализ"
.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
End With
WithActiveSheet.PivotTables("ТаблицаМ")
.SmallGrid =True
.PivotFields("Оборот").Orientation = xlDataField
.PivotFields("Год").Orientation = xlPageField
.PivotFields("Месяц").Orientation = xlRowField
.PivotFields("Магазины").Orientation = xlColumnField
End With
End Sub
Теперь достаточно лишь запустить макрос выбрав инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«CreateTableM»-«Выполнить»:
В результате будет автоматически сгенерированная сводная таблица с помощью макроса.
Примеры макросов для автоматизации работы
Как выделить повторяющиеся значения в Excel разными цветами?.
Пример удобного макроса для автоматической подсветки добирающихся значений ячеек разными цветами. Как выделить разным цветом дубликаты ячеек?
Макрос для поиска ближайшего значения заданному на всех листах книги Excel.
Готовое решение для поиска на всех листах рабочей книги как точного, так и максимально приближенного исходного значения. VBA код макрос для нахождения и получения числа с любого листа книги.
Макрос для слияния данных при серийной печати рассылок в Excel.
Альтернатива инструменту слияния в Word для печати рассылок прямо из Excel. Исходный код макроса, который выполняет слияние данных для серийной печати рассылок.
Макросы для фильтра сводной таблицы в Excel.
Как автоматизировать фильтр в сводных таблицах с помощью макроса? Исходные коды макросов для фильтрации и скрытия столбцов в сводной таблице.
Макрос позволяет рассчитать процент в сводной таблице Excel.
Как быстро преобразовать значения сводной таблицы на доли в процентном соотношении к общим итогам по строкам и по столбцам? Исходные коды макросов для работы с процентами.
Макрос для настройки полей и форматирования сводной таблицы.
Управление полями сводной таблицы с помощью макроса. Исходный код VBA-макроса для настройки и изменения структуры в сводных таблицах.
Макрос для создания сводной таблицы в Excel.
Как автоматически сгенерировать сводную таблицу с помощью макроса? Исходный код VBA для создания и настройки сводных таблиц на основе исходных данных.
Макросы для изменения формата ячеек в таблице Excel.
Как форматировать ячейки таблицы макросом? Изменение цвета шрифта, заливки и линий границ, выравнивание. Автоматическая настройка ширины столбцов и высоты строк по содержимому с помощью VBA-макроса.
VBA макрос для поиска скрытых строк и столбцов на листе Excel.
Поиск всех скрытых строк и столбцов на рабочем листе с помощью VBA-макроса. Исходные коды макросов для получения сводной информации о скрытых строках и столбцах рабочего листа.
Макрос для копирования и переименования листов Excel.
Как одновременно копировать и переименовывать большое количество листов одним кликом мышкой? Исходный код макроса, который умеет одновременно скопировать и переименовать любое количество листов.
Окна редактора Visual Basic
В процессе работы в редакторе Visual Basic в Excel могут быть открыты различные окна. Управление окнами осуществляется в меню View, которое находится в верхней части окна редактора VBA.
Источники
- https://micro-solution.ru/excel/vba/first-macros
- https://vremya-ne-zhdet.ru/vba-excel/nachinayem-programmirovat-s-nulya/
- https://office-guru.ru/excel/redaktor-visual-basic-v-excel-451.html
- https://codernotes.ru/articles/vba/rabota-s-excel-fajlom-iz-vba.html
- https://vremya-ne-zhdet.ru/vba-excel/sozdaniye-tablitsy/
- https://exceltable.com/vba-macros/makros-svodnoy-tablicy
- https://exceltable.com/vba-macros/
В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц Excel средствами VBA.
VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
В процессе запыления данных сотрудниками отдела на некоторых листах были изменены форматы ячеек:
Необходимо сбросить форматирование ячеек и сделать так чтобы на всех таблицах планов выполнения работ были одинаковые форматы отображения данных. Формат ячеек для исходной таблицы должен быть закреплен за шаблоном, чтобы можно было сделать сброс и применять заданный стиль оформления в дальнейшем.
Чтобы выполнять такие задачи вручную можно попытаться облегчить процесс настройки множества опций форматирования для многих диапазонов ячеек на разных листах и рабочих книгах. Плюс к о всему можно ошибиться и применить несколько другие настройки форматирования.
Макросы Excel прекрасно справляются с форматированием ячеек на рабочих листах. Кроме того, делают это быстро и в полностью автоматическом режиме. Воспользуемся этими преимуществами и для решения данной задачи напишем свой код VBA-макроса. Он поможет нам быстро и безопасно сбрасывать форматы на исходный предварительно заданный в шаблоне главной таблицы.
Чтобы написать свой код макроса откройте специальный VBA-редактор в Excel: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:
В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него такой VBA-код макроса:
Sub SbrosFormat()
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
End With
End Sub
Теперь если нам нужно сбросить форматирование таблицы на исходный формат отображения ее данных, выделите диапазон ячеек A1:E20 и запустите макрос: «РАЗРАБОЧТИК»-«Код»-«Макросы»-«SbrosFormat»-«Выполнить». Результат работы макроса изображен ниже на рисунке:
Таблица приобрела формат, который определен макросом. Таким образом код VBA нам позволяет сбросить любые изменения формата ячеек на предустановленный автором отчета.
Описание VBA-макроса для формата ячеек таблицы Excel
Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:
- Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
- Включен построчный перенос текста.
- Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
- Сброс цвета шрифта на авто.
- Удаляется любая заливка ячеек.
- Ширина столбцов автоматически настраивается под текст в ячейках.
- Автоматически настроить высоту строк по содержимому ячеек.
Модификация исходного кода макроса для форматирования
Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу xlHAlignCenter на xlHAlignRight. Она находиться в свойстве .HorizontalAlignment. Сделайте это следующим образом:
.HorizontalAlignment = xlHAlignRight.
Таким же образом можно выровнять текст по левую сторону изменив значение константы на xlHAlignLeft. Или можно выровнять положение текста по ширине ячейки используя константу xlHAlignJustify.
Чтобы макрос выравнивал текст в ячейках по вертикали к низу, измените строку кода, отвечающую за данную настройку форматирования. Измените константу, которая присваивается к свойству VerticalAlignment в следующий способ:
Если хотите выровнять текс к верху ячейки, тогда воспользуйтесь константой xlHAlignTop.
Если нужно применить для границ ячеек толстую и пунктирную линию в синем цвете, смодифицируйте инструкцию, отвечающую за формат линий:
.Borders.LineStyle = xlDash
.Borders.Color = vbBlue
.Borders.Weight = xlMedium
Описание настройки форматирования для линий границ ячеек. Мы будем получать разные дополнительные типы линий границ если для свойства LineStyle присваивать такие константы:
- xlDoshDot – применяется для рисования пунктирных линий в границах ячеек;
- xlDouble – рисует двойную линию;
- xlHairLine – рисует тонкую линию;
- xlThick – для рисования очень толстой линии.
Для настройки цвета линий Excel предлагает всего 8 констант для определенных цветов. Константы для настройки цвета линий границ для свойства Color:
- vbBlack – черный;
- vbWhite – белый;
- vbRed – красный;
- vbGreen –зеленый;
- vbBlue – синий;
- vbYellow – желтый;
- vbMagenta – алый;
- vbCyan – голубой.
Но при необходимости присвоить линиям границ другие цвета можно вместо константы для свойства Color записать функцию RGB(). Достаточно лишь в аргументе этой функции указать код цвета по шкале от 0 и до 255.
Если нужно применить толстую линию только для границ выделенного диапазона, тогда перед инструкцией End With добавьте следующую строку кода:
.BorderAround xlContinuous, xlMedium, vbBlack
Описание: В первом аргументе для метода BorderAround можно записать также другой стиль линии. Во втором – толщину линии, а в третьем – цвет. Константы, которые можно присвоить в качестве значений для этих аргументов можно использовать те же, которые мы использовали для свойств: LineStyle, Weight, Color.
Если нужно экспонировать первую строку для выделенного диапазона с помощью жирного и курсивного шрифта значений ячеек. А также заполнить ячейки первой строки заливкой с голубым цветом, тогда в самом конце кода макроса перед последней инструкцией End Sub следует добавить несколько строк с VBA-кодом:
.Rows(1).Font.Bold = True
.Rows(1).Font.Italic = True
.Rows(1).Interior.Color = vbCyan
Если хотите присвоить такой же формат для не только для первой строки, но и для первого столбца выделенного диапазона, тогда скопируйте и вставьте ниже эти 3 строчки кода. После в последних трех строках измените свойство Rows на Columns.
.Columns (1).Font.Bold = True
.Columns (1).Font.Italic = True
.Columns (1).Interior.Color = vbCyan
Если нужно задать особенный формат для экспонирования последней строки выделенного диапазона, тогда измените число 1 в аргументе свойства Rows на число всех выделенных строк .Rows.Count. Например, добавьте в конец кода еще такую строку:
.Rows(.Rows.Count).Font.Bold = True
Полная версия модифицированного кода макроса выглядит так:
Sub SbrosFormat()
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlDash
.Borders.Color = vbBlue
.Borders.Weight = xlMedium
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
.BorderAround xlContinuous, xlMedium, vbBlack
.Rows(1).Font.Bold = True
.Rows(1).Font.Italic = True
.Rows(1).Interior.Color = vbCyan
.Columns(1).Font.Bold = True
.Columns(1).Font.Italic = True
.Columns(1).Interior.Color = vbCyan
.Rows(.Rows.Count).Font.Bold = True
End With
End Sub
Пример работы измененного кода VBA-макроса:
В данном примере вы ознакомились с базовыми возможностями форматирования с помощью VBA-макросов. Уверен, что теперь вы сможете самостоятельно найти практическое применение этим исходным кодам.
Время на прочтение
7 мин
Количество просмотров 312K
Приветствую всех.
В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.
VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.
Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.
Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.
Поэтому, увы, будем учить Visual Basic.
Чуть-чуть подготовки и постановка задачи
Итак, поехали. Открываем Excel.
Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.
Появилась вкладка.
Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):
То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).
Результат, которого хотим добиться, выглядит примерно так:
Разумеется, если смотреть прайс только на компьютере, то можно добавить фильтры и будет гораздо удобнее искать нужный товар. Однако мы хотим научится кодить и задача вполне подходящая, не так ли?
Кодим
Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».
И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».
Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:
Sub FormatPrice()End Sub
Напишем Hello World:
Sub FormatPrice()
MsgBox "Hello World!"
End Sub
И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.
Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.
Примеры синтаксиса
' Процедура. Ничего не возвращает
' Перегрузка в VBA отсутствует
Sub foo(a As String, b As String)
' Exit Sub ' Это значит "выйти из процедуры"
MsgBox a + ";" + b
End Sub' Функция. Вовращает Integer
Function LengthSqr(x As Integer, y As Integer) As Integer
' Exit Function
LengthSqr = x * x + y * y
End FunctionSub FormatPrice()
Dim s1 As String, s2 As String
s1 = "str1"
s2 = "str2"
If s1 <> s2 Then
foo "123", "456" ' Скобки при вызове процедур запрещены
End IfDim res As sTRING ' Регистр в VB не важен. Впрочем, редактор Вас поправит
Dim i As Integer
' Цикл всегда состоит из нескольких строк
For i = 1 To 10
res = res + CStr(i) ' Конвертация чего угодно в String
If i = 5 Then Exit For
Next iDim x As Double
x = Val("1.234") ' Парсинг чисел
x = x + 10
MsgBox xOn Error Resume Next ' Обработка ошибок - игнорировать все ошибки
x = 5 / 0
MsgBox xOn Error GoTo Err ' При ошибке перейти к метке Err
x = 5 / 0
MsgBox "OK!"
GoTo ne
Err:
MsgBox
"Err!"
ne:
On Error GoTo 0 ' Отключаем обработку ошибок
' Циклы бывает, какие захотите
Do While True
Exit DoLoop 'While True
Do 'Until False
Exit Do
Loop Until False
' А вот при вызове функций, от которых хотим получить значение, скобки нужны.
' Val также умеет возвращать Integer
Select Case LengthSqr(Len("abc"), Val("4"))
Case 24
MsgBox "0"
Case 25
MsgBox "1"
Case 26
MsgBox "2"
End Select' Двухмерный массив.
' Можно также менять размеры командой ReDim (Preserve) - см. google
Dim arr(1 to 10, 5 to 6) As Integer
arr(1, 6) = 8Dim coll As New Collection
Dim coll2 As Collection
coll.Add "item", "key"
Set coll2 = coll ' Все присваивания объектов должны производится командой Set
MsgBox coll2("key")
Set coll2 = New Collection
MsgBox coll2.Count
End Sub
Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.
Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.
Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.
Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.
Надеюсь, что этого Вам хватит, чтобы не пугаться кода и самостоятельно написать какое-нибудь домашнее задание по информатике. По ходу поста я буду ненавязчиво знакомить Вас с новыми конструкциями.
Кодим много и под Excel
В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.
Sub FormatPrice()
Sheets("result").Cells.Clear
Sheets("data").Activate
End Sub
Работа с диапазонами ячеек
Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.
Примеры работы с Range
Sheets("result").Activate
Dim r As Range
Set r = Range("A1")
r.Value = "123"
Set r = Range("A3,A5")
r.Font.Color = vbRed
r.Value = "456"
Set r = Range("A6:A7")
r.Value = "=A1+A3"
Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:
- Считали группы из очередной строки.
- Пробегаемся по всем группам в порядке приоритета (вначале более крупные)
- Если текущая группа не совпадает, вызываем процедуру AddGroup(i, name), где i — номер группы (от номера текущей до максимума), name — её имя. Несколько вызовов необходимы, чтобы создать не только наш заголовок, но и всё более мелкие.
- После отрисовки всех необходимых заголовков делаем еще одну строку и заполняем её данными.
Для упрощения работы рекомендую определить следующие функции-сокращения:
Function GetCol(Col As Integer) As String
GetCol = Chr(Asc("A") + Col)
End FunctionFunction GetCellS(Sheet As String, Col As Integer, Row As Integer) As Range
Set GetCellS = Sheets(Sheet).Range(GetCol(Col) + CStr(Row))
End FunctionFunction GetCell(Col As Integer, Row As Integer) As Range
Set GetCell = Range(GetCol(Col) + CStr(Row))
End Function
Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».
Глобальные переменные
Option Explicit ' про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3
FormatPrice
Sub FormatPrice()
Dim I As Integer ' строка в data
CurRow = 1
Dim Groups(1 To GroupsCount) As String
Dim PrGroups(1 To GroupsCount) As String
Sheets(
"data").Activate
I = 2
Do While True
If GetCell(0, I).Value = "" Then Exit Do
' ...
I = I + 1
Loop
End Sub
Теперь надо заполнить массив Groups:
На месте многоточия
Dim I2 As Integer
For I2 = 1 To GroupsCount
Groups(I2) = GetCell(I2, I)
Next I2
' ...
For I2 = 1 To GroupsCount ' VB не умеет копировать массивы
PrGroups(I2) = Groups(I2)
Next I2
I = I + 1
И создать заголовки:
На месте многоточия в предыдущем куске
For I2 = 1 To GroupsCount
If Groups(I2) <> PrGroups(I2) Then
Dim I3 As Integer
For I3 = I2 To GroupsCount
AddHeader I3, Groups(I3)
Next I3
Exit For
End If
Next I2
Не забудем про процедуру AddHeader:
Перед FormatPrice
Sub AddHeader(Ty As Integer, Name As String)
GetCellS("result", 1, CurRow).Value = Name
CurRow = CurRow + 1
End Sub
Теперь надо перенести всякую информацию в result
For I2 = 0 To DataCount - 1
GetCellS("result", I2, CurRow).Value = GetCell(I2, I)
Next I2
Подогнать столбцы по ширине и выбрать лист result для показа результата
После цикла в конце FormatPrice
Sheets("Result").Activate
Columns.AutoFit
Всё. Можно любоваться первой версией.
Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:
Sub AddHeader(Ty As Integer, Name As String)
Sheets("result").Range("A" + CStr(CurRow) + ":C" + CStr(CurRow)).Merge
' Чтобы не заводить переменную и не писать каждый раз длинный вызов
' можно воспользоваться блоком With
With GetCellS("result", 0, CurRow)
.Value = Name
.Font.Italic = True
.Font.Name = "Cambria"
Select Case Ty
Case 1 ' Тип
.Font.Bold = True
.Font.Size = 16
Case 2 ' Производитель
.Font.Size = 12
End Select
.HorizontalAlignment = xlCenter
End With
CurRow = CurRow + 1
End Sub
Уже лучше:
Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:
Поэтому чуть-чуть меняем код с добавлением стиля границ:
Sub AddHeader(Ty As Integer, Name As String)
With Sheets("result").Range("A" + CStr(CurRow) + ":C" + CStr(CurRow))
.Merge
.Value = Name
.Font.Italic = True
.Font.Name = "Cambria"
.HorizontalAlignment = xlCenterSelect Case Ty
Case 1 ' Тип
.Font.Bold = True
.Font.Size = 16
.Borders(xlTop).Weight = xlThick
Case 2 ' Производитель
.Font.Size = 12
.Borders(xlTop).Weight = xlMedium
End Select
.Borders(xlBottom).Weight = xlMedium ' По убыванию: xlThick, xlMedium, xlThin, xlHairline
End With
CurRow = CurRow + 1
End Sub
Осталось лишь добится пропусков перед началом новой группы. Это легко:
В начале FormatPrice
Dim I As Integer ' строка в data
CurRow = 0 ' чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String
В цикле расстановки заголовков
If Groups(I2) <> PrGroups(I2) Then
CurRow = CurRow + 1
Dim I3 As Integer
В точности то, что и хотели.
Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.
Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.
Спасибо за внимание.
Буду рад конструктивной критике в комментариях.
UPD: Перезалил пример на Dropbox и min.us.
UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.
В этом уроке я покажу Вам самые популярные макросы в VBA Excel, которые вы сможете использовать для оптимизации своей работы. VBA — это язык программирования, который может использоваться для расширения возможностей MS Excel и других приложений MS Office. Это чрезвычайно полезно для пользователей MS Excel, поскольку VBA может использоваться для автоматизации вашей работы и значительно увеличить Вашу эффективность. В этой статье Вы познакомитесь с VBA и я вам покажу некоторые из наиболее полезных, готовых к использованию примеров VBA. Вы сможете использовать эти примеры для создания собственных скриптов, соответствующих Вашим потребностям.
Вам не нужен опыт программирования, чтобы воспользоваться информаций из этой статьи, но вы должны иметь базовые знания Excel. Если вы еще учитесь работать с Excel, я бы рекомендовал Вам прочитать статью 20 формул Excel, которые вам нeобходимо выучить сейчас, чтобы узнать больше о функциональных возможностях Excel.
Я подготовил для вас несколько самых полезных примеров VBA Excel с большой функциональностью, которую вы сможете использовать для оптимизации своей работы. Чтобы их использовать, вам необходимо записать их в файл. Следующий параграф посвящен установке макроса Excel. Пропустите эту часть, если вы уже знакомы с этим.
Table of Contents
Как включить макросы в Excel
В Excel нажмите комбинацию клавиш alt + F11. Это приведет вас к редактору VBA в MS Excel. Затем щелкните правой кнопкой мыши папку Microsoft Excel Objects слева и выберите Insert => Module. Это место, где сохраняются макросы. Чтобы использовать макрос, вам нужно сохранить документ Excel как макрос. Из табуляции File => Save as, выберите Save as macro-enabled Workbok (расширение .xlsm) Теперь пришло время написать свой первый макрос!
1. Копирование данных из одного файла в другой.
Очень полезный макрос, поскольку он показывает, как скопировать ряд данных изнутри vba и как создать и назвать новую книгу. Вы можете изменить этот макрос в соответствии с вашими собственными требованиями:
Sub CopyFiletoAnotherWorkbook() Sheets("Example 1").Range("B4:C15").Copy Workbooks.Add ActiveSheet.Paste Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="C:TempMyNewBook.xlsx" Application.DisplayAlerts = True End Sub
2. Отображение скрытых строк
Иногда большие файлы Excel можно содержать скрытые строки для большей ясности И для лучшего удобства пользователей. Вот один макрос, который отобразит все строки из активной рабочей таблицы:
Sub ShowHiddenRows() Columns.EntireColumn.Hidden = False Rows.EntireRow.Hidden = False End Sub
3. Удаление пустых строк и столбов
Пустые строки в Excel — может быть проблемой для обработки данных. Вот как избавиться от них:
Sub DeleteEmptyRowsAndColumns() Dim MyRange As Range Dim iCounter As Long Set MyRange = ActiveSheet.UsedRange For iCounter = MyRange.Rows.Count To 1 Step -1 If Application.CountA(Rows(iCounter).EntireRow) = 0 Then Rows(iCounter).Delete End If Next iCounter For iCounter = MyRange.Columns.Count To 1 Step -1 If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then Columns(iCounter).Delete End If Next iCounter End Sub
4. Нахождение пустых ячеек
Sub FindEmptyCell() ActiveCell.Offset(1, 0).Select Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub
#### 5. Заполнение пустых ячеек
Как упоминалось ранее, пустые ячейки препятствуют обработке данных и созданию сводных таблиц. Вот один примерный код, который заменяет все пустые ячейки на 0. Этот макрос имеет очень большое приложение, потому что Вы можете использовать его для поиска и замены результатов N/A, а также других символов, таких как точки, запятые или повторяющиеся значения:
Sub FindAndReplace() Dim MyRange As Range Dim MyCell As Range Select Case MsgBox("Can't Undo this action. " & _ "Save Workbook First?", vbYesNoCancel) Case Is = vbYes ThisWorkbook.Save Case Is = vbCancel Exit Sub End Select Set MyRange = Selection For Each MyCell In MyRange If Len(MyCell.Value) = 0 Then MyCell = 0 End If Next MyCell End Sub
#### 6. Сортировка данных
Следующий макрос сортирует по возрастанию все числа из столбца активной ячейки. Просто дважды нажмите любую ячейку из столбца, который вы хотите отсортировать.
NB: Здесь нам нужно поставить этот код в Sheet1 (папка Microsoft Excel Objects), а не в Module1 (папка Modules):
Private Sub Worksheet_BeforeDoubleClick (ByVal Target as Range, Cancel As Boolean) Dim LastRow As Long LastRow = Cells (Rows.Count, 1) .End (xlUp) .Row Rows ("6:" & LastRow) .Sort _ Key1: = Cells (6, ActiveCell.Column), _ Order1: = xlAscending End Sub
#### 7. Удаление пустых пространств
Иногда данные в книге содержат дополнительные пробелы (whitespace charachters), которые могут мешать анализу данных и коррумпировать формулы. Вот один макрос, который удалит все пробелы из предварительно выбранного диапазона ячеек:
Sub TrimTheSpaces() Dim MyRange As Range Dim MyCell As Range Select Case MsgBox("Can't Undo this action. " & _ "Save Workbook First?", vbYesNoCancel) Case Is = vbYes ThisWorkbook.Save Case Is = vbCancel Exit Sub End Select Set MyRange = Selection For Each MyCell In MyRange If Not IsEmpty(MyCell) Then MyCell = Trim(MyCell) End If Next MyCell End Sub
#### 8. Выделение дубликатов цветом
Иногда в нескольких столбцах, которые мы хотели бы осветить, есть повторяющиеся значения. Этот макрос делает именно это:
Sub HighlightDuplicates() Dim MyRange As Range Dim MyCell As Range Set MyRange = Selection For Each MyCell In MyRange If WorksheetFunction.CountIf(MyRange, MyCell.Value) > 1 Then MyCell.Interior.ColorIndex = 36 End If Next MyCell End Sub
#### 9. Выделение десяти самых высоких чисел
Этот код будет отображать десять самых высоких чисел из набора ячеек:
Sub TopTen() Selection.FormatConditions.AddTop10 Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1) .TopBottom = xlTop10Top .Rank = 10 .Percent = False End With With Selection.FormatConditions(1).Font .Color = -16752384 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 13561798 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False End Sub
Вы можете легко настроить код, чтобы выделить различное количество чисел.
#### 10. Выделение данных больших чем данные число
Когда вы запустите этот код, появится окно. Вам надо написать число, которое вы хотите сравнить с выбранными ячейками.
Sub HighlightGreaterThanValues() Dim i As Integer i = InputBox("Enter Greater Than Value", "Enter Value") Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:=i Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1) .Font.Color = RGB(0, 0, 0) .Interior.Color = RGB(31, 218, 154) End With End Sub
Вы тоже можете настроить этот код, чтобы выделить более низкие чисел.
#### 11. Выделение ячеек комментариями
Простой макрос, который выделяет все ячейки, содержащие комментарии:
Sub HighlightCommentCells() Selection.SpecialCells(xlCellTypeComments).Select Selection.Style= "Note" End Sub
#### 12. Выделение ячеек со словами с ошибками
Это очень полезно, когда вы работаете с функциями, которые принимают строки, однако кто-то ввел строку с ошибкой, и ваши формулы не работают. Вот как решить эту проблему:
Sub ColorMispelledCells() For Each cl In ActiveSheet.UsedRange If Not Application.CheckSpelling(Word:=cl.Text) Then _ cl.Interior.ColorIndex = 28 Next cl End Sub
13. Создание сводной таблицы
Вот как создать сводную таблицу в MS Excel (версия 2007). Особенно полезно, когда вы делаете индивидуальный отчет каждый день. Вы можете оптимизировать создание сводной таблицы следующим образом:
Sub PivotTableForExcel2007() Dim SourceRange As Range Set SourceRange = Sheets("Sheet1").Range("A3:N86") ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=SourceRange, _ Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="", _ TableName:="", _ DefaultVersion:=xlPivotTableVersion12 End Sub
14. Отправка активного файла по электронной почте
Мой любимый код VBA. Он позволяет вам прикреплять и отправлять файл, с которым вы работаете, с предопределенным адресом электронной почты, заголовком сообщения и телом сообщения! Сначала Вам нужно сделать референцию в Excel на Microsoft Outlook (в редакторе Excel VBA, нажмите tools => references и выберите Microsoft Outlook).
Sub SendFIleAsAttachment() Dim OLApp As Outlook.Application Dim OLMail As Object Set OLApp = New Outlook.Application Set OLMail = OLApp.CreateItem(0) OLApp.Session.Logon With OLMail .To = "admin@datapigtechnologies.com; mike@datapigtechnologies.com" .CC = "" .BCC = "" .Subject = "This is the Subject line" .Body = "Hi there" .Attachments.Add ActiveWorkbook.FullName .Display End With Set OLMail = Nothing Set OLApp = Nothing End Sub
15. Вставка всех графиков Excel в презентацию PowerPoint
Очень удобный макрос, который позволяет вам добавлять все ваши графики Excel в презентацию Powerpoint одним щелчком мыши:
Sub SendExcelFiguresToPowerPoint() Dim PP As PowerPoint.Application Dim PPPres As PowerPoint.Presentation Dim PPSlide As PowerPoint.Slide Dim i As Integer Sheets("Slide Data").Select If ActiveSheet.ChartObjects.Count < 1 Then MsgBox "No charts existing the active sheet" Exit Sub End If Set PP = New PowerPoint.Application Set PPPres = PP.Presentations.Add PP.Visible = True For i = 1 To ActiveSheet.ChartObjects.Count ActiveSheet.ChartObjects(i).Chart.CopyPicture _ Size:=xlScreen, Format:=xlPicture Application.Wait (Now + TimeValue("0:00:1")) ppSlideCount = PPPres.Slides.Count Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank) PPSlide.Select PPSlide.Shapes.Paste.Select PP.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True PP.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True Next i Set PPSlide = Nothing Set PPPres = Nothing Set PP = Nothing End Sub
16. Вставка таблицы Excel в MS Word
Таблицы Excel обычно помещаются внутри текстовых документов. Вот один автоматический способ экспорта таблицы Excel в MS Word:
Sub ExcelTableInWord() Dim MyRange As Excel.Range Dim wd As Word.Application Dim wdDoc As Word.Document Dim WdRange As Word.Range Sheets("Revenue Table").Range("B4:F10").Cop Set wd = New Word.Application Set wdDoc = wd.Documents.Open _ (ThisWorkbook.Path & "" & "PasteTable.docx") wd.Visible = True Set WdRange = wdDoc.Bookmarks("DataTableHere").Rangе On Error Resume Next WdRange.Tables(1).Delete WdRange.Paste WdRange.Tables(1).Columns.SetWidth _ (MyRange.Width / MyRange.Columns.Count), wdAdjustSameWidth wdDoc.Bookmarks.Add "DataTableHere", WdRange Set wd = Nothing Set wdDoc = Nothing Set WdRange = Nothing End Sub
17. Извлечение слов из текста
Мы можем использовать формулы, если хотим извлечь определенное количество символов. Но что, если мы хотим извлечь только одно слово из предложения или диапазон слов в ячейке? Для этого мы можем сами создать функцию Excel с помощью VBA. Это одна из самых удобных функций VBA, поскольку она позволяет создавать собственные формулы, которые отсутствуют в MS Excel. Давайте продолжим и создадим две функции: findword() и findwordrev():
Function FindWord(Source As String, Position As Integer) As String On Error Resume Next FindWord = Split(WorksheetFunction.Trim(Source), " ")(Position - 1) On Error GoTo 0 End Function Function FindWordRev(Source As String, Position As Integer) As String Dim Arr() As String Arr = VBA.Split(WorksheetFunction.Trim(Source), " ") On Error Resume Next FindWordRev = Arr(UBound(Arr) - Position + 1) On Error GoTo 0 End Function
Отлично, мы уже создали две новые функции в Excel! Теперь попробуйте использовать их в Excel. Функция = FindWordRev (A1,1) берет последнее слово из ячейки A1. Функция = FindWord (A1,3) берет третье слово из ячейки A1 и т. Д.
18. Защита данных в MS Excel
Иногда мы хотим защитить данных нашего файла, чтобы только мы могли его изменять. Вот как это сделать с VBA:
Sub ProtectSheets() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.Protect Password:="1234" Next ws End Sub
Поздравления! Поскольку вы все еще читаете это, вы действительно заинтересованы в изучении VBA. Как вы уже сами видели, язык программирования VBA чрезвычайно полезен и может сэкономить нам много времени. Надеюсь, вы нашли эту информацию полезной и использовали ее, чтобы стать мастером MS Excel, VBA и компьютерных наук в целом.
© 2018 Атанас Йонков
Литература:
1. ExcelChamps.com: Top 100 Useful Excel Macro [VBA] Codes Examples.
2. Michael Alexander, John Walkenbach (2012). 101 Ready-To-Use Excel Macros.
3. BG Excel.info: 14 ready-to-use Macros for Excel.
Введение
Всем нам приходится — кому реже, кому чаще — повторять одни и те же действия и операции в Excel. Любая офисная работа предполагает некую «рутинную составляющую» — одни и те же еженедельные отчеты, одни и те же действия по обработке поступивших данных, заполнение однообразных таблиц или бланков и т.д. Использование макросов и пользовательских функций позволяет автоматизировать эти операции, перекладывая монотонную однообразную работу на плечи Excel. Другим поводом для использования макросов в вашей работе может стать необходимость добавить в Microsoft Excel недостающие, но нужные вам функции. Например функцию сборки данных с разных листов на один итоговый лист, разнесения данных обратно, вывод суммы прописью и т.д.
Макрос — это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых нужных нам действий, которые нам не хочется выполнять вручную.
В принципе, существует великое множество языков программирования (Pascal, Fortran, C++, C#, Java, ASP, PHP…), но для всех программ пакета Microsoft Office стандартом является именно встроенный язык VBA. Команды этого языка понимает любое офисное приложение, будь то Excel, Word, Outlook или Access.
Способ 1. Создание макросов в редакторе Visual Basic
Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно — редактор программ на VBA, встроенный в Microsoft Excel.
- В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис — Макрос — Редактор Visual Basic (Toos — Macro — Visual Basic Editor).
- В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer). Выбираем Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer). Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic (Visual Basic Editor)
:
К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:
Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:
- Обычные модули — используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert — Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:
- Модуль Эта книга — также виден в левом верхнем углу редактора Visual Basic в окне, которое называется Project Explorer. В этот модуль обычно записываются макросы, которые должны выполнятся при наступлении каких-либо событий в книге (открытие или сохранение книги, печать файла и т.п.):
- Модуль листа — доступен через Project Explorer и через контекстное меню листа, т.е. правой кнопкой мыши по ярлычку листа — команда Исходный текст (View Source). Сюда записывают макросы, которые должны выполняться при наступлении определенных событий на листе (изменение данных в ячейках, пересчет листа, копирование или удаление листа и т.д.)
Обычный макрос, введенный в стандартный модуль выглядит примерно так:
Давайте разберем приведенный выше в качестве примера макрос Zamena:
- Любой макрос должен начинаться с оператора Sub, за которым идет имя макроса и список аргументов (входных значений) в скобках. Если аргументов нет, то скобки надо оставить пустыми.
- Любой макрос должен заканчиваться оператором End Sub.
- Все, что находится между Sub и End Sub — тело макроса, т.е. команды, которые будут выполняться при запуске макроса. В данном случае макрос выделяет ячейку заливает выделенных диапазон (Selection) желтым цветом (код = 6) и затем проходит в цикле по всем ячейкам, заменяя формулы на значения. В конце выводится окно сообщения (MsgBox).
С ходу ясно, что вот так сразу, без предварительной подготовки и опыта в программировании вообще и на VBA в частности, сложновато будет сообразить какие именно команды и как надо вводить, чтобы макрос автоматически выполнял все действия, которые, например, Вы делаете для создания еженедельного отчета для руководства компании. Поэтому мы переходим ко второму способу создания макросов, а именно…
Способ 2. Запись макросов макрорекордером
Макрорекордер — это небольшая программа, встроенная в Excel, которая переводит любое действие пользователя на язык программирования VBA и записывает получившуюся команду в программный модуль. Если мы включим макрорекордер на запись, а затем начнем создавать свой еженедельный отчет, то макрорекордер начнет записывать команды вслед за каждым нашим действием и, в итоге, мы получим макрос создающий отчет как если бы он был написан программистом. Такой способ создания макросов не требует знаний пользователя о программировании и VBA и позволяет пользоваться макросами как неким аналогом видеозаписи: включил запись, выполнил операци, перемотал пленку и запустил выполнение тех же действий еще раз. Естественно у такого способа есть свои плюсы и минусы:
- Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу — запись останавливается.
- Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
- Если во время записи макроса макрорекордером вы ошиблись — ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) — во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.
Чтобы включить запись необходимо:
- в Excel 2003 и старше — выбрать в меню Сервис — Макрос — Начать запись (Tools — Macro — Record New Macro)
- в Excel 2007 и новее — нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)
Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:
- Имя макроса — подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
- Сочетание клавиш — будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис — Макрос — Макросы — Выполнить (Tools — Macro — Macros — Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
- Сохранить в… — здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
- Эта книга — макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
- Новая книга — макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
- Личная книга макросов — это специальная книга Excel с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.
После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording).
Запуск и редактирование макросов
Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или — в старых версиях Excel — через меню Сервис — Макрос — Макросы (Tools — Macro — Macros):
- Любой выделенный в списке макрос можно запустить кнопкой Выполнить (Run).
- Кнопка Параметры (Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
- Кнопка Изменить (Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.
Создание кнопки для запуска макросов
Чтобы не запоминать сочетание клавиш для запуска макроса, лучше создать кнопку и назначить ей нужный макрос. Кнопка может быть нескольких типов:
Кнопка на панели инструментов в Excel 2003 и старше
Откройте меню Сервис — Настройка (Tools — Customize) и перейдите на вкладку Команды (Commands). В категории Макросы легко найти веселый желтый «колобок» — Настраиваемую кнопку (Custom button):
Перетащите ее к себе на панель инструментов и затем щелкните по ней правой кнопкой мыши. В контекстом меню можно назначить кнопке макрос, выбрать другой значок и имя:
Кнопка на панели быстрого доступа в Excel 2007 и новее
Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar):
Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:
Кнопка на листе
Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:
- В Excel 2003 и старше — откройте панель инструментов Формы через меню Вид — Панели инструментов — Формы (View — Toolbars — Forms)
- В Excel 2007 и новее — откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer)
Выберите объект Кнопка (Button):
Затем нарисуйте кнопку на листе, удерживая левую кнопку мыши. Автоматически появится окно, где нужно выбрать макрос, который должен запускаться при щелчке по нарисованной кнопке.
Создание пользовательских функций на VBA
Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция — только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).
Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert — Module и введем туда текст нашей функции:
Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка — Функция) в категории Определенные пользователем (User Defined):
После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:
Запуск макроса изменением значения в ячейке.
Ранее в статье
Как сделать связанный выпадающий список в «Эксель», зависящий от значения в соседней ячейке.
рассказывалось о том, как реализовать в программе Excel связанные между собой выпадающие списки. Недавно создавая файл со связанными списками столкнулся с проблемкой — при обновлении записи в первой ячейке, от которой зависит список во второй, вторая ячейка остается неизменной, не обнуляет значения.
Решил исправить ситуацию и сделать так чтобы при клике по первой ячейке вторая ячейка принимала значение «пусто».
Для этого потребовалось написать 2 коротеньких алгоритма (макроса):
Первый макрос — производит удаление данных из ячейки и выглядит следующим образом:
Sub noll()
On Error Resume Next
ActiveSheet.Cells(2, 2).Value = «»
End Sub
Этот макрос следует записать в поле раздела «module» — в «контейнер» модуля.
Второй макрос — активирует первый при клике по ячейке.
Выглядит код вызывающий (запускающий ) макрос по клику на ячейку, следующим образом:
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim u As String
On Error Resume Next
If Not Intersect(Target, Range(«B1»)) Is Nothing Then
Call noll
End If
End Sub
Этот код нужно записывать не в контейнер «module», а непосредтвенно в лист. Для этого следует в меню разработчика в просмотре кода:
- Кликнуть двойным щелчком по названию листа.
- После двойного клика будет открыто поле для внесения кода аналогичное полю модуля (module).
После записи макроса проблемка была решена, но мне не очень понравилось, что вторая ячейка обнулялась при любом выделении или клике по первой ячейке.
Поэтому я решил поправить код вызова макроса и изменил его таким образом, чтобы макрос активировался не при клике на ячейку, а при ее изменении.
Код стал выглядеть следующим образом:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim u As String
On Error Resume Next
If Not Intersect(Target, Range(«B1»)) Is Nothing Then
Call noll
End If
End Sub
Теперь макрос стал запускаться только при изменении первой ячейки, например, при выборе нового значения из выпадающего списка.
Вопросы и пожелания можете оставлять в комментариях или на форуме нашего сайта.
Видео о работе в excel можно найти на нашем youtube канале по ссылке:
Канал «RuExcel»
Удачи в изучении программы Ecxel.
Примеры макросов Excel
Смотрите также простую настройку. Выберите назначить кнопке макрос,Сервис — Макрос - выполнятся при наступлении
Макрос Excel: пример 1
чаще — повторять в его конце указать любое имя в противном случае на VBA или существует) и сохранит Office. Хотя VBA языке VBA. По-простому, формате, который поддерживаетДайте своему макросу имяResume как данные записаныСледующие простые примеры макросов инструмент в редакторе выбрать другой значок Начать запись
каких-либо событий в одни и те пишем команду «Application.ScreenUpdating макроса, если установленное может потребоваться угадать. отточить свои навыки. макрос в ней. позволяет автоматизировать процессы Excel пишет программный макросы. Для начала (без пробелов) идля обработки ошибок. в массив, над Excel иллюстрируют некоторые Visual Basic: «Tools»-«Options». и имя:(Tools — Macro - книге (открытие или же действия и = True» по умолчанию васЧтобы начать запись макроса,Пример изменения записанного кодаВ поле в приложениях Office код вместо Вас. необходимо удалить все нажмите В данном коде ними такие действия, возможности и приёмы, И на вкладкеКнопка на панели быстрого Record New Macro) сохранение книги, печать операции в Excel.Добавим также команду «Application.Calculation не устраивает. Главное, нажмите кнопку можно найти вОписание и между ними,Чтобы увидеть этот программный данные из созданнойОК также показан пример как правило, совершаются. описанные в самоучителе «Editor» активируйте опцию
Макрос Excel: пример 2
доступа в Excelв Excel 2007 и файла и т.п.): Любая офисная работа = xlCalculationManual» вначале чтобы имя этоОК статье Начало работыпри необходимости введите вам не нужно код, нужно в нами таблицы, т.е..
открытия и чтения’Процедура Sub сохраняет по Excel VBA. «Require Variable Declaration». 2007 и новее новее — нажатьМодуль листа предполагает некую «рутинную кода, а в начиналось с буквы,. с VBA в краткое описание действий уметь программировать или меню сделать из неёНачиная с этого момента, данных из файла. значения ячеек столбцаПервоначально эта процедура Это позволит реализоватьЩелкните правой кнопкой мыши кнопку- доступен через составляющую» — одни конце кода дописываем а не сВыполните действия, которые нужно Excel. макроса. знать язык VBA,Macros пустой шаблон. Дело ВСЕ Ваши действия’Процедура Sub присваивает A активного листаSub автоматическое заполнение инструкций по панели быстрогоЗапись макроса (Record macro) Project Explorer и и те же «Application.Calculation = xlCalculationAutomatic». цифры. Также, в записать.Перед записью макросов полезноХотя поле «Описание» является так как все(Макросы) на вкладке в том, что с документом записываются: аргументам Val1 и в массиве Sub
Макрос Excel: пример 3
была приведена, как Options Explicit в доступа в левомна вкладке через контекстное меню еженедельные отчеты, одни Этим мы вначале названии не должноНа вкладке знать следующее: необязательным, рекомендуется его нужные действия выполнитView в дальнейшем, работая изменения ячеек, пролистывание Val2 значения ячеек GetCellValues() Dim iRow пример использования комментариев начале каждого ново верхнем углу окнаРазработчик (Developer) листа, т.е. правой и те же макроса отключаем автоматический
быть пробелов. МыРазработчикМакрос, записанный для работы заполнить. Кроме того, средство записи макросов.(Вид) кликнуть с этим шаблоном, таблицы, даже изменение A1 и B1 As Integer ‘Хранит в коде VBA. созданного кода. А Excel и выберитеЗатем необходимо настроить параметры кнопкой мыши по действия по обработке пересчет результата после оставили название пощелкните с диапазоном Excel, желательно ввести понятноеВажно знать, что приView Macros мы будем импортировать размера окна. ‘из рабочей книги номер текущей строки Однако, здесь также в поле ввода команду записываемого макроса в ярлычку листа - поступивших данных, заполнение каждого изменения ячеек, умолчанию – «Макрос1».Остановить запись будет выполняться только описание, которое будет записи макроса регистрируются
Макрос Excel: пример 4
(Макросы) и в в него самыеExcel сигнализирует о том, Data.xlsx, находящейся в Dim dCellValues() As можно увидеть, как «Tab Width:» укажитеНастройка панели быстрого доступа окне команда однообразных таблиц или а в концеТут же, при желании,. для ячеек этого полезно вам и почти все ваши открывшемся диалоговом окне свежие и актуальные что включен режим папке C:Documents and Double ‘Массив для объявляются переменные, как значение 2 вместо (Customise Quick AccessЗапись макросаИсходный текст (View Source) бланков и т.д. макроса – включаем. можно установить сочетаниеНа вкладке диапазона. Поэтому если всем, кто запускает действия. Поэтому если
нажать данные. записи макроса в Settings Sub Set_Values(Val1 хранения значений ячеек работают ссылки на 4-х. Это позволит Toolbar):. Сюда записывают макросы, Использование макросов и Таким образом, Excel клавиш, при нажатииРазработчик вы добавите в макрос. Если у вы допустите ошибку,EditЧтобы очистить все ячейки двух местах. Во-первых, As Double, Val2 iRow = 1 ячейки Excel, использование уменьшить ширину кода.:Имя макроса которые должны выполняться пользовательских функций позволяет подсчитает результат только на которые макросщелкните диапазон новую строку, вас много макросов, например нажмете не(Изменить). от данных, щёлкните в меню As Double) Dim ReDim dCellValues(1 To цикла Данная настройка редактораЗатем в открывшемся окне- подойдет любое
Макрос Excel: пример 5
при наступлении определенных автоматизировать эти операции, один раз, а будет запускаться. ПервойМакросы макрос не будет описания помогут быстро ту кнопку, средствоОткроется окно правой кнопкой мышиMacros DataWorkbook As Workbook 10) ‘Цикл DoFor
распространяется на все выберите категорию имя на русском событий на листе перекладывая монотонную однообразную не будет его клавишей обязательно должна, чтобы просмотреть макросы, применяться к ней. определить, для чего записи макросов зарегистрируетVisual Basic for Applications по иконке(Макросы) – вместо On Error GoTo Until перебирает последовательно, условного оператора листы, но в
Макрос Excel: пример 6
Макросы или английском языке. (изменение данных в работу на плечи постоянно пересчитывать, чем быть клавиша Ctrl, связанные с книгой.Если вам нужно записать они нужны. это действие. В
, в котором мыВыделить все строки ErrorHandling ‘Открываем рабочую ячейки столбца AIf границах одной рабочейи при помощи Имя должно начинаться ячейках, пересчет листа, Excel. Другим поводом сэкономит время. а вторую клавишу При этом откроется длинную последовательность задач,Чтобы начать запись макроса, таком случае можно увидим программный код, которая находится наRecord Macro книгу с данными активного листа ‘ии вывод на книги. кнопки с буквы и копирование или удаление для использования макросовПродвинутые пользователи могут выполнять пользователь устанавливает самостоятельно. диалоговое окно советуем вместо этого нажмите кнопку снова записать всю записанного нами макроса. пересечении заголовков строк(Запись макроса…) появилась Set DataWorkbook =
извлекает их значения экран окна сообщения.
Выберите инструмент: «Insert»-«Module» чтобы
Добавить (Add)
не содержать пробелов
office-guru.ru
Как автоматизировать рутинные задачи в Excel с помощью макросов
- листа и т.д.)
- в вашей работе не только редактирование
- Например, мы, в
- Макрос использовать несколько более
- ОК последовательность или изменить
Да, Вы правильно и столбцов, и строка Workbooks.Open(«C:Documents and SettingsData») в массив до’Процедура Sub выполняет создать новый стандартныйперенесите выбранный макрос и знаков препинания.Обычный макрос, введенный в может стать необходимость и оптимизацию записанных качестве примера, установили. мелких макросов.. код VBA. Поэтому
поняли, здесь этот из контекстного менюStop Recording ‘Присваиваем переменным Val1 тех пор, пока поиск ячейки, содержащей модуль для макросов. в правую половинуСочетание клавиш
Что такое Макрос?
стандартный модуль выглядит добавить в Microsoft макросов, но и клавишу М.Примечание:В макросе могут содержатьсяВыполните действия, которые нужно перед записью процесса код можно изменить выберите пункт(Остановить запись). и Val2 значения не встретится пустая заданную строку ‘в В появившемся окне окна, т.е. на- будет потом примерно так: Excel недостающие, но записывать код макросовДалее, нужно определить, где Макросы нельзя отменить. Прежде и задачи, не записать.
следует хорошо проработать и даже создатьDeleteВо-вторых, в нижнем левом из заданной рабочей ячейка Do Until диапазоне ячеек A1:A100
- модуля под текстом
- панель быстрого доступа: использоваться для быстрогоДавайте разберем приведенный выше
- нужные вам функции. с нуля. Для будет храниться макрос. чем впервые запускать
- относящиеся к Excel.
- На вкладке его. Чем точнее новый макрос. Те
Создание макроса – практический пример
(Удалить). углу окна Excel. книги Val1 = IsEmpty(Cells(iRow, 1)) ‘Проверяем, активного листа Sub Option Explicit введитеКнопка на листе запуска макроса. Если в качестве примера Например функцию сборки того, чтобы приступить По умолчанию, он записанный макрос, сохраните Процесс макроса может
Разработчик вы запишете последовательность, действия, которые мыТеперь наш лист полностью Иконка Sheets(«Лист1»).Cells(1, 1) Val2 что массив dCellValues Find_String(sFindText As String) следующий код макроса:Этот способ подходит для
забудете сочетание или макрос данных с разных к этому, нужно будет храниться в книгу или создайте охватывать прочие приложения
в группе тем более эффективно совершали с таблицей очищен от всехСтоп
= Sheets(«Лист1»).Cells(1, 2) имеет достаточный размер Dim i AsSub MyMakros() любой версии Excel. вообще его не
Zamena листов на один нажать на кнопку этой же книге ее копию, чтобы Office и другиеКод будет работать макрос. в этом уроке, данных, при этом(маленький квадратик) указывает DataWorkbook.Close Exit Sub ‘Если нет –
Integer ‘Целое числоDim polzovatel As Мы добавим кнопку введете, то макрос: итоговый лист, разнесения «Visual Basic», которая (файле), но при предотвратить внесение нежелательных программы, которые поддерживаютнажмите кнопкуМакросы и средства VBA вполне можно записать макрос остался записан. на то, что ErrorHandling: ‘Если файл увеличиваем размер массива типа Integer, используется String
запуска макроса прямо можно будет запуститьЛюбой макрос должен начинаться данных обратно, вывод расположена в самом желании можно установить
изменений. Если вас Visual Basic дляОстановить запись находятся на вкладке с помощью автоматической Нам нужно сохранить включен режим записи не найден, пользователю на 10 при
- в цикле ForDim data_segodnya As на рабочий лист,
- через меню с оператора суммы прописью и
- начале ленты разработчика. хранение в новой не устраивают результаты
- приложений (VBA). Например,.Разработчик
- записи макроса в книгу, как шаблон макроса. Нажатие на
будет предложено поместить помощи ReDim If Dim iRowNumber As Date как графический объект.Сервис — Макрос -
Sub т.д.После этого, открывается знакомое книге, или в
выполнения макроса, вы вы можете записать-ИЛИ-, которая по умолчанию Excel. Но более
Excel с поддержкой
- неё остановит запись. искомый файл ‘в UBound(dCellValues) < iRow
- Integer ‘Целое числоpolzovatel = Application.UserName Для этого: Макросы — Выполнить, за которым идетМакрос нам окно редактора отдельной книге макросов. можете закрыть книгу, макрос, который сначалаНажмите
- скрыта, поэтому сначала сложные макросы, с макросов, который имеет
- И наоборот, когда нужную папку и Then ReDim Preserve
- типа Integer дляdata_segodnya = NowВ Excel 2003 и(Tools — Macro - имя макроса и- это запрограммированная VBE.
Мы оставим значение не сохраняя ее. обновляет таблицу вALT нужно включить ее. тонко настроенной последовательностью расширение режим записи не после этого продолжить dCellValues(1 To iRow хранения результата iRowNumberMsgBox «Макрос запустил старше — откройте Macros — Run) список аргументов (входных последовательность действий (программа,Программист пишет там код по умолчанию.Ниже приведены дополнительные сведения Excel, а затем+ Дополнительные сведения см.
и логикой действийXLTM включен, в этом
- выполнение макроса MsgBox
- + 9) End
- = 0 ‘Просматривает
пользователь: » & панель инструментов
или с помощью значений) в скобках.
процедура), записанная на макроса вручную.
В самом нижнем поле о работе с открывает Outlook дляT
в статье Отображение требуют программирования вручную.. месте находится иконка «Файл Data.xlsx не If ‘Сохраняем значение одну за другой polzovatel & vbNewLineФормы кнопки Если аргументов нет, языке программирования VisualКак видим, макросы в настройки макросов можно макросами в Excel. ее отправки по+
вкладки «Разработчик».Представьте, что наш исходныйВажный момент! для включения записи найден! » & текущей ячейки в ячейки A1:A100 до & data_segodnyaчерез менюМакросы (Macros) то скобки надо Basic for Applications
Microsoft Excel могут оставить любое подходящееЗадача электронной почте.MПеред записью макросов полезно файл с даннымиЕсли Вы сохраните макроса. Нажатие на _ «Пожалуйста добавьте массиве dCellValues dCellValues(iRow)
тех пор, покаEnd SubВид — Панели инструментовна вкладке оставить пустыми. (VBA). Мы можем значительно ускорить выполнение по контексту описаниеОписаниеМакросы и средства VBA+ знать следующее:data.csv
файл с расширением неё даст тот
Выполнение макроса в Excel
рабочую книгу в = Cells(iRow, 1).Value не будет найденаНажмите на кнопку в — Формы (ViewРазработчик (Developer)Любой макрос должен заканчиваться
- запускать макрос сколько
- рутинных и однообразных данного макроса. Но,
Включение и отключение макросов находятся на вкладкеRМакрос, записанный для работысоздаётся автоматически каким-тоXLTX же результат, что папку C:Documents and iRow = iRow строка sFindText For редакторе «Run Macro» — Toolbars -или нажав ALT+F8. оператором угодно раз, заставляя
процессов. Но, в это делать неУзнайте, как включать иРазработчик. с диапазоном Excel, процессом и сохраняется, то макрос в и включение записи Settings и нажмите + 1 Loop i = 1 или клавишу F5 Forms)Сохранить в…End Sub Excel выполнять последовательность большинстве случаев, для обязательно. отключать макросы в, которая по умолчанию
На вкладке будет выполняться только на диске всегда нём работать не через меню. OK» Resume End End Sub
To 100 If на клавиатуре. ВВ Excel 2007 и- здесь задается. любых нужных нам
этого больше подходятКогда все настройки выполнены, Excel для Mac. скрыта, поэтому сначалаРазработчик для ячеек этого в одном и будет. Кстати, можноТеперь, когда режим записи
SubВ этом примере процедура Cells(i, 1).Value = появившемся окне «Macros» новее — откройте место, куда будетВсе, что находится между действий, которые нам макросы, код которых
жмем на кнопкуСоздание, выполнение, изменение или нужно включить ее.щелкните диапазона. Поэтому если том же месте. сохранить книгу как макроса включен, давайтеУрок подготовлен для ВасSub sFindText Then ‘Если нажмите на кнопку выпадающий список сохранен текст макроса,Sub не хочется выполнять написан вручную, а
Заглянем под капот: Как работает макрос?
«OK». удаление макроса ВыберитеМакросы вы добавите в Например, шаблон Excel 97-2003, займёмся нашей задачей. командой сайта office-guru.ruсчитывает значения из совпадение с заданной «Run», чтобы посмотретьВставить (Insert) т.е. набор команд
и вручную. не автоматически записанныеПосле этого, все вашиЧтобы сэкономить время наExcel, чтобы просмотреть макросы, диапазон новую строку,C:Datadata.csv который имеет формат Первым делом, добавимИсточник: http://www.excelfunctions.net/Excel-Macro-Example.html столбца
строкой найдено ‘сохраняем результат работы макроса.на вкладке на VBA изEnd SubВ принципе, существует великое действия. Кроме того, действия в данной выполнении часто повторяющихся> связанные с книгой. макрос не будет– путь кXLT заголовки для итоговыхПеревел: Антон АндроновA номер текущей строкиПримечание. Если в главномРазработчик (Developer) которых и состоит
Добавим ещё один шаг к нашей задаче…
- тело макроса, множество языков программирования код макроса можно книге (файле) Excel задач, можно записатьПараметры Кроме того, можно применяться к ней. файлу с обновляемыми, он тоже поддерживает данных.Автор: Антон Андроноврабочего листа и выходим из меню отсутствует закладка макрос.:
- т.е. команды, которые (Pascal, Fortran, C++, оптимизировать через редактор будут записываться в соответствующую последовательность действий
- > нажать клавишиЕсли вам нужно записать данными. Процесс открытия
- макросы.Далее, введите в ячейкиЧто такое Макрос?Лист2 цикла For iRowNumber «РАЗРАБОТЧИК», тогда ееВыберите объектЭта книга
- будут выполняться при C#, Java, ASP,
- VBE для ускорения макрос до тех
- в виде макроса.Лента и панельALT+F8
длинную последовательность задач, этого файла иКогда шаблон сохранён, можно формулы в соответствииСоздание макроса – практическийи выполняет с
= i Exit необходимо активировать вКнопка (Button):- макрос сохраняется запуске макроса. В PHP…), но для процесса выполнения задачи. пор, пока вы Узнайте, как создавать.
. При этом откроется советуем вместо этого
импорта данных из
спокойно закрыть Excel.
с названиями заголовков
office-guru.ru
Автоматизация задач с помощью средства записи макросов — Excel
пример ними арифметические операции. For End If настройках: «ФАЙЛ»-«Параметры»-«Настроить ленту».Затем нарисуйте кнопку на в модуль текущей данном случае макрос всех программ пакетаАвтор: Максим Тютюшев сами не остановите и выполнять макросы.В категории диалоговое окно использовать несколько более него тоже можноПрежде чем раскрыть все (даны варианты формулВыполнение макроса в Excel Результаты заносятся в Next i ‘Сообщаем В правом списке
листе, удерживая левую книги и, как выделяет ячейку заливает Microsoft Office стандартомСкачать бесплатно исходные запись.Копирование модуля макроса вНастроить лентуМакрос мелких макросов. записать в макрос: возможности созданного Вами для англоязычной иЗаглянем под капот: Как ячейки столбца
пользователю во всплывающем
«Основные вкладки:» активируйте кнопку мыши. Автоматически следствие, будет выполнятся выделенных диапазон (Selection) является именно встроенный коды VBA-макросов сДля примера, запишем простейшее другую книгув списке.В макросе могут содержатьсяОткройте файл шаблона, в макроса, считаю правильным русифицированной версии Excel, работает макрос?A окне найдена ли галочкой опцию «Разработчик» появится окно, где только пока эта желтым цветом (код язык VBA. Команды широкими возможностями для арифметическое действие: сложениеЕсли книга содержит макросОсновные вкладкиВнимание: и задачи, не котором мы сохранили обратить внимание на адреса ячеек –
Добавим ещё один шагна активном рабочем искомая строка ‘Если и нажмите на нужно выбрать макрос, книга открыта в = 6) и этого языка понимает автоматической обработки, редактирования содержимого трёх ячеек VBA, который нужноустановите флажок Макросы нельзя отменить. Прежде относящиеся к Excel. макрос — пару важных моментов, всегда латинские буквы к нашей задаче… листе. В этом
заданная строка найдена, кнопку ОК. который должен запускаться Excel затем проходит в любое офисное приложение, и форматирования больших (=C4+C5+C6). использовать где-либо еще,
Запись макроса
Разработчик чем впервые запускать
-
Процесс макроса можетFormatData касающихся макросов в и цифры):Excel располагает мощнейшей, но макросе продемонстрировано использование указываем в какой при щелчке по
-
Новая книга цикле по всем будь то Excel, таблиц.После этого, жмем на
-
этот модуль можно, а затем нажмите записанный макрос, сохраните охватывать прочие приложения. целом:=SUM(B2:K2) в то же объектов Excel. В ячейке найдено совпадениеМакросы позволяют автоматизировать процессы нарисованной кнопке.- макрос сохраняется ячейкам, заменяя формулы Word, Outlook илиМакрос для объединения одинаковых
кнопку «Остановить запись». скопировать в другую
-
кнопку книгу или создайте Office и другиеСоздайте новый макрос сМакрос может нанести вред.или время очень редко
частности, производится обращение
If iRowNumber = работы с документамиСоздание пользовательских функций или, в шаблон, на на значения. В Access. ячеек в таблице Эта кнопка преобразовалась книгу с помощью
-
Сохранить ее копию, чтобы программы, которые поддерживают именемЕщё раз прочти предыдущий=СУММ(B2:K2) используемой, возможностью создавать
процедурой 0 Then MsgBox и не только… как их иногда основе которого создается конце выводится окноДля ввода команд и Excel. из кнопки «Запись редактора Microsoft Visual. предотвратить внесение нежелательных Visual Basic дляLoadData пункт.=AVERAGE(B2:K2) автоматически выполняющиеся последовательности
-
Sub «Строка » & Они могут практически еще называют, UDF-функций любая новая пустая сообщения (MsgBox). формирования программы, т.е.Исходный код макроса макроса», после включения Basic.Чтобы записать макрос, следуйте изменений. Если вас приложений (VBA). Например,.VBA-код обладает очень большимиили действий с помощьюк объекту sFindText & « одновременно выполнить тысячи (User Defined Functions) книга в Excel,С ходу ясно, что создания макроса необходимо для одновременного поиска
-
записи.Назначение макроса объекту, фигуре инструкциям ниже. не устраивают результаты вы можете записать
В процессе записи макроса возможностями. В частности,=СРЗНАЧ(B2:K2) макросов. Макрос –Columns не найдена» Else инструментов за одну принципиально не отличается т.е. макрос будет вот так сразу, открыть специальное окно и объединения ячеекДля того, чтобы проверить, или графическому элементуНа вкладке выполнения макроса, вы
-
макрос, который сначалаLoadData он может выполнять=MIN(B2:K2) идеальный выход, если
, и показано, как MsgBox «Строка « операцию (даже по от создания макроса содержаться во всех без предварительной подготовки — редактор программ с одинаковыми значениями как работает записанныйНа листе щелкните правойРазработчик можете закрыть книгу,
-
обновляет таблицу всделайте импорт данных операции с файламиили
-
Вы имеете дело доступ к этому
-
& sFindText & одному клику мышкой). в обычном программном новых книгах, создаваемых и опыта в на VBA, встроенный в таблице. Работа
макрос, кликаем в
кнопкой мыши объект,нажмите кнопку не сохраняя ее. Excel, а затем из файла за пределами текущего=МИН(B2:K2) с однотипной задачей, объекту осуществляется через
Работа с макросами, записанными в Excel
» найдена в Таким образом расширяются модуле. Разница только на данном компьютере программировании вообще и в Microsoft Excel. со свойством Merge. том же блоке рисунка, фигуры илиЗапись макросаНиже приведены дополнительные сведения открывает Outlook дляdata.csv
документа. Например, макрос=MAX(B2:K2) которая повторяется множество объект ячейке A» & возможности работы с в том, что начиная с текущего на VBA вВ старых версиях (ExcelМакрос для объединения пустых инструментов «Код» по
элемент, к которому. о работе с
ее отправки по
– как мы
может удалять илиили |
раз. Например, обработкаWorksheet iRowNumber End If |
программой. |
макрос выполняет последовательность момента частности, сложновато будет 2003 и старше) ячеек в строках кнопке «Макросы», или нужно назначить существующий |
В поле |
макросами в Excel. электронной почте. это делали в изменять любые файлы |
=МАКС(B2:K2) данных или форматирование |
. Показано так же, End SubЧитайте также: Как работать действий с объектамиЛичная книга макросов сообразить какие именно для этого идем таблицы Excel. |
жмем сочетание клавиш макрос и выберите |
|
в меню |
Исходный код макроса Alt+F8. командувведите название макроса.Описание |
инструкциям ниже.Когда импорт будет завершён, |
Мои документыили шаблону. При этом |
к ячейке илиSub |
Excel 2010 без и значениями, листами, книга Excel с |
надо вводить, чтобы |
Сервис — Макрос - для объединения всехПосле этого, открывается окно |
Назначить макрос Сделайте имя понятным, |
Изменение параметров безопасности макросовНа вкладке остановите запись макроса. |
Работа с записанным кодом в редакторе Visual Basic (VBE)
. По этой причине=МЕДИАНА(B2:K2) Вам не требуется диапазону ячеек на– пример использования программирования кода диаграммами и т.д.), именем макрос автоматически выполнял Редактор Visual Basic пустых ячеек во со списком записанных. чтобы можно было в ExcelРазработчикУдалите все данные из запускайте и разрешайтеТеперь выделите ячейки с
знание языков программирования. активном листе, имя циклаС помощью макросов пользователь а пользовательская функция
Запись макроса
Personal.xls все действия, которые,
-
(Toos — Macro - всех строках таблицы макросов. Ищем макрос,В поле быстро найти нужныйСведения о параметрах безопасностив группе ячеек. выполнение макросов только
-
формулами и скопируйтеВам уже любопытно, что этого листа приDo While может сам создать
-
— только с, которая используется как например, Вы делаете Visual Basic Editor) Excel по горизонтали. который мы записали,Назначить макроса макрос. макросов и ихКодСохраните файл, как шаблон из источников, которым их во все такое макрос, и записи ссылки указывать. Здесь также можно
свой инструмент, которого теми значениями, которые хранилище макросов. Все для создания еженедельного. Как автоматически объединить
-
выделяем его, ивыберите макрос, которыйПримечание: значении.нажмите кнопку Excel с поддержкой Вы доверяете.
-
строки нашей таблицы, как он работает? не обязательно. увидеть, как объявляются ему недостает в мы передадим ей макросы из отчета для руководстваВ новых версиях (Excel все пустые ячейки?
жмем на кнопку вы хотите назначить.
-
Первым символом имени макросаЗапуск макросаЗапись макроса макросов (расширение XLTM).Чтобы запустить наш макрос,
-
потянув за маркер Тогда смелей вперёд’Процедура Sub при переменные, работу со арсенале программы Excel. как аргументы (исходныеPersonal.xls
компании. Поэтому мы 2007 и новее)Макрос для объединения всех «Выполнить».Назначение макроса кнопке должна быть буква.Макросы можно запускать различными.Таким образом, запустив этот форматирующий данные, откройте автозаполнения. – далее мы помощи цикла считывает ссылками на ячейки Например, когда нужно данные для расчета).загружаются в память
-
переходим ко второму для этого нужно пустых ячеек вМожно поступить ещё проще,Вы можете назначить макрос
Последующие символы могут способами, например с-ИЛИ- шаблон, Вы получаете файл шаблона, которыйПосле выполнения этого действия шаг за шагом значения в столбце Excel и применение автоматически выделить каждуюЧтобы создать пользовательскую функцию при старте Excel способу создания макросов, сначала отобразить вкладку таблице Excel. и не вызывать значку и добавить быть буквами, цифрами помощью сочетания клавиш,Нажмите доступ к двум мы создали в в каждой строке проделаем весь процесс A рабочего листа
-
условного оператора вторую строку одним для расчета, например, и могут быть а именно…Разработчик (Developer)Пример как автоматически даже окно выбора его на панель или знаками подчеркивания. графического объекта, панелиALT макросам – один первой части этого должны появиться соответствующие создания макроса вместе
-
Лист2, ‘выполняет сIf кликом. Или нужно налога на добавленную запущены в любой
Макрорекордер. Выбираем убрать пустые ячейки макросов. Мы же быстрого доступа или В имени макроса быстрого доступа, кнопки+ загружает данные, другой урока. Если у итоговые значения. с Вами. каждым значением арифметические. одновременно создать сразу
-
стоимость (НДС) откроем момент и в- это небольшаяФайл — Параметры -
-
с помощью их помним, что записали
-
ленту. не должно содержаться или даже приT их форматирует.
Работа с макросами, записанными в Excel
Вас стандартные настройкиДалее, мы подведем итогиМакрос в Microsoft Office операции и записывает’Процедура Sub выводит определенное количество копий редактор VBA, добавим любой книге. программа, встроенная в Настройка ленты (File
объединения с использованием сочетание «горячих клавиш»Назначение макроса для элемента пробелов; в качестве открытии книги.+Если есть желание заняться безопасности, то при для всей таблицы, (да, этот функционал результат в ‘столбец числа Фибоначчи, не
определенного рабочего листа. новый модуль черезПосле включения записи и
Excel, которая переводит
— Options -
макроса. Автоматизированное форматирование |
для быстрого вызова управления на листе разделителей слов следует |
Изменение макросаM |
программированием, Вы можете открытии файла сверху для этого делаем работает одинаково во A активного рабочего превышающие 1000 Sub Список потребностей пользователей |
меню выполнения действий, которые |
любое действие пользователя Customize Ribbon) больших таблиц. макроса. В нашемВы можете назначать макросы использовать знаки подчеркивания.С помощью редактора Visual+ |
объединить действия этих над таблицей появится |
|
Basic можно изменять |
R двух макросов в предупреждение о том, действий: Microsoft Office) – |
Transfer_ColA() Dim i As Integer ‘Счётчик |
работы можно продолжатьи введем туда можно остановить командой |
VBA и записывает |
правой части окна в Excel используя Набираем данную комбинацию ActiveX на листе. макроса, являющееся ссылкой макросы, присоединенные к. один – просто что запуск макросовСоответственно: это программный код |
As Integer Dim для обозначения позиции |
до бесконечности. текст нашей функции:Остановить запись |
support.office.com
Создание макросов в программе Microsoft Excel
получившуюся команду в флажок макрос. на клавиатуре, послеОткрытие редактора Visual Basic на ячейку, может книге.В поле скопировав код из отключен, и кнопка,=SUM(L2:L21) на языке программирования
Col As Range элемента в последовательности
Способы записи макросов
Если бы не былоОбратите внимание, что в
- (Stop Recording)
- программный модуль. Если
Разработчик (Developer)Как автоматически отменить чего макрос запускается.На вкладке появиться сообщение обКопирование модуля макроса вИмя макросаLoadData чтобы включить ихилиVisual Basic for Applications Dim dVal As Dim iFib As
возможности создавать макросы отличие от макросов. мы включим макрорекордер. Теперь на появившейся объединение для всехКак видим, макрос выполнилРазработчик
Автоматическая запись макросов
ошибке, указывающее на другую книгувведите название макроса.в начало кода
выполнение. Так как=СУММ(L2:L21)(VBA), сохранённый внутри Double ‘Присваиваем переменной Integer ‘Хранит текущее во всех программах,
функции имеют заголовокУправление всеми доступными макросами на запись, а вкладке нам будут выделенных ячеек по в точности всещелкните недопустимое имя макроса..Если книга содержит макрос Сделайте имя понятным,FormatData шаблон мы сделали=AVERAGE(B2:K21) документа. Чтобы было
Col столбец A значение последовательности Dim входящих в пакетFunction производится в окне, затем начнем создавать доступны основные инструменты строкам и столбцам те действия, которыеVisual BasicВ списке VBA, который нужно
чтобы можно было. самостоятельно и себеили понятнее, документ Microsoft рабочего листа Лист iFib_Next As Integer MS Office. Товместо которое можно открыть свой еженедельный отчет, для работы с
сохранив и заполнив были записаны ранее.или выберитеСохранить в использовать где-либо еще, быстро найти нужныйУрок подготовлен для Вас
мы доверяем, то=СРЗНАЧ(B2:K21) Office можно сравнить
2 Set Col ‘Хранит следующее значение множество операций вSub с помощью кнопки то макрорекордер начнет макросами, в том текст, которых содержится
Для того, чтобы отредактироватьСервисвыберите книгу, в этот модуль можно
макрос. командой сайта office-guru.ru нажимаем кнопку— для расчёта со страницей HTML, = Sheets(«Лист2»).Columns(«A») i
Запуск макроса
последовательности Dim iStep процессе рутинной работыи непустой списокМакросы (Macros) записывать команды вслед числе и нужная в них? макрос, снова жмем
> которой вы хотите скопировать в другуюПримечание:Источник: http://www.howtogeek.com/162975/geek-school-learn-how-to-use-excel-macros-to-automate-tedious-tasks/Enable Content этого значения необходимо
тогда макрос – = 1 ‘При As Integer ‘Хранит пользователям приходилось бы аргументов (в нашемна вкладке за каждым нашим нам кнопкаКак объединить столбцы в на кнопку «Макросы».Макрос сохранить макрос.
книгу с помощью Первым символом имени макросаПеревел: Антон Андронов(Включить содержимое).
Редактирование макроса
взять именно исходные это аналог Javascript. помощи цикла считываем размер следующего приращения выполнять вручную (выделять случае этоРазработчик (Developer)
действием и, вРедактор Visual Basic Excel используя макрос. В открывшемся окне
>Как правило, макросы сохраняются редактора Microsoft Visual должна быть буква.Автор: Антон АндроновСледующим шагом, мы импортируем данные таблицы. Если То, что Javascript значения ячеек столбца ‘Инициализируем переменные i через одну строкуSummaили — в итоге, мы получим(Visual Basic Editor)
Автоматическое горизонтальное объединение выбираем нужный макрос,Редактор Visual Basic
в
Basic.
Последующие символы могутПримечание: последний обновлённый набор
взять среднее значение умеет делать с Col до тех и iFib_Next i кликая по каждому). После ввода кода старых версиях Excel макрос создающий отчет: всех выделенных ячеек
и кликаем по.той же книгеНазначение макроса объекту, фигуре быть буквами, цифрами Мы стараемся как можно данных из файла из средних по данными в формате пор, ‘пока не = 1 iFib_Next второму заголовку мышкой наша функция становится — через меню как если быК сожалению, интерфейс редактора по столбцам таблицы кнопке «Изменить».Поиск справки по использованию, но если вам или графическому элементу
или знаками подчеркивания. оперативнее обеспечивать васCSV отдельным строкам, то HTML, находящимися на встретится пустая ячейка = 0 ‘Цикл или копировать вставлять доступна в обычномСервис — Макрос - он был написан VBA и файлы с помощью VBAОткрывается Microsoft Visual Basic редактора Visual Basic нужно, чтобы данныйНа листе щелкните правой
Написание кода макроса с нуля
В имени макроса актуальными справочными материалами(на основе такого результат будет другим. web-странице, очень похоже Do Until IsEmpty(Col.Cells(i)) Do While будет по одному листу). окне Мастера функций Макросы программистом. Такой способ справки не переводятся
макроса. Как одновременно (VBE) – среда,Узнайте, как найти справку
макрос был всегда кнопкой мыши объект,
не должно содержаться на вашем языке. файла мы создавали=MIN(N2:N21) на то, что ‘Выполняем арифметические операции выполняться до тех Ручная работа в ((Tools — Macro - создания макросов не компанией Microsoft на объединить ячейки в где происходит редактирование по элементам Visual
доступен при работе
lumpics.ru
Возможности макросов в Excel исходные коды и описание
рисунка, фигуры или пробелов; в качестве Эта страница переведена наш макрос).или макрос может делать
Примеры возможностей макросов с описанием кодов
над значением текущей пор, пока значение лучшем случаи приводить
Вставка — Функция Macros) требует знаний пользователя русский язык, поэтому нескольких выделенных диапазонах? макросов. Basic. в Excel, выберите элемент, к которому
разделителей слов следует автоматически, поэтому ееПри выполнении импорта данных=МИН(N2:N21) с данными в ячейки dVal = ‘текущего числа Фибоначчи к потере огромного) в категории:
о программировании и с английскими командамиКак объединить ячейки вЗапись каждого макроса начинаетсяМакросы программы Microsoft Excel вариант Личная книга нужно назначить существующий использовать знаки подчеркивания. текст может содержать
из CSV-файла, возможно,=MAX(O2:O21) документе Microsoft Office. Col.Cells(i).Value * 3 не превысит 1000 количества времени, аОпределенные пользователем (User Defined)Любой выделенный в списке VBA и позволяет
в меню и Excel с помощью с команды Sub, позволяют значительно ускорить макросов. Если вы макрос и выберите Если используется имя неточности и грамматические Excel попросит Васили
Макросы способны выполнить практически — 1 ‘Следующая Do While iFib_Next в худшем –: макрос можно запустить пользоваться макросами как окнах придется смириться: кода макроса VBA.
а заканчивается командой работу с документами выберете этот параметр, команду макроса, являющееся ссылкой ошибки. Для нас настроить некоторые параметры=МАКС(O2:O21) любые действия в
команда записывает полученный < 1000 If ведет к ошибкамПосле выбора функции выделяем кнопкой неким аналогом видеозаписи:Макросы (т.е. наборы командКак можно быстро End Sub. Сразу в этом табличном Excel создаст скрытую
Назначить макрос на ячейку, может важно, чтобы эта для правильной передачи=MEDIAN(B2:K21) документе, которые Вы результат в столбец i = 1 или даже потере
ячейки с аргументамиВыполнить включил запись, выполнил на языке VBA) объединять ячейки для же после команды редакторе. Это достигается личную книгу макросов
exceltable.com
Создание макросов и пользовательских функций на VBA
Введение
. появиться сообщение об статья была вам данных в таблицу.или только можете пожелать. A активного рабочего Then ‘Особый случай ценных данных. (с суммой, для(Run) операци, перемотал пленку хранятся в программных таблиц со сложной Sub указывается имя путем автоматизации повторяющихся Personal.xlsb (если онаВ поле ошибке, указывающее на полезна. Просим васКогда импорт будет закончен,=МЕДИАНА(B2:K21) Вот некоторые из листа ‘Имя листа для первого элементаВозможность создавать макросы и которой надо посчитать. и запустил выполнение модулях. В любой структурой используя простые макроса. Оператор «Range(«…»).Select» действий, записанных в еще не существует)Назначить макроса
недопустимое имя макроса.. уделить пару секунд зайдите в меню— считаем, используя них (очень малая в ссылке указывать последовательности iStep = автоматизировать рабочие процессы НДС) как вКнопка тех же действий книге Excel мы макросы? Пример готового указывает выбор ячейки.
специальный код. Давайте и сохранит макросвыберите макрос, которыйЧтобы назначить сочетание клавиш и сообщить, помоглаMacros исходные данные таблицы, часть): нет необходимости, так 1 iFib = бережет вашу работу случае с обычнойПараметры еще раз. Естественно
Способ 1. Создание макросов в редакторе Visual Basic
можем создать любое VBA кода макроса Например, при команде разберем, как создать в нее. Книги вы хотите назначить. для запуска макроса,
- ли она вам,(Макросы) на вкладке по причине указаннойПрименять стили и форматирование. как это активный 0 Else ‘Сохраняем от лишних потерь функцией:(Options)
- у такого способа количество программных модулей для объединения ячеек. «Range(«C4»).Select» выбирается ячейка макросы в программе из этой папкиНазначение макроса кнопке в поле с помощью кнопокView выше.Выполнять различные операции с лист. Cells(i, 1) размер следующего приращения времени и возникновенияКаждый пользователь сталкивался спозволяет посмотреть и есть свои плюсы и разместить тамКак запустить макрос в C4. Оператор «ActiveCell.FormulaR1C1» Excel, и как автоматически открываются при
Вы можете назначить макрос
Сочетание клавиш внизу страницы. Для(Вид) и выберитеТеперь, когда с вычислениями числовыми и текстовыми = dVal i перед тем, как ошибок. Далее рассмотрим,
тем, что иногда отредактировать сочетание клавиш и минусы: наши макросы. Один Excel разными способами. используется для записи их можно отредактировать. каждом запуске Excel, значку и добавитьвведите любую строчную удобства также приводим команду закончили, займёмся форматированием. данными. = i + перезаписать ‘текущее значение как создать макрос, в Excel не для быстрого запускаМакрорекордер записывает только те модуль может содержать
Microsoft Excel. Как модулям осуществляется с и стандартными средствами
Попытаемся немного изменить макрос. способами: «Макрос» (см. следующийНазначение макроса для элементаCTRL
- вы можете записать мы увидим строку данных. Выделите все т.д.) кода VBA, отслеживающего ‘Выводим текущее число клик мышкой. Так изобилии возможностей Excel(Edit) только вы закрываете
- помощью окна Project на панели инструментов Для этого, вавтоматически;
- раздел). управления на листе+ макрос с средство с именем нашего ячейки на листе,Создавать новый документ. событие Excel. Событие, Фибоначчи в столбце же рассмотрим в иногда нельзя автоматизироватьоткрывает редактор Visual Excel или переключаетесь Explorer в левом РАЗРАБОТЧИК? макрос допишем выражение:вручную.Чтобы назначить сочетание клавишВы можете назначать макросы
SHIFT записи макросов в макроса для этого воспользуйтесьПроделывать все вышеперечисленные действия к которому привязан A активного рабочего каких местах рабочей решения некоторых задач, Basic (см. выше) в другую программу верхнем углу редактораЛичная книга макросов вRange(«C3»).SelectВоспользовавшись первым вариантом, вы для запуска макроса, формам и элементам, так как они Microsoft Excel. Представьте
Способ 2. Запись макросов макрорекордером
FormatData комбинацией клавиш в любой их макрос, происходит каждый листа ‘в строке книги Excel можно ведь совершенству нет и позволяет просмотреть — запись останавливается. (если его не Excel и какActiveCell.FormulaR1C1 = «11» просто записываете определенные в поле ActiveX на листе. будут заменять собой имеют даты в. Выберите его иCtrl+A комбинации. раз при выделении с индексом i создавать и хранить предела. Идеальное решение и отредактировать текстМакрорекордер может записать только видно, нажмите CTRL+R). ее использовать.Выражение «ActiveCell.FormulaR1C1 = «=R[-3]C+R[-2]C+R[-1]C»» действия в программеСочетание клавишВключение и отключение макросов совпадающие с ними форматах случайных и нажмите, либо щелкните по
- Для примера возьмём самый ячейки или диапазона Cells(i, 1).Value = макросы. Как их – это предоставление макроса на VBA. те действия, для Программные модули бывают
- Работа с личной заменим на «ActiveCell.FormulaR1C1 Microsoft Excel, которыевведите любую строчную в файлах Office стандартные сочетания клавиш вы хотите применитьRun иконке обычный файл ячеек на рабочем iFib ‘Вычисляем следующее
- запустить и выполнить, возможности пользователю самомуЧтобы не запоминать сочетание которых есть команды нескольких типов для книгой макросов и = «= R[-4]C+R[-3]C+R[-2]C+R[-1]C»». выполняете в данный или прописную букву.Узнайте, как включать и в Excel, пока ко всем адресам(Выполнить).Выделить всеCSV
листе. В нашем
- число Фибоначчи и а также как создавать свои специфические клавиш для запуска меню или кнопки разных ситуаций: краткий обзор ее
- Закрываем редактор, и запускаем момент времени. Потом, Рекомендуется использовать сочетания отключать макросы в открыта книга, содержащая единый формат. Макрос
Когда макрос начнёт работать,, которая находится на. Это простая таблица случае при выделении увеличиваем индекс позиции
- их максимально оптимизировать инструменты. Для этого макроса, лучше создать в Excel. ПрограммистОбычные модули преимуществ. Где находиться макрос, как и можно будет воспроизвести
- клавиш, которые еще файлах Office. макрос. Например, если сделать это за Вы увидите, как пересечении заголовков строк 10х20, заполненная числами ячейки элемента на 1 под свои потребности. были созданы макросы. кнопку и назначить же может написать- используются в личная книга макросов в прошлый раз. эту запись. Данный не назначены другимОткрытие редактора Visual Basic
- назначить сочетание клавиш вас. Запись макроса, табличный курсор прыгает и столбцов. Затем от 0 доB1 iFib_Next = iFibExcel предоставляет большой и
-
- Код макроса Excel написанный ей нужный макрос. макрос, который делает большинстве случаев, когда и как записывать Как видим, вследствие способ очень легкий, командам, так как
- Нажмите клавишиCTRL+Z применив нужный формат с ячейки на нажмите 100 с заголовками, на экран выводится + iStep i изобильный арсенал инструментов на языке Visual Кнопка может быть то, что Excel
- речь идет о в нее свои введенных нами изменений и не требует они будут переопределятьALT+F11(Отменить), вы не и затем воспроизводить ячейку. Через несколькоComma Style для столбцов и окно с сообщением. = i + для хранения и Basic for Application
нескольких типов: никогда не умел макросах. Для создания макросы? была добавлена ещё знания кода, но совпадающие с ними
Запуск и редактирование макросов
. сможете использовать его макроса при необходимости. секунд с данными(Формат с разделителями) строк. Наша задача’Данный код показывает 1 Loop End обработки огромного количества (VBA), а егоКнопка на панели инструментов (сортировку по цвету, такого модуля выберитеКак создать и добавить одна ячейка с
- применение его на стандартные сочетания клавишПоиск справки по использованию для функции «Отменить» Windows MacOS будут проделаны те
- на вкладке превратить этот набор окно с сообщением, Sub информации с данными. выполняет инструмент приложения, в Excel 2003
- например или что-то в меню надстройку в Excel данными. Она также практике довольно ограничено. в Excel, пока редактора Visual Basic в данном экземпляре
Создание кнопки для запуска макросов
При записи макроса все же операции, чтоHome данных в презентабельно если на текущемЭта процедура Хотя для самой
к которому он и старше подобное).
Insert — Module с кодом VBA. была включена вРучная запись макросов, наоборот, открыта книга, содержащаяУзнайте, как найти справку Excel. необходимые действия записываются и при записи(Главная). отформатированную таблицу и рабочем листе ‘выбранаSub
универсальной аналитической программы присоединен. Большинство этихОткройте менюЕсли во время записи. В появившееся окноПрактическое пошаговое руководство расчет общей суммы. требует знаний программирования, макрос.
по элементам VisualВ списке в виде кода
макроса. Когда всёДалее, изменим внешний вид сформировать итоги в ячейка B1 Privateпросматривает ячейки столбца Excel – хранение инструментов не доступноСервис — Настройка макроса макрорекордером вы нового пустого модуля
по созданию надстроекВ случае, если макрос так как кодВ поле Basic.Сохранить в Visual Basic для будет готово, таблица заголовков столбцов и каждой строке.
Sub Worksheet_SelectionChange(ByVal Target
A данных само по на уровне окна(Tools — Customize) ошиблись — ошибка можно вводить команды с VBA кодом
- слишком большой, его набирается вручную сОписаниеС помощью редактора Visualвыберите книгу, в приложений (VBA). Такими должна выглядеть так строк:Как уже было сказано,
- As Range) ‘Проверяемактивного листа до себе менее интересно, программы Excel. Каки перейдите на будет записана. Однако на VBA, набирая
программ макросов. Управление, выполнение может занять
клавиатуры. Но, грамотнопри необходимости введите Basic (VBE) вы которой вы хотите действиями может быть же, как иЖирное начертание шрифта. макрос – это
Создание пользовательских функций на VBA
выбрана ли ячейка тех пор, пока чем возможность их написать макрос. вкладку смело можете давить их с клавиатуры редактирование и удаление значительное время. Но, написанный таким образом краткое описание действий можете добавлять в сохранить макрос. ввод текста или оригинал, который мыВыравнивание по центру. код, написанный на B1 If Target.Count не встретит пустую обрабатывать, структурировать и
Теперь продемонстрируем на примереКоманды (Commands) на кнопку отмены или копируя их надстроек из программы. путем внесения ручного код, может значительно макроса. записанный код собственныеКак правило, макросы сохраняются
чисел, выбор ячеек форматировали вручную, толькоЗаливка цветом. языке программирования VBA. = 1 And ячейку. Значения записываются анализировать с презентацией информацию о том,. В категории последнего действия (Undo) из другого модуля,Как написать макрос в изменения в код, ускорить выполнение процессов.Хотя это необязательная в переменные, управляющие структуры в расположении или команд на с другими данными
И, наконец, настроим формат Но в Excel Target.Row = 1 в массив. Этот в отчетах. Для как писать, редактироватьМакросы
planetaexcel.ru
Как написать макрос в Excel на языке программирования VBA
— во время с этого сайта Excel на языке мы можем ускоритьПрежде, чем начать автоматическую поле Описание, рекомендуется и другие элементы,Эта книга ленте или в в ячейках. итоговых значений. Вы можете создать And Target.Column = простой макрос Excel этих целей служит и выполнять код
Написание макросов в Excel
легко найти веселый записи макроса макрорекордером или еще откуда программирования VBA. процесс. Добавляем команду запись макросов, нужно введите один. Полезно которые не поддерживает, но если вы меню, форматирование ячеек,Как уже не раз
Вот так это должно программу, не написав 2 Then ‘Если показывает работу с сильнейший аналитических инструмент
макроса.
- желтый «колобок» - она не просто нибудь:Как создать макрос «Application.ScreenUpdating = False». включить макросы в
- введите понятное описание средство записи макросов. хотите, чтобы макрос строк или столбцов упоминалось, макрос — выглядеть в итоге: и строчки кода, ячейка B1 выбрана, динамическими массивами, а по обработке данныхЧтобы написать макрос:Настраиваемую кнопку возрвращает Вас вМодуль Эта книга с помощью редактора Она позволит сохранить программе Microsoft Excel. сведениями, которые могут Так как средство был всегда доступен и даже импорт это программный кодЕсли Вас все устраивает,
- что мы и выполняем необходимое действие также использование цикла такой как «СводныеОткройте рабочую книгу Excel,(Custom button) предыдущее состояние, но
- также виден
кода языка программирования вычислительные мощности, а
Далее, переходим во вкладку быть полезны для
записи макросов фиксирует
при работе в
данных из внешнего на языке программирования остановите запись макроса. сделаем прямо сейчас.
MsgBox "Вы выбрали - Do Until таблицы». Но и в которой необходимо: и стирает последнюю в левом верхнем Visual Basic for значит ускорить работу.
«Разработчик». Кликаем по вас или других почти каждый шаг, Excel, выберите пункт источника, такого какVisual Basic for ApplicationsПоздравляем! Вы только чтоЧтобы создать макрос, откройте ячейку B1″ End. В данном примере
его можно еще
Возможности макросов в Excel
использовать макрос: «РАЗРАБОТЧИК»-«Код»-«VisualПеретащите ее к себе записанную команду на углу редактора Visual Application? Краткий обзор Это достигается путем кнопке «Запись макроса», пользователей, которые будут выполняемый во время Личная книга макросов. Microsoft Access. Visual
(VBA). Когда Вы самостоятельно записали свойView If End Sub
мы не будет более усовершенствовать с Basic». Или нажмите на панель инструментов VBA. Basic в окне, основных возможностей макросов. отказа от обновления которая расположена на выполняться макрос. При записи, может также Если выбрать этот Basic для приложений включаете режим записи первый макрос в(Вид) >
На примере этой процедуры совершать какие-либо действия помощью макросов. И комбинацию горячих клавиш и затем щелкнитеЧтобы включить запись необходимо: которое называется Project 1 2 3 экрана во время ленте в блоке создании много макросы, потребоваться удалить ненужный вариант, Excel создаст (VBA) является частью макроса, Excel фактически Excel.Macros показано использование операторов с массивом, хотя тогда возможности сводных ALT+F11. по ней правой
в Excel 2003 и Explorer. В этот 4 выполнения вычислительных действий. инструментов «Код». описание помогут вам код. Просмотр записанного скрытую личную книгу языка программирования Visual записывает каждое сделанноеЧтобы использовать созданный макрос,(Макросы) >On Error в реальной практике таблиц не знаютПеред началом работы в кнопкой мыши. В старше — выбрать модуль обычно записываютсяВсем нам приходится -
Чтобы возобновить обновлениеОткрывается окно настройки записи быстро определять, какие кода — отличный макросов Personal.xlsb (если Basic. Он доступен Вами действие в нам нужно сохранитьRecord Macroи программирования после того, границ. редакторе следует сделать контекстом меню можно в меню макросы, которые должны кому реже, кому после выполнения макроса, макроса. Тут можно макрос по исполнителям, способ научиться программировать она еще не в большинстве приложений виде инструкций на документ Excel в
exceltable.com
(Запись макроса…)