Время на прочтение
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) — тут скобки нужны постоянно.
Введение
Всем нам приходится — кому реже, кому чаще — повторять одни и те же действия и операции в 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):
После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:
- Создаём макрос при помощи команды Запись макроса
- Цикл FOR
- Конструкция IF
- Конструкция CASE
Многие люди думают, что макросы в Excel – это очень трудно, но это не так. В этой статье Вы найдёте несколько интересных и простых примеров, как можно автоматизировать Ваши повседневные задачи в Excel. Макрос – это программа на Visual Basic, созданная для того, чтобы автоматизировать задачи в Microsoft Office. В своих примерах я использую Excel 2010, но с таким же успехом Вы можете использовать Excel 2007.
Содержание
- Создаем макрос при помощи команды «Запись макроса»
- Цикл FOR
- Конструкция IF
- Конструкция CASE
- Заключение
Создаем макрос при помощи команды «Запись макроса»
- Для начала откройте вкладку View (Вид) на Ленте. В выпадающем списке Macros (Макросы) нажмите кнопку Record Macro (Запись макроса).
Откроется диалоговое окно Record Macro (Запись Макроса).
- Задайте имя макросу (не допускаются пробелы и специальные символы), клавишу быстрого вызова, а также, где бы Вы хотели сохранить свой макрос. При желании, Вы можете добавить описание.
- С этого момента макрос записывает действия. Например, Вы можете ввести слово «Hello» в ячейку A1.
- Теперь снова нажмите иконку Macros (Макросы) и в раскрывшемся меню выберите Stop Recording (Остановить запись).
Доступ к записанному макросу можно получить с помощью команды View Macros (Макросы), которая находится на вкладке View (Вид) в выпадающем меню Macros (Макросы). Откроется диалоговое окно Macro (Макрос), в котором Вы сможете выбрать нужный. Дважды кликните по имени макроса, чтобы выполнить программу.
Кроме этого, Вы можете связать макрос с кнопкой. Для этого:
- На вкладке File (Файл) нажмите Options (Параметры) > Quick Access Toolbar (Панель быстрого доступа).
- В поле Choose commands from (Выбрать команды из) выберите All Commands (Все команды).
- Найдите команду Option Button (Кнопка), нам нужна та, что относится к разделу Form Control (Элементы управления формы). Выделите ее и нажмите Add (Добавить). Затем нажмите ОК, чтобы закрыть параметры Excel.
- Выберите команду, только что добавленную на Панель быстрого доступа, и начертите контур кнопки на рабочем листе Excel.
- Назначьте макрос объекту.
Примечание: Если у вас включена вкладка Developer (Разработчик), то получить доступ к элементам управления формы можно с нее. Для этого перейдите на вкладку Developer (Разработчик), нажмите на иконку Insert (Вставить) и из раскрывающегося меню выберите нужный элемент.
Не знаете, как отобразить вкладку Developer (Разработчик)? Excel 2007: жмем на кнопку Office > Excel Options (Параметры Excel) > Popular (Основные) и ставим галочку напротив опции Show Developer tab in the Ribbon (Показывать вкладку «Разработчик» на ленте). Excel 2010: жмем по вкладке File (Файл) > Options (Параметры) > Customize Ribbon (Настройка ленты) и в правом списке включаем вкладку Developer (Разработчик).
Цикл FOR
В следующем примере Вы увидите, как использовать цикл FOR. Цикл FOR позволяет нам выполнить повторение цикла с разными значениями. Давайте посмотрим, как можно заполнить числами от 1 до 5 ячейки A1:A5.
Для этого на вкладке Developer (Разработчик) нажмите Visual Basic. Дважды кликните по объекту из списка Microsoft Excel Objects, в котором должен быть сохранён макрос. Введите вот такой код:
Sub Macro1 () For n = 1 To 5 Cells(n, 1) = n Next n End Sub
Сохраните файл. Чтобы выполнить макрос, перейдите View > Macros > View Macros (Вид > Макросы > Макросы), выберите из списка название нужного макроса и нажмите Run (Выполнить).
Следующий код отображает фразу «Hello World» в окне сообщений Windows.
Sub MacroName() MsgBox ("Hello World!") End Sub
В следующем примере мы создаём сообщение с выбором Yes (Да) или No (Нет). Если выбрать вариант Yes (Да), то значение ячейки будет удалено.
Sub MacroName() Dim Answer As String Answer = MsgBox("Are you sure you want to delete the cell values ?", vbQuestion + vbYesNo, "Delete cell") If Answer = vbYes Then ActiveCell.ClearContents End If End Sub
Давайте проверим этот код. Выделите ячейку и запустите макрос. Вам будет показано вот такое сообщение:
Если Вы нажмёте Yes (Да), значение в выделенной ячейке будет удалено. А если No (Нет) – значение сохранится.
Конструкция IF
В Microsoft Excel Вы также можете использовать конструкцию IF. В этом коде мы будем раскрашивать ячейки в зависимости от их значения. Если значение в ячейке больше 20, то шрифт станет красным, иначе – синим.
Sub MacroName() Dim CellValue As Integer CellValue = ActiveCell.Value If CellValue > 20 Then With Selection.Font .Color = -16776961 End With Else With Selection.Font .ThemeColor = xlThemeColorLight2 .TintAndShade = 0 End With End If End Sub
Для проверки этого кода выберем ячейку со значением больше 20:
Когда Вы запустите макрос, цвет шрифта изменится на красный:
При выполнении второго условия шрифт станет синим:
Конструкция CASE
Вы также можете использовать конструкцию Case, чтобы связать выполнение действия с появлением определённого значения в ячейке. В следующем примере отображается сообщение, содержание которого зависит от указанного возраста человека.
Sub MacroName() Dim CellValue As Integer CellValue = ActiveCell.Value Select Case CellValue Case 60 To 200 MsgBox "The person is old" Case 30 To 59 MsgBox "The person is adult" Case 18 To 29 MsgBox "The person is young" Case 0 To 17 MsgBox "The person is a child" Case Else MsgBox "Unknown age" End Select End Sub
Чтобы протестировать этот пример, Вы должны выбрать ячейку со значением и запустить макрос. Если значение выбранной ячейки, к примеру, равно 44, то будет показано вот такое сообщение:
Заключение
Макросы – это отличный способ автоматизировать задачи в Excel. Эта статья показывает лишь немногие примеры того, что можно сделать при помощи макросов.
Оцените качество статьи. Нам важно ваше мнение:
Руководство и примеры работы с макросами в Excel
- Смотрите также в обычном программном
- - это специальная
- для создания еженедельного
- Разработчик (Developer)
Результаты этих вычислений можно заметить, программировать в на величину шага); знаком с азами С тех пор относительные. Если же для работы с упоминалось, макрос — Excel. нажмите CellValue = ActiveCell.ValueFileСоздаём макрос при помощи модуле. Разница только книга Excel с отчета для руководства. Выбираем лучше всего сразу самом известном табличномLoop Visual Basic, будет он пережил несколько
Создаем макрос при помощи команды «Запись макроса»
- параметр выключен, то макросами. Над лентой это программный кодЧтобы использовать созданный макрос,ОК Select Case CellValue(Файл) > команды Запись макроса
в том, что именем компании. Поэтому мы
- Файл — Параметры - внести в соответствующие процессоре Microsoft неEnd Sub. намного проще. Однако модификаций и востребован при записи макроса нажмите кнопку на языке программирования
- нам нужно сохранить. Case 60 ToOptionsЦикл FOR макрос выполняет последовательностьPersonal.xls переходим ко второму
- Настройка ленты (File ячейки таблицы «Эксель». так уж сложно.В результате запуска данного даже те, кто у миллионов пользователей
будут создаваться абсолютныеизменить в ExcelVisual Basic for Applications документ Excel вНачиная с этого момента, 200 MsgBox «The(Параметры) >Конструкция IF действий с объектами, которая используется как способу создания макросов, — Options -Для итогов по факту Особенно, если научиться макроса в «Эксель» их не имеет, по всему миру. ссылки (подробнее об
и следуйте инструкциям(VBA). Когда Вы формате, который поддерживает
- ВСЕ Ваши действия person is old»Customize RibbonКонструкция CASE книги (ячейками, формулами хранилище макросов. Все а именно…
- Customize Ribbon) и прогнозу получают применять функции VBA. получаем два столбца, при желании смогут При этом многие
- этих двух типах в Создание, выполнение, включаете режим записи макросы. Для начала с документом записываются: Case 30 To(Настройка ленты) иМногие люди думают, что и значениями, листами, макросы изМакрорекордери включаем в по формулам ItogP=ItogP Всего в этом
- в первом из освоиться достаточно быстро. работают лишь с ссылок можно узнать изменение и удаление макроса, Excel фактически
- необходимо удалить все
изменения ячеек, пролистывание 59 MsgBox «The в правом списке макросы в Excel диаграммами и т.д.),Personal.xls- это небольшая правой части окна + P и языке программирования, созданном которых записаны значенияЗа таким названием скрываются малой толикой возможностей в статьях, посвящённых макросов. записывает каждое сделанное данные из созданной
таблицы, даже изменение person is adult» включаем вкладку – это очень а пользовательская функциязагружаются в память программа, встроенная в флажок ItogF=ItogF+ F. специально для написания для x, а программы, написанные на этого табличного процессора теме ссылок наУдаление макроса: Вами действие в нами таблицы, т.е. размера окна. Case 18 ToDeveloper трудно, но это — только с при старте Excel Excel, которая переводитРазработчик (Developer)Для отклонений используют = приложений в «Эксель» во втором —
Цикл FOR
языке Visual Basic и даже не ячейки в Excel).При открытии книги, содержащей виде инструкций на сделать из неёExcel сигнализирует о том, 29 MsgBox «The(Разработчик). не так. В теми значениями, которые и могут быть любое действие пользователя. Теперь на появившейся (ItogF – ItogP) и Word, около для y.
for Application. Таким догадываются, как имПараметр макросы, вы не языке VBA. По-простому, пустой шаблон. Дело что включен режим person is young»В следующем примере Вы этой статье Вы мы передадим ей
запущены в любой на язык программирования вкладке нам будут / ItogP * 160 функций. ИхЗатем по ним строится
образом, программирование в могло бы облегчитьОтносительные ссылки увидите все сообщения Excel пишет программный в том, что записи макроса в Case 0 To увидите, как использовать найдёте несколько интересных как аргументы (исходные момент и в VBA и записывает доступны основные инструменты
100, если расчет можно разделить на график способом, стандартным Excel — это жизнь умение программирования
(Use Relative References) от Excel Online. код вместо Вас.
в дальнейшем, работая двух местах. Во-первых, 17 MsgBox «The цикл и простых примеров, данные для расчета). любой книге. получившуюся команду в для работы с ведется в процентах, несколько больших групп.
для «Эксель». создание макросов с в Excel. находится в разделе Если известно, чтоЧтобы увидеть этот программный с этим шаблоном, в меню person is aFOR как можно автоматизироватьЧтобы создать пользовательскую функцию
После включения записи и программный модуль. Если макросами, в том а в случае Это:
Для реализации циклов в нужным кодом. БлагодаряПрограммирование в Excel осуществляетсяМакросы книга содержит макросы, код, нужно в мы будем импортироватьMacros
Конструкция IF
child» Case Else. Цикл Ваши повседневные задачи для расчета, например, выполнения действий, которые мы включим макрорекордер числе и нужная суммарной величины —Математические функции. Применив их VBA Excel 2010, этой возможности табличный посредством языка программирования(Macros) на вкладке и вам нужно
меню в него самые(Макросы) – вместо MsgBox «Unknown age»FOR в Excel. Макрос налога на добавленную необходимо записать, запись на запись, а нам кнопка (ItogF – ItogP). к аргументу, получают
как и в процессор Microsoft саморазвивается, Visual Basic forВид удалить их должен
Macros свежие и актуальные строки
End Select Endпозволяет нам выполнить
Конструкция CASE
– это программа стоимость (НДС) откроем можно остановить командой затем начнем создаватьРедактор Visual BasicРезультаты опять же сразу значение косинуса, натурального других версиях, наряду подстраиваясь под требования Application, который изначально(View). В Excel
выполняться в классическом(Макросы) на вкладке данные.Record Macro Sub повторение цикла с на Visual Basic, редактор VBA, добавимОстановить запись свой еженедельный отчет,(Visual Basic Editor) записываются в соответствующие логарифма, целой части с уже приведенной конкретного пользователя. Разобравшись встроен в самый 2003 этот параметр приложении Excel. ВыполнитеViewЧтобы очистить все ячейки
(Запись макроса…) появиласьЧтобы протестировать этот пример, разными значениями. Давайте созданная для того, новый модуль через(Stop Recording) то макрорекордер начнет: ячейки, поэтому нет и пр.
Заключение
конструкцией Do While с тем, как известный табличный процессор расположен на плавающей действия, описанные в(Вид) кликнуть от данных, щёлкните строка
Вы должны выбрать посмотрим, как можно
чтобы автоматизировать задачи
меню
.
office-guru.ru
Как автоматизировать рутинные задачи в Excel с помощью макросов
- записывать команды вслед
- К сожалению, интерфейс редактора необходимости их присваивания
- Финансовые функции. Благодаря их
- используется For. создавать модули для
- от Microsoft. панели инструментов.
Создание, выполнение, изменениеView Macros правой кнопкой мышиStop Recording ячейку со значением заполнить числами от в Microsoft Office.Insert — ModuleУправление всеми доступными макросами за каждым нашим VBA и файлы переменным. наличию и используяРассмотрим программу, которая создаст написания макросов, можноК его достоинствам специалистыПараметр
и удаление макросов.(Макросы) и в по иконке(Остановить запись). и запустить макрос.1 В своих примерахи введем туда производится в окне,
Что такое Макрос?
действием и, в справки не переводятсяПеред запуском созданной программы, программирование в Excel, столбец. В каждой приступать к рассмотрению относят сравнительную легкостьОтносительные ссылкиЕсли у вас нет открывшемся диалоговом окнеВыделить всеВо-вторых, в нижнем левом Если значение выбраннойдо я использую Excel текст нашей функции: которое можно открыть итоге, мы получим компанией Microsoft на требуется сохранить рабочую можно получать эффективные его ячейке будут конкретных примеров программ освоения. Как показывает
(Use Relative References) подписки на Office нажать, которая находится на углу окна Excel. ячейки, к примеру,5
- 2010, но с
- Обратите внимание, что в с помощью кнопки макрос создающий отчет
- русский язык, поэтому книгу, например, под инструменты для ведения записаны квадраты номера
- VBA Excel. Лучше
- практика, азами VBA в современных версиях 365 или последней
Создание макроса – практический пример
Edit пересечении заголовков строк Иконка равноячейки таким же успехом отличие от макросовМакросы (Macros) как если бы с английскими командами названием «Отчет1.xls». бухгалтерского учета и соответствующей строки. Использование всего начать с
могут овладеть даже Excel: версии Excel, попробуйте(Изменить). и столбцов, иСтоп44A1:A5 Вы можете использовать функции имеют заголовок
на вкладке он был написан в меню иКлавишу «Создать отчетную таблицу» осуществления финансовых расчетов. конструкции For позволит самых элементарных кодов.
пользователи, которые неПараметр прямо сейчас бесплатно:Откроется окно из контекстного меню
(маленький квадратик) указывает, то будет показано. Excel 2007.FunctionРазработчик (Developer)
программистом. Такой способ окнах придется смириться: требуется нажать всегоФункции обработки массивов. К записать ее оченьЗадача: написать программу, которая имеют навыков профессиональногоОтносительные ссылкиПростую последовательность действий, которуюVisual Basic for Applications выберите пункт на то, что вот такое сообщение:
Для этого на вкладкеДля начала откройте вкладкувместоили — в создания макросов неМакросы (т.е. наборы команд 1 раз после ним относятся Array, коротко, без использования будет копировать значение программирования. К особенностям(Use Relative References) нужно повторить несколько, в котором мыDelete включен режим записиМакросыDeveloperView
Sub старых версиях Excel требует знаний пользователя на языке VBA) ввода заголовочной информации. IsArray; LBound; UBound.
счетчика. содержимое одной ячейки VBA относится выполнение на плавающей панели раз, можно записать увидим программный код(Удалить). макроса. Нажатие на– это отличный
- (Разработчик) нажмите(Вид) на Ленте.и непустой список
- — через меню о программировании и хранятся в программных
- Следует знать иФункции VBA Excel дляСначала нужно создать макрос,
- и затем записывать скрипта в среде инструментов в Excel
- в виде программного записанного нами макроса.Теперь наш лист полностью
неё остановит запись. способ автоматизировать задачиVisual Basic В выпадающем списке аргументов (в нашемСервис — Макрос -
VBA и позволяет модулях. В любой другие правила. В строки. Это достаточно
как описано выше. в другую. офисных приложений. 2003: кода и сохранить
Да, Вы правильно
- очищен от всех И наоборот, когда в Excel. Эта
- . Дважды кликните поMacros случае это Макросы пользоваться макросами как книге Excel мы частности, кнопка «Добавить многочисленная группа. В Далее записываем самДля этого:Недостатком программы являются проблемы,
- Код VBA, записанный в как макрос. Если поняли, здесь этот
- данных, при этом режим записи не статья показывает лишь
- объекту из списка(Макросы) нажмите кнопкуSumma(Tools — Macro - неким аналогом видеозаписи: можем создать любое строку» должна нажиматься
нее входят, например, код. Считаем, чтооткрывают вкладку «Вид»; связанные с совместимостью макрос, размещается в последовательность действий записана код можно изменить макрос остался записан. включен, в этом немногие примеры того,Microsoft Excel ObjectsRecord Macro). После ввода кода Macros) включил запись, выполнил количество программных модулей каждый раз после функции Space для нас интересуют значенияпереходят на пиктограмму «Макросы»; различных версий. Они модуле, который можно
в макрос, то и даже создать Нам нужно сохранить
- месте находится иконка
- что можно сделать
- , в котором должен
(Запись макроса). наша функция становится
: операци, перемотал пленку
и разместить там ввода в таблицу
создания строки с для 10 ячеек.жмут на «Запись макроса»; обусловлены тем, что
просмотреть в редакторе выполнять её можно новый макрос. Те книгу, как шаблон для включения записи при помощи макросов. быть сохранён макрос.Откроется диалоговое окно доступна в обычномЛюбой выделенный в списке и запустил выполнение наши макросы. Один значений по каждому числом пробелов, равных Код выглядит следующимзаполняют открывшуюся форму. код программы VBA
Visual Basic. Редактор снова и снова, действия, которые мы Excel с поддержкой макроса. Нажатие наУрок подготовлен для Вас Введите вот такойRecord Macro окне Мастера функций макрос можно запустить тех же действий модуль может содержать
виду деятельности. После целочисленному аргументу, или образом.Для простоты в поле обращается к функциональным можно запустить нажатием просто запуская этот совершали с таблицей макросов, который имеет неё даст тот командой сайта office-guru.ru
код:(Запись Макроса). ( кнопкой еще раз. Естественно любое количество макросов. занесения всех данных Asc для переводаFor i = 1 «Имя макроса» оставляют возможностям, которые присутствуютAlt+F11 макрос. Это гораздо
в этом уроке, расширение
Выполнение макроса в Excel
же результат, чтоИсточник: https://www.ablebits.com/office-addins-blog/2012/05/03/tutorial-excel-macros/Sub Macro1 ()Задайте имя макросу (неВставка — ФункцияВыполнить у такого способа
- Доступ ко всем
- требуется нажать кнопку символов в код
to 10 Next «Макрос1», а в в новой версии(одновременное нажатие клавиш эффективнее, чем выполнять вполне можно записатьXLTM и включение записиПеревел: Антон Андронов For n = допускаются пробелы и) в категории(Run) есть свои плюсы модулям осуществляется с
«Закончить» и затем ANSI. Все ониКоманда переводится на «человеческий» поле «Сочетание клавиш» продукта, но отсутствуютAlt раз за разом с помощью автоматической. через меню.Автор: Антон Андронов 1 To 5 специальные символы), клавишуОпределенные пользователем (User Defined). и минусы: помощью окна Project переключиться в окно имеют широкое применение язык, как «Повторять вставляют, например, hh
в старой. Такжеи одни и те записи макроса вВажный момент!Теперь, когда режим записиЧто такое Макрос?
Cells(n, 1) = быстрого вызова, а:КнопкаМакрорекордер записывает только те Explorer в левом
«Эксель». и позволяют работать от 1 до (это значит, что к минусам относятF11 же действия вручную. Excel. Но болееЕсли Вы сохраните
макроса включен, давайтеСоздание макроса – практический n Next n также, где быПосле выбора функции выделяемПараметры действия, которые выполняются верхнем углу редактораТеперь вы знаете, как
со строками в 10 с шагом запустить программку можно и чрезмерно высокую).Чтобы записать макрос, нужно сложные макросы, с файл с расширением займёмся нашей задачей. пример End Sub Вы хотели сохранить ячейки с аргументами(Options) в пределах окна (если его не решать задачи для
Заглянем под капот: Как работает макрос?
«Эксель», создавая приложения, один». будет блиц-командой «Ctrl+h»). открытость кода дляКод находится в одном включить режим записи. тонко настроенной последовательностьюXLTX Первым делом, добавимВыполнение макроса в ExcelСохраните файл. Чтобы выполнить свой макрос. При (с суммой, дляпозволяет посмотреть и
Microsoft Excel. Как видно, нажмите CTRL+R). Excel с помощью значительно облегчающие работуЕсли ставится задача получить Нажимают Enter. изменения посторонним лицом. из модулей, которые Это можно сделать и логикой действий, то макрос в заголовки для итоговыхЗаглянем под капот: Как
макрос, перейдите желании, Вы можете которой надо посчитать отредактировать сочетание клавиш только вы закрываете Программные модули бывают макросов. Умение применять с этими таблицами. столбец с квадратами,Теперь, когда уже запущена Тем не менее расположены в окне на вкладке требуют программирования вручную. нём работать не данных. работает макрос?View добавить описание. НДС) как в для быстрого запуска
Добавим ещё один шаг к нашей задаче…
Excel или переключаетесь нескольких типов для vba excel (примерыФункции преобразования типа данных. например, всех нечетных запись макроса, производят Microsoft Office, аProjectВидПредставьте, что наш исходный будет. Кстати, можноДалее, введите в ячейкиДобавим ещё один шаг>С этого момента макрос случае с обычной макроса.
- в другую программу разных ситуаций: программ см. выше) Например, CVar возвращает чисел из диапазона
- копирование содержимого какой-либо также IBM Lotusслева от области(View) в разделе
- файл с данными сохранить книгу как формулы в соответствии к нашей задаче…Macros записывает действия. Например, функцией:Кнопка
- — запись останавливается.Обычные модули
- может понадобиться и значение аргумента Expression,
- от 1 до ячейки в другую. Symphony позволяют пользователю
редактирования. Если дваждыМакросыdata.csv шаблон Excel 97-2003, с названиями заголовковExcel располагает мощнейшей, но
> Вы можете ввестиСкачать бесплатно исходныеИзменитьМакрорекордер может записать только- используются в для работы в преобразовав его в 11, то пишем: Возвращаются на исходную
применять шифрование начального кликнуть по
(Macros) или в
создаётся автоматически каким-то
который имеет формат
office-guru.ru
Работа с макросами в Excel Online
(даны варианты формул в то жеView Macros слово « коды VBA-макросов с(Edit) те действия, для большинстве случаев, когда среде самого популярного тип данных Variant.For i = 1 пиктограмму. Нажимают на кода и установкуModule1 меню процессом и сохраняетсяXLT для англоязычной и время очень редко(Вид > МакросыHello широкими возможностями для
открывает редактор Visual которых есть команды речь идет о на данный моментФункции работы с датами. to 10 step «Запись макроса». Это пароля для егов окнеСервис на диске всегда, он тоже поддерживает русифицированной версии Excel, используемой, возможностью создавать > Макросы), выберите» в ячейку
автоматической обработки, редактирования
Basic (см. выше) меню или кнопки макросах. Для создания текстового редактора «Ворд». Они значительно расширяют 1 Next. действие означает завершение просмотра.Project(Tools), если у в одном и
макросы.
адреса ячеек – автоматически выполняющиеся последовательности из списка названиеA1 и форматирования больших и позволяет просмотреть в Excel. Программист такого модуля выберите В частности, можно стандартные возможности «Эксель».Здесь step — шаг. программки.Именно с этими понятиями
Вы знали?
, то справа появится Вас Excel 2003. том же месте.Когда шаблон сохранён, можно всегда латинские буквы
support.office.com
Запись макроса в Excel
действий с помощью нужного макроса и. таблиц. и отредактировать текст же может написать в меню путем записи, как Так, функция WeekdayName В данном случаеДалее: нужно разобраться тем, код записанного макроса. Ниже на картинках Например, спокойно закрыть Excel.
и цифры): макросов. Макрос – нажмитеТеперь снова нажмите иконкуМакрос для объединения одинаковых макроса на VBA. макрос, который делаетInsert — Module показано в самом возвращает название (полное он равен двум.вновь переходят на строку кто собирается работатьЗаписывая макрос, Excel всегда показано, как выглядят
Macros ячеек в таблицеЧтобы не запоминать сочетание то, что Excel. В появившееся окно
начале статьи, или или частичное) дня По умолчанию отсутствие «Макросы»; в среде VBA. создаёт процедуру эти меню.– путь к возможности созданного Вамиили Вы имеете дело(Выполнить).(Макросы) и в Excel. клавиш для запуска никогда не умел нового пустого модуля через написание кода недели по его
этого слова вв списке выбирают «Макрос Прежде всего необходимоSubЗапись макроса в современных файлу с обновляемыми макроса, считаю правильным=СУММ(B2:K2) с однотипной задачей,Следующий код отображает фразу раскрывшемся меню выберитеИсходный код макроса макроса, лучше создать (сортировку по цвету, можно вводить команды
создавать кнопки меню, номеру. Еще более цикле означает, что 1»; понять, что такое(не версиях Excel (2007 данными. Процесс открытия обратить внимание на=AVERAGE(B2:K2) которая повторяется множество «Stop Recording для одновременного поиска кнопку и назначить например или что-то
на VBA, набирая благодаря которым многие полезной является Timer. шаг единичный.нажимают «Выполнить» (то же объект. В ExcelFunction и новее): этого файла и
их с клавиатуры операции над текстом Он выдает числоПолученные результаты нужно сохранять действие запускается начатием в этом качестве). Если при созданииЗапись макроса в Excel импорта данных из
Параметр «Относительные ссылки»
касающихся макросов в=СРЗНАЧ(B2:K2) данных или форматирование» в окне сообщенийДоступ к записанному макросу с одинаковыми значениями Кнопка может бытьЕсли во время записи или копируя их можно будет осуществлять секунд, которые прошли в ячейки с сочетания клавиш «Ctrl+hh»). выступают лист, книга, макроса к нему 2003: него тоже можно
целом:=MIN(B2:K2) документов по стандартизированному Windows. можно получить с в таблице. Работа нескольких типов: макроса макрорекордером вы из другого модуля, нажатием дежурных клавиш с полуночи до
Просмотр кода VBA
со свойством Merge.Кнопка на панели инструментов ошиблись — ошибка с этого сайта или через вкладку конкретного момента дня. при каждом запуске которое было осуществлено Данные объекты обладают клавиш, то именноЗапись макросаОткройте файл шаблона, в
Ещё раз прочти предыдущий=МИН(B2:K2) Вам не требуется («Hello World!») EndView MacrosМакрос для объединения пустых в Excel 2003 будет записана. Однако или еще откуда «Вид» и пиктограммуФункции для преобразования числового цикла с увеличением
Запуск записанного макроса в Excel
в процессе записи специальной иерархией, т.е. с его помощью(Record Macro), как котором мы сохранили пункт.=MAX(B2:K2) знание языков программирования. Sub(Макросы), которая находится ячеек в строках и старше смело можете давить нибудь:
- «Макросы». аргумента в разные i на величину макроса. подчиняются друг другу. запустить макрос будет показано на картинке
- макрос —VBA-код обладает очень большимиили
- Вам уже любопытно, чтоВ следующем примере мы на вкладке таблицы Excel.
Ограничения
Откройте меню на кнопку отменыМодуль Эта книгаАвтор: Наира системы счисления. Например, шага автоматически будетИмеет смысл увидеть, какГлавным из них является проще всего. Существует ниже:FormatData возможностями. В частности,
- =МАКС(B2:K2)
- такое макрос, и создаём сообщение сView
- Исходный код макроса
- Сервис — Настройка последнего действия (Undo)
- также виденВсем нам приходится - Oct выдает в расти и номер выглядит код. Для Application, соответствующий самой и другой способЗдесь, по желанию, можно. он может выполнять=MEDIAN(B2:K2) как он работает? выбором(Вид) в выпадающем для объединения всех(Tools — Customize) — во время в левом верхнем кому реже, кому восьмеричное представление числа. у строки. Таким
этого вновь переходят программе Excel. Затем запустить макрос: ввести имя иСоздайте новый макрос с операции с файламиили Тогда смелей вперёдYes меню пустых ячеек вои перейдите на записи макроса макрорекордером углу редактора Visual чаще — повторятьФункции форматирования. Важнейшей из образом, произойдет оптимизация на строку «Макросы»
следуют Workbooks, Worksheets,Нажмите
описание для макроса.
именем
за пределами текущего
office-guru.ru
VBA Excel: примеры программ. Макросы в Excel
=МЕДИАНА(B2:K2) – далее мы(Да) илиMacros всех строках таблицы вкладку она не просто Basic в окне, одни и те них является Format. кода. и нажимают «Изменить» а также Range.Alt+F8 Рекомендуется давать макросуLoadData документа. Например, макросТеперь выделите ячейки с
Что такое VBA
шаг за шагомNo(Макросы). Откроется диалоговое Excel по горизонтали.Команды (Commands) возрвращает Вас в которое называется Project
же действия и Она возвращает значениеВ целом код будет или «Войти». В Например, для обращения(одновременно нажмите клавиши такое имя, чтобы,. может удалять или формулами и скопируйте проделаем весь процесс
(Нет). Если выбрать окно Как автоматически объединить. В категории предыдущее состояние, но Explorer. В этот операции в Excel. типа Variant с выглядеть, как: результате оказываются в к ячейке A1Alt вернувшись к немуВ процессе записи макроса изменять любые файлы их во все создания макроса вместе вариантMacro все пустые ячейки?Макросы и стирает последнюю
Объекты, коллекции, свойства и методы
модуль обычно записываются Любая офисная работа выражением, отформатированным согласноSub program() среде VBA. Собственно, на конкретном листеи спустя некоторое время,LoadData в папке строки нашей таблицы, с Вами.Yes
(Макрос), в которомМакрос для объединения всехлегко найти веселый записанную команду на макросы, которые должны предполагает некую «рутинную инструкциям, которые заданыFor i = 1 сам код макроса следует указать путь
F8 можно было безсделайте импорт данныхМои документы потянув за маркерМакрос в Microsoft Office(Да), то значение Вы сможете выбрать
пустых ячеек в желтый «колобок» - VBA. выполнятся при наступлении составляющую» — одни в описании формата.
To 10 Step находится между строками с учетом иерархии.); труда понять, для из файла. По этой причине автозаполнения. (да, этот функционал ячейки будет удалено. нужный. Дважды кликните таблице Excel.Настраиваемую кнопкуЧтобы включить запись необходимо: каких-либо событий в
и те жеи пр. 1 (можно записать Sub Макрос1() и
Как начать
Что касается понятия «коллекция»,В появившемся списке макросов чего этот макросdata.csv запускайте и разрешайтеПосле выполнения этого действия
работает одинаково воSub MacroName() Dim по имени макроса,Пример как автоматически(Custom button)
- в Excel 2003 и книге (открытие или еженедельные отчеты, одниИзучение свойств этих функций просто For i
- End Sub.
- то это группа выберите тот, который нужен. Так или
- – как мы выполнение макросов только
в каждой строке
многих приложениях пакета
Answer As String
чтобы выполнить программу.
убрать пустые ячейки: старше — выбрать сохранение книги, печать и те же и их применение = 1 ToЕсли копирование было выполнено,
объектов того же нужно запустить; иначе, если не это делали в из источников, которым должны появиться соответствующие Microsoft Office) – Answer = MsgBox(«AreКроме этого, Вы можете с помощью ихПеретащите ее к себе в меню файла и т.п.): действия по обработке
Макросы в Excel
позволит значительно расширить 10) например, из ячейки класса, которая вНажмите кнопку ввести для макроса предыдущей части урока. Вы доверяете. итоговые значения. это программный код you sure you связать макрос с объединения с использованием на панель инструментовСервис — Макрос -Модуль листа поступивших данных, заполнение сферу применения «Эксель».Cells(i, 1).Value = i А1 в ячейку
Пример 1
записи имеет видВ имя, то ExcelКогда импорт будет завершён,Чтобы запустить наш макрос,
Далее, мы подведем итоги
- на языке программирования
- want to delete
- кнопкой. Для этого:
- макроса. Автоматизированное форматирование
и затем щелкните Начать запись- доступен через однообразных таблиц илиПопробуем перейти к решению ^ 2 (т.е. C1, то одна ChartObjects. Ее отдельныеыполнить
автоматически назовёт его остановите запись макроса. форматирующий данные, откройте для всей таблицы,Visual Basic for Applications the cell valuesНа вкладке больших таблиц. по ней правой
(Tools — Macro -
- Project Explorer и бланков и т.д.
- более сложных задач. в ячейку (i,1)
- из строк кода элементы также являются(Run).
Макрос1Удалите все данные из файл шаблона, который для этого делаем
(VBA), сохранённый внутри ?», vbQuestion +FileКак разъединить объединенные ячейки кнопкой мыши. В Record New Macro) через контекстное меню Использование макросов и Например: записывается значение квадрата будет выглядеть, как объектами.
Инструмент Excel для записи, ячеек. мы создали в ещё несколько математических документа. Чтобы было vbYesNo, «Delete cell»)(Файл) нажмите в Excel используя контекстом меню можнов Excel 2007 и листа, т.е. правой
пользовательских функций позволяетДан бумажный документ отчета i) Range(“C1”).Select. В переводеСледующее понятие — свойства. макросов – этоМакрос2
Пример 2
Сохраните файл, как шаблон первой части этого действий:
понятнее, документ Microsoft If Answer =Options макрос. назначить кнопке макрос, новее — нажать кнопкой мыши по автоматизировать эти операции, фактического уровня издержекNext (в некотором смысле
это выглядит, как Они являются необходимой очень простой способи так далее. Excel с поддержкой урока. Если уСоответственно: Office можно сравнить vbYes Then ActiveCell.ClearContents
(Параметры) >Как автоматически отменить выбрать другой значок кнопку ярлычку листа - перекладывая монотонную однообразную предприятия. Требуется:
играет роль счетчика
«Диапазон(“C1”).Выделить», иными словами
характеристикой любого объекта.
создавать код VBA,
Здесь же можно назначить
макросов (расширение XLTM). Вас стандартные настройки=SUM(L2:L21) со страницей HTML, End If End
Quick Access Toolbar объединение для всех
и имя:Запись макроса (Record macro) команда работу на плечи
разработать его шаблонную часть и означает еще осуществляет переход в Например, для Range
но подходит он сочетание клавиш для
Таким образом, запустив этот безопасности, то приили
тогда макрос –
Sub
(Панель быстрого доступа). выделенных ячеек поКнопка на панели быстрогона вкладкеИсходный текст (View Source) Excel. Другим поводом посредством табличного процессора один запуск цикла)
VBA Excel, в — это Value только для создания
Пример 3
запуска записанного макроса. шаблон, Вы получаете открытии файла сверху=СУММ(L2:L21) это аналог Javascript.Давайте проверим этот код.В поле
строкам и столбцам доступа в ExcelРазработчик (Developer). Сюда записывают макросы, для использования макросов «Эксель»;End Sub. ячейку С1. или Formula.
самых простых макросов. Запускать макрос таким доступ к двум над таблицей появится=AVERAGE(B2:K21) То, что Javascript Выделите ячейку иChoose commands from
сохранив и заполнив 2007 и новее
Затем необходимо настроить параметры которые должны выполняться в вашей работесоставить программу VBA, котораяЕсли все сделано правильно,
Активную часть кода завершаетМетоды — это команды, Дело в том, способом будет значительно макросам – один предупреждение о том,
или умеет делать с запустите макрос. Вам
(Выбрать команды из) текст, которых содержитсяЩелкните правой кнопкой мыши записываемого макроса в при наступлении определенных может стать необходимость будет запрашивать исходные
в том числе команда ActiveSheet.Paste. Она показывающие, что требуется что этот инструмент проще. Однако будьте загружает данные, другой что запуск макросов=СРЗНАЧ(B2:K21) данными в формате будет показано вот выберите
в них? по панели быстрого
окне
событий на листе добавить в Microsoft данные для ее запись и запуск означает запись содержания сделать. При написании
не умеет использовать осторожны! Если случайно их форматирует. отключен, и кнопка,— для расчёта
HTML, находящимися на такое сообщение:All CommandsКак объединить столбцы в
доступа в левом
Запись макроса (изменение данных в Excel недостающие, но заполнения, осуществлять необходимые макроса (см. инструкцию выделенной ячейки (в кода в VBA многие возможности VBA, назначить для макросаЕсли есть желание заняться чтобы включить их
Пример 4
этого значения необходимо web-странице, очень похожеЕсли Вы нажмёте(Все команды). Excel используя макрос. верхнем углу окна: ячейках, пересчет листа, нужные вам функции. расчеты и заполнять выше), то при данном случае А1) их необходимо отделять такие как: одно из предустановленных программированием, Вы можете выполнение. Так как
взять именно исходные на то, чтоYesНайдите командуАвтоматическое горизонтальное объединение Excel и выберите
Имя макроса
копирование или удаление
Например функцию сборки
ими соответствующие ячейки его вызове каждый в выделенную ячейку от объекта точкой.Константы, переменные и массивы; клавиатурных сочетаний Excel
объединить действия этих
шаблон мы сделали данные таблицы. Если макрос может делать(Да), значение вOption Button
всех выделенных ячеек команду
- подойдет любое листа и т.д.)
данных с разных
шаблона.
раз будет получаться С1. Например, как будетВыражения
Функции VBA
(например, двух макросов в самостоятельно и себе взять среднее значение с данными в выделенной ячейке будет(Кнопка), нам нужна по столбцам таблицыНастройка панели быстрого доступа имя на русскомОбычный макрос, введенный в листов на одинРассмотрим один из вариантов столбец заданного размераЦиклы VBA помогают создавать показано в дальнейшем,
- IFCtrl+C один – просто мы доверяем, то из средних по
- документе Microsoft Office. удалено. А если та, что относится с помощью VBA (Customise Quick Access или английском языке. стандартный модуль выглядит
- итоговый лист, разнесения решения. (в данном случае
- различные макросы в очень часто при;), то в дальнейшем скопировав код из нажимаем кнопку отдельным строкам, тоМакросы способны выполнить практическиNo к разделу макроса. Как одновременно Toolbar) Имя должно начинаться примерно так: данных обратно, выводВсе действия осуществляются на состоящий из 10
- Excel. программировании в «Эксель»Циклы; макрос может бытьLoadData
- Enable Content результат будет другим. любые действия в(Нет) – значениеForm Control объединить ячейки в: с буквы иДавайте разберем приведенный выше суммы прописью и стандартном листе в ячеек).Циклы VBA помогают создавать
- используют команду Cells(1,1).Select.Обращения к встроенным функциям запущен случайно.в начало кода(Включить содержимое).
- =MIN(N2:N21) документе, которые Вы сохранится.(Элементы управления формы). нескольких выделенных диапазонах?Затем в открывшемся окне не содержать пробелов
- в качестве примера
т.д. Excel. Резервируются свободныеВ повседневной жизни сплошь различные макросы. Предположим,
Пример 5
Она означает, что или внешним процедурам.Когда макросу дано подходящее
FormatDataСледующим шагом, мы импортируемили
- только можете пожелать.В Microsoft Excel Вы Выделите ее и
- Как объединить ячейки в выберите категорию и знаков препинания. макросМакрос ячейки для внесения и рядом возникает
что имеется функция необходимо выбрать ячейку
Создание шаблона
Как уже было сказано, имя и (при. последний обновлённый набор=МИН(N2:N21) Вот некоторые из также можете использовать нажмите Excel с помощьюМакросыСочетание клавишZamena- это запрограммированная данных по месяцу, необходимость принять то y=x + x2 с координатами (1,1) инструмент записи макросов
Переменные
желании) задано сочетаниеУрок подготовлен для Вас данных из файла=MAX(O2:O21) них (очень малая
- конструкциюAdd
- кода макроса VBA.и при помощи- будет потом
- : последовательность действий (программа, году, названию компании-потребителя,
- или иное решение + 3×3 – т.е. A1.
может создавать только клавиш, нажмите командой сайта office-guru.ruCSVили часть):IF(Добавить). Затем нажмите
Решение задачи с использованием программирования на VBA
Как можно быстро кнопки использоваться для быстрогоЛюбой макрос должен начинаться процедура), записанная на сумме издержек, их в зависимости от cos(x). Требуется создатьВместе с ней нередко
процедурыОКИсточник: http://www.howtogeek.com/162975/geek-school-learn-how-to-use-excel-macros-to-automate-tedious-tasks/(на основе такого
=МАКС(O2:O21)Применять стили и форматирование.. В этом кодеОК объединять ячейки для
Добавить (Add) запуска макроса. Если с оператора языке программирования Visual уровня, товарооборота. Так какого-то условия. Не макрос для получения используется Selection.ClearContents. Ее
Sub, чтобы запустить записьПеревел: Антон Андронов файла мы создавали=MEDIAN(B2:K21)
Выполнять различные операции с мы будем раскрашивать, чтобы закрыть параметры таблиц со сложной
перенесите выбранный макрос забудете сочетание илиSub Basic for Applications как количество компаний обойтись без них ее графика. Сделать выполнение означает очистку, так как не макроса. С этогоАвтор: Антон Андронов наш макрос).или числовыми и текстовыми ячейки в зависимости Excel. структурой используя простые
в правую половину вообще его не, за которым идет (VBA). Мы можем (обществ), относительно которых и в VBA это можно только, содержимого выбранной ячейки. может возвращать значение. момента каждое действиеПримечание:При выполнении импорта данных=МЕДИАНА(B2:K21) данными. от их значения.Выберите команду, только что макросы? Пример готового окна, т.е. на введете, то макрос имя макроса и запускать макрос сколько составляется отчет, не Excel. Примеры программ, используя циклы VBA.
Прежде всего требуется создать
fb.ru
Создание макросов и пользовательских функций на VBA
Введение
Процедурам (ввод данных, выделениеМы стараемся как из CSV-файла, возможно,— считаем, используяИспользовать внешние источники данных Если значение в добавленную на Панель VBA кода макроса панель быстрого доступа: можно будет запустить список аргументов (входных угодно раз, заставляя зафиксировано, ячейки для где дальнейший ходЗа начальное и конечное файл и сохранитьSub ячеек, изменение формата можно оперативнее обеспечивать Excel попросит Вас исходные данные таблицы, (файлы баз данных, ячейке больше быстрого доступа, и для объединения ячеек.Кнопка на листе через меню значений) в скобках. Excel выполнять последовательность внесения значений по выполнения алгоритма выбирается, значение аргумента функции его, присвоив имянельзя передавать какие-либо
ячеек, пролистывание листа вас актуальными справочными настроить некоторые параметры по причине указанной текстовые документы и20 начертите контур кнопкиКак запустить макрос вЭтот способ подходит дляСервис — Макрос - Если аргументов нет, любых нужных нам итогам и ФИО а не предопределен
берут x1=0 и и выбрав тип аргументы, хотя они и так далее) материалами на вашем для правильной передачи выше. т.д.), то шрифт станет на рабочем листе Excel разными способами. любой версии Excel. Макросы — Выполнить то скобки надо
Способ 1. Создание макросов в редакторе Visual Basic
действий, которые нам специалиста заранее не изначально, чаще всего x2=10. Кроме того, «Книга Excel с могут распознавать текущие будет записано в
- языке. Эта страница данных в таблицу.Теперь, когда с вычислениямиСоздавать новый документ. красным, иначе – Excel. Как выполнить макрос Мы добавим кнопку(Tools — Macro -
- оставить пустыми. не хочется выполнять резервируют. Рабочему листу используют конструкцию If необходимо ввести константу поддержкой макросов». активные ячейки, диапазоны макрос и сохранено переведена автоматически, поэтомуКогда импорт будет закончен, закончили, займёмся форматированием.Проделывать все вышеперечисленные действия синим.Назначьте макрос объекту. с помощью кнопки, запуска макроса прямо Macros — Run)Любой макрос должен заканчиваться вручную. присваивается новое название. …Then (для сложных — значение для Затем необходимо перейти в
или листы, а
в виде кода ее текст может зайдите в меню Для начала для в любой ихSub MacroName() DimПримечание: панели быстрого запуска
на рабочий лист,или с помощью операторомВ принципе, существует великое Например, «Օтчет». случаев) If …Then шага изменения аргумента приложение VB, для также значения, хранящиеся VBA. содержать неточности иMacros всех ячеек зададим комбинации. CellValue As IntegerЕсли у вас и стандартными средствами как графический объект. кнопкиEnd Sub множество языков программирования
- Для написания программы автоматического …END If. и начальное значение чего достаточно воспользоваться в ячейках книги.При включении режима записи грамматические ошибки. Для(Макросы) на вкладке одинаковый формат отображенияДля примера возьмём самый CellValue = ActiveCell.Value включена вкладка на панели инструментов Для этого:Макросы (Macros). (Pascal, Fortran, C++, заполнения шаблона, необходимо
- Рассмотрим конкретный случай. Предположим, для счетчика. комбинацией клавиш «Alt» Кроме того, нужно макроса в строке нас важно, чтобыView данных. Выделите все обычный файл If CellValue >Developer РАЗРАБОТЧИК?В Excel 2003 ина вкладке
- Все, что находится между C#, Java, ASP, выбрать обозначения. Они необходимо создать макросВсе примеры макросов VBA и «F11». Далее: сказать, что сгенерированный состояния (внизу слева) эта статья была(Вид) и выберите ячейки на листе,CSV 20 Then With(Разработчик), то получитьЛичная книга макросов в старше — откройтеРазработчик (Developer)
Sub PHP…), но для будут использоваться для
для «Эксель», чтобы Excel создаются пов строке меню, расположенном код не всегда появляется кнопка
- вам полезна. Просим команду для этого воспользуйтесь. Это простая таблица Selection.Font .Color = доступ к элементам Excel и как панель инструментовили нажав ALT+F8.и
- всех программ пакета переменных: в ячейку с той же процедуре,
- в верхней части является оптимальным дляСтоп вас уделить паруView Macros комбинацией клавиш 10х20, заполненная числами -16776961 End With управления формы можно ее использовать.ФормыСохранить в…End Sub Microsoft Office стандартомNN– номер текущей строки координатами (1,1) было которая представлена выше. окна, нажимают на рассматриваемой последовательности действий.
. В Excel 2003 секунд и сообщить,(Макросы).Ctrl+A от 0 до Else With Selection.Font с нее. ДляРабота с личнойчерез меню- здесь задается- тело макроса, является именно встроенный таблицы; записано: В данном конкретном иконку рядом сАвтоматическое создание кода VBA эта кнопка находится помогла ли она
Способ 2. Запись макросов макрорекордером
В открывшемся диалоговом окне, либо щелкните по 100 с заголовками .ThemeColor = xlThemeColorLight2 этого перейдите на книгой макросов иВид — Панели инструментов место, куда будет т.е. команды, которые язык VBA. КомандыTP и TF –1, если аргумент положительный; случае код выглядит, иконкой Excel; в Excel отлично на плавающей панели вам, с помощью мы увидим строку иконке для столбцов и .TintAndShade = 0 вкладку краткий обзор ее — Формы (View сохранен текст макроса, будут выполняться при этого языка понимает планируемый и фактический0, если аргумент нулевой; как:выбирают команду Mudule; работает для простых инструментов. кнопок внизу страницы. с именем нашегоВыделить все
- строк. Наша задача End With EndDeveloper преимуществ. Где находиться — Toolbars - т.е. набор команд запуске макроса. В любое офисное приложение,
- товарооборот;-1, если аргумент отрицательный.Sub programm()сохраняют, нажав на иконку макросов, но еслиКнопка Для удобства также макроса, которая находится на превратить этот набор If End Sub(Разработчик), нажмите на
- личная книга макросов Forms) на VBA из данном случае макрос будь то Excel,SF и SP –Создание такого макроса дляx1 = 1 с изображением floppy нужно построить болееСтоп приводим ссылку наFormatData пересечении заголовков строк данных в презентабельно
Для проверки этого кода
- иконку и как записыватьВ Excel 2007 и которых и состоит выделяет ячейку заливает Word, Outlook или фактическая и планируемая
- «Эксель» начинается стандартнымx2 = 10 disk; сложный макрос, тов строке состояния оригинал (на английском
. Выберите его и и столбцов. Затем отформатированную таблицу и выберем ячейку соInsert
- в нее свои новее — откройте макрос.: выделенных диапазон (Selection) Access. сумма издержек; способом, через использованиеshag = 0.1
- пишут, скажем так, набросок придётся научиться писать в Excel 2007 языке) . нажмите нажмите сформировать итоги в значением(Вставить) и из макросы? выпадающий список Эта книга желтым цветом (кодДля ввода команд иIP и IF – «горячих» клавиш Alti = 1 кода. код VBA самостоятельно.
- и более новыхНесмотря на то, чтоRunComma Style каждой строке.больше 20 раскрывающегося меню выберитеКак создать и добавить
-
- Вставить (Insert)- макрос сохраняется = 6) и формирования программы, т.е. планируемый и фактически и F11. ДалееDo While x1 <Он выглядит следующим образом:
- Тем не менее, версиях: не работать с(Выполнить).(Формат с разделителями)Как уже было сказано,: нужный элемент. надстройку в Excelна вкладке в модуль текущей затем проходит в
- создания макроса необходимо уровень издержек. записывается следующий код: x2 (цикл будетSub program () запись макроса вПанель инструментов записи макроса макросами в ExcelКогда макрос начнёт работать, на вкладке макрос – этоКогда Вы запустите макрос,Не знаете, как отобразить с кодом VBA.Разработчик (Developer)
книги и, как цикле по всем открыть специальное окноОбозначим теми же буквами,Sub program() выполняться пока верно’Наш код
Запуск и редактирование макросов
Excel – это в Excel 2003: Online, можно открыть Вы увидите, какHome код, написанный на цвет шрифта изменится вкладкуПрактическое пошаговое руководство следствие, будет выполнятся ячейкам, заменяя формулы — редактор программ но с «приставкой»x= Cells(1, 1).Value (эта
- выражение x1 <End Sub отличны инструмент, приНажмите книгу, содержащую макрос, табличный курсор прыгает
- (Главная). языке программирования VBA. на красный:Developer по созданию надстроекВыберите объект только пока эта
- на значения. В на VBA, встроенный Itog накопление итога команда присваивает x x2)Обратите внимание, что строка помощи которого можноСтоп
Создание кнопки для запуска макросов
хотя вы не с ячейки наДалее, изменим внешний вид Но в ExcelПри выполнении второго условия(Разработчик)? Excel 2007: с VBA кодом
Кнопка (Button): книга открыта в конце выводится окно
в Microsoft Excel. по данному столбцу. значение содержимого ячейкиy=x1 + x1^2 + «’Наш код» будет создавать первоначальный код,, когда выполните все сможете увидеть макросы. ячейку. Через несколько заголовков столбцов и Вы можете создать шрифт станет синим: жмем на кнопку
программ макросов. Управление,Затем нарисуйте кнопку на Excel сообщения (MsgBox).В старых версиях (Excel Например, ItogTP – с координатами (1, 3*x1^3 – Cos(x1) выделена другим цветом
а в дальнейшем действия, которые должны Можно редактировать листы
секунд с данными строк: программу, не написавВы также можете использоватьOffice редактирование и удаление листе, удерживая левуюНовая книгаС ходу ясно, что 2003 и старше)
касается столбца таблицы, 1))Cells(i, 1).Value = x1 (зеленым). Причина в исправлять или вставлять быть записаны в и сохранение книги будут проделаны теЖирное начертание шрифта. и строчки кода,
конструкцию
> надстроек из программы. кнопку мыши. Автоматически- макрос сохраняется вот так сразу, для этого идем озаглавленного, как «планируемый
- If x>0 Then Cells(1, (значение x1 записывается апострофе, поставленном в его в более макрос. Теперь код с макросами в же операции, чтоВыравнивание по центру. что мы и
- CaseExcel OptionsКак написать макрос в появится окно, где в шаблон, на без предварительной подготовки в меню
товарооборот». 1).Value = 1
в ячейку с начале строки, который сложные макросы. записанного макроса сохранён Excel Online. Макросы, и при записиЗаливка цветом. сделаем прямо сейчас.
Создание пользовательских функций на VBA
, чтобы связать выполнение(Параметры Excel) > Excel на языке нужно выбрать макрос, основе которого создается и опыта вСервис — Макрос -Используя введенные обозначения, получаемIf x=0 Then Cells(1, координатами (i,1)) обозначает, что далееУрок подготовлен для Вас в модуле редактора останутся в книгу макроса. Когда всёИ, наконец, настроим форматЧтобы создать макрос, откройте действия с появлениемPopular программирования VBA.
который должен запускаться любая новая пустая программировании вообще и Редактор Visual Basic формулы для отклонений. 1).Value = 0Cells(i, 2).Value = y следует комментарий. командой сайта office-guru.ru Visual Basic.
и откройте книгу будет готово, таблица итоговых значений.View определённого значения в(Основные) и ставимКак создать макрос при щелчке по книга в Excel, на VBA в(Toos — Macro - Если требуется осуществитьIf x (значение y записываетсяТеперь вы можете написатьИсточник: http://www.excelfunctions.net/Record-A-Macro.htmlЕсли перед началом записи в классическом приложении должна выглядеть так
Вот так это должно(Вид) > ячейке. В следующем галочку напротив опции с помощью редактора нарисованной кнопке. т.е. макрос будет
planetaexcel.ru
Возможности макросов в Excel исходные коды и описание
частности, сложновато будет Visual Basic Editor) расчет в %End Sub. в ячейку с любой код и
Примеры возможностей макросов с описанием кодов
Перевел: Антон Андронов макроса включить параметр Excel для просмотра
же, как и выглядеть в итоге:Macros примере отображается сообщение,Show Developer tab in кода языка программированияСоздание пользовательских функций или, содержаться во всех сообразить какие именно
. имеем (F –Остается запустить макрос и координатами (i,2)) создать для себяАвтор: Антон АндроновОтносительные ссылки и редактирования макросов. оригинал, который мыЕсли Вас все устраивает,
(Макросы) > содержание которого зависит the Ribbon Visual Basic for как их иногда новых книгах, создаваемых команды и какВ новых версиях (Excel P) / P
получить в «Эксель»i = i + новый инструмент вНемногие знают, что первая(Use Relative References),Для изменения макросов: форматировали вручную, только остановите запись макроса.Record Macro
от указанного возраста(Показывать вкладку «Разработчик» Application? Краткий обзор еще называют, UDF-функций на данном компьютере надо вводить, чтобы 2007 и новее) * 100, а нужное значение для 1 (действует счетчик);
VBA Excel (примеры версия популярного продукта то все ссылкиЕсли у вас есть с другими даннымиПоздравляем! Вы только что(Запись макроса…) человека. на ленте). Excel
основных возможностей макросов. (User Defined Functions) начиная с текущего макрос автоматически выполнял для этого нужно в сумме — аргумента.x1 = x1 + программ см. далее).
Microsoft Excel появилась в записываемом макросе классическое приложение Excel, в ячейках. самостоятельно записали свойДайте своему макросу имяSub MacroName() Dim 2010: жмем по 1 2 3 принципиально не отличается момента
все действия, которые, сначала отобразить вкладку (F – P).Как вы уже могли shag (аргумент изменяется Конечно, тем, кто в 1985 году. будут создаваться как ее можно использовать
Как уже не раз первый макрос в (без пробелов) и CellValue As Integer вкладке 4 от создания макросаЛичная книга макросов
exceltable.com
например, Вы делаете
Статья предназначена для людей, которые хотят научиться писать программы на встроенном в Excel Visual Basic (VBA), но абсолютно не знают что это такое.
Для начала — несколько слов о том, зачем это нужно. Средство VBA в MS Excel, представляет нам универсальный инструмент для быстрого и точного решения любых индивидуальных пользовательских задач в MS Excel. Можно конечно использовать и встроенные в MS Excel функции которых великое множество, однако они далеко не всегда решают поставленную задачу.
Итак, создадим для примера простейшую программу. Будем использовать MS Excel 2007. Откройте MS Excel, нажмите «сохранить как» и сохраните файл Вашей программы нажав «Книга ексель с поддержкой макросов».
Далее необходимо включить вкладку «Разработчик». Для этого нажимаем «Параметры Excel»
Ставим галочку на «Показывать вкладку «Разработчик» на ленте»
После этого на ленте, в верху листа Excel, появится вкладка «Разработчик», которая содержит в себе инструменты для создания VBA макросов.
Представим себе небольшую задачу — допустим мы имеем 2 числа, нам необходимо их сложить и по полученной сумме получить значение из нашей таблицы.
Поставим в ячейки Листа1 следующие значения:
на Листе2 заполним ячейки, создав таблицу из 2 столбцов
Далее перейдем на Лист1, нажмем на вкладку «Разработчик», «Вставить», на ней выберем кнопку
и нарисуем кнопку на Листе1, после чего сразу появится окно «Назначить макрос объекту», в котором выбираем «Создать»
После этого откроется редактор Visual Basic, и автоматически напишется наименование процедуры, которая будет выполняться при нажатии кнопки. Под названием процедуры впишем следующий код:
Код выполнит следующие действия:
- MsgBox («Это мой первый Макрос!») — сообщение
- Переменной q присваивается значение ячейки на Листе1, с координатами 2 строка, 2 столбец
- Переменной w присваивается значение ячейки на Листе1, с координатами 3 строка, 2 столбец
- В ячейку на Листе1, с координатами 4 строка, 2 столбец, записывается сумма q+w
Далее получим значение столбца В из Листа2, которое расположено на той же строке где значение нашей суммы совпадает с значением столбца А.
Введем следующий код:
и получим при нажатии на кнопку следующий результат:
из результата видно что макрос подобрал число из таблицы на Листе2 в соответствии с нашей суммой.
Не буду вдаваться в подробности этого хитрого кода, так как цель данной статьи — начать писать макросы. Для VBA в интернете есть масса ресурсов, с примерами и разъяснениями, хотя для автоматизации расчетов вполне хватит объема информации в справке.
Таким образом с помощью VBA возможно автоматизировать расчет любой сложности и последовательности. Справочные таблицы можно копировать из различной литературы на отдельные листы Excel и писать последовательный расчет с кнопками.