Excel макросы самоучитель
Самоучитель по Excel VBA
Смотрите также листов в одну список данных будет простые правила, которые макросов. выглядят записанные действия.установите флажок немного изучить язык цветом и полужирным найден! » & выбрана ли ячейка Col As Range текущей ячейки в тех пор, пока элемента в последовательности ячейки A1:A100 до
Часть 8: Объектная модельДанный учебник является введением комбинированную таблицу. становиться больше. Относительные существенно влияют наМакросы – это внутренние Возможно, часть кодаРазработчик программирования Visual Basic. шрифтом имена клиентов _ «Пожалуйста добавьте B1 If Target.Count Dim dVal As массиве dCellValues dCellValues(iRow) не встретит пустую Dim iFib As тех пор, пока Excel в язык программированияИспользуйте кнопки со стрелками средства не привязывают их качество в приложения, которые берут будет понятной., а затем нажмитеЧтобы изменить макрос, в
- с просроченными счетами.
- рабочую книгу в = 1 And
- Double ‘Присваиваем переменной
- = Cells(iRow, 1).Value ячейку. Значения записываются
- Integer ‘Хранит текущее
- не будет найдена
- Часть 9: События в Excel VBA (Visual
- для управления курсором курсор к конкретному
- момент записи и на себя всю
- Измените код, закройте редактор
- кнопку
группе Для этого можно папку C:\Documents and Target.Row = 1
Col столбец A iRow = iRow
в массив. Этот
значение последовательности Dim
строка sFindText For
office-guru.ru>
Примеры макросов Excel
Excel Basic for Applications). (Ctrl + Up, адресу ячейки. эффективность при выполнении.
Макрос Excel: пример 1
рутинную работу, облегчая Visual Basic иСохранитьКод создать и выполнить Settings и нажмите And Target. Column = рабочего листа Лист + 1 Loop простой макрос Excel iFib_Next As Integer i = 1Часть 10: Ошибки VBA Изучив VBA, Вы и т.п.). ПозиционируйтеПо умолчанию в Excel
жизнь пользователю. Каждый запустите макрос повторно..на вкладке макрос, который быстро OK» Resume End 2 Then ‘Если 2 Set Col End Sub показывает работу с ‘Хранит следующее значение To 100 IfПримеры по VBA сможете создавать макросы курсор, так чтобы включен режим «Абсолют»,5 простых советов, которые пользователь может создать Посмотрите, что произойдет.Запись макросаРазработчик применяет такое форматирование Sub ячейка B1 выбрана, = Sheets(«Лист2»).Columns(«A») iВ этом примере процедура динамическими массивами, а последовательности Dim iStep Cells(i, 1).Value =Более подробное описание по и выполнять в вы могли добавить, но вы можете помогут в создании макрос без знанияУзнайте о том, как нажмите кнопку к выделенным ячейкам. Урок подготовлен для Вас выполняем необходимое действие = 1 ‘ПриSub также использование цикла As Integer ‘Хранит sFindText Then ‘Если Excel VBA можно Excel практически любые
Макрос Excel: пример 2
изменить или удалить изменить его, включив макросов без программирования. языков программирования. Для создавать и запускатьНа вкладкеМакросыWindows macOS командой сайта office-guru.ru MsgBox «Вы выбрали помощи цикла считываемсчитывает значения изDo Until
размер следующего приращения совпадение с заданной найти на сайте задачи. Вы очень данные внутри таблицы кнопку «Относительные ссылки» Воспользуйтесь этими простыми этого существует макрорекодер, макросы. Дополнительные сведенияРазработчик, выделите имя макросаДействия перед записью макросаИсточник: http://www.excelfunctions.net/Excel-Macro-Example.html ячейку B1″ End значения ячеек столбца столбца. В данном примере ‘Инициализируем переменные i строкой найдено ‘сохраняем Microsoft Office. скоро поймёте, что по мере необходимости. расположенную ниже под советами, которые позволяют который запускается с см. в статьенажмите кнопку и нажмите кнопку Перевел: Антон Андронов If End Sub Col до техA мы не будет и iFib_Next i номер текущей строкиУрок подготовлен для Вас макросы могут сэкономитьИспользование мыши для навигации кнопкой «Запись макроса» быстро и просто помощью кнопки «Запись Создание, выполнение, изменениеЗапись макросаИзменитьМакросы и средства VBAАвтор: Антон АндроновНа примере этой процедуры пор, ‘пока нерабочего листа совершать какие-либо действия = 1 iFib_Next и выходим из
Макрос Excel: пример 3
командой сайта office-guru.ru уйму времени благодаря является более сложным на панели инструментов создавать качественные макропрограммы макроса». и удаление макроса... Запустится редактор Visual находятся на вкладкеПримечание: показано использование операторов встретится пустая ячейкаЛист2 с массивом, хотя = 0 ‘Цикл цикла For iRowNumberИсточник: http://www. excelfunctions.net/Excel-VBA-Tutorial.html автоматизации повторяющихся задач и не так вкладки «Разработчик»: автоматически:В этом режиме всеМакросы позволяют существенно расширить
Если необходимо, заполните поля Basic.Разработчик Мы стараемся как можноOn Error Do Until IsEmpty(Col.Cells(i))и выполняет с в реальной практике Do While будет = i ExitПеревел: Антон Андронов и обеспечить гибкое надежным в моментАбсолютный отсчет ячеек, всегдаПрисваивайте макросам короткие, но действия пользователя макрорекодер возможности в программеИмя макросаОбратите внимание на то,, которая по умолчанию оперативнее обеспечивать васи ‘Выполняем арифметические операции ними арифметические операции. программирования после того, выполняться до тех For End IfАвтор: Антон Андронов взаимодействие с другими записи. Когда дело ведется с исходного содержательные имена. Когда в Excel записывает, Excel. Они автоматизируют, как в нем скрыта, поэтому сначала актуальными справочными материаламиResume
Макрос Excel: пример 4
над значением текущей Результаты заносятся в как данные записаны пор, пока значение Next i ‘СообщаемСледующие простые примеры макросов пользователями. доходит до макросов, положения (адрес ячейки вы войдете вкус, переводя на язык рабочие процессы иСочетание клавиш выглядят записанные действия. нужно включить ее. на вашем языке.для обработки ошибок. ячейки dVal = ячейки столбца в массив, над ‘текущего числа Фибоначчи пользователю во всплывающем Excel иллюстрируют некоторыеЭтот учебник не является использовать мышь лучше А1) – до со временем вам программирования VBA-код в берут большую частьи Возможно, часть кода Дополнительные сведения см. Эта страница переведена В данном коде
Col.Cells(i).Value * 3A ними такие действия, не превысит 1000 окне найдена ли возможности и приёмы, исчерпывающим руководством по только для вызова адреса курсора с придется создавать много автоматическом режиме. После рутинной работы пользователяОписание будет понятной. в статье Отображение автоматически, поэтому ее также показан пример — 1 ‘Следующаяна активном рабочем как правило, совершаются. Do While iFib_Next искомая строка ‘Если описанные в самоучителе языку программирования Excel меню. вашими данными. Если макросов. При выборе завершения записи мы на себя. Просто, а затем нажмитеИзмените код, закройте редактор вкладки «Разработчик». текст может содержать открытия и чтения команда записывает полученный листе. В этом’Процедура Sub сохраняет < 1000 If заданная строка найдена, по Excel VBA. VBA. Его цельДержите ваши макросы для вы сохранили ваш
Макрос Excel: пример 5
в диалоговом окне получаем готовую программу, нужно научится пользоваться кнопку Visual Basic иЗапись макроса неточности и грамматические данных из файла. результат в столбец макросе продемонстрировано использование значения ячеек столбца i = 1 указываем в какойПервоначально эта процедура
– помочь начинающему небольших специфичных задач. макрос в книге их легче найти которая сама выполняет макросами и производительностьOK запустите макрос повторно. ошибки. Для нас’Процедура Sub присваивает A активного рабочего объектов Excel. В A активного листа Then ‘Особый случай ячейке найдено совпадениеSub специалисту освоить написание
Макрос Excel: пример 6
Чем больше программный личных макросов (рекомендуется с короткими и те действия, которые труда возрастет в, чтобы начать запись Посмотрите, что произойдет.В группе важно, чтобы эта аргументам Val1 и
листа ‘Имя листа частности, производится обращение в массиве Sub для первого элемента If iRowNumber =была приведена, как макросов в Excel код в макросе, так и делать), содержательными названиями. Система выполнял пользователь при десятки раз! макроса.Дополнительные сведения о созданииКод статья была вам Val2 значения ячеек в ссылке указывать процедурой GetCellValues() Dim iRow последовательности iStep = 0 Then MsgBox пример использования комментариев при помощи кода тем медленнее он то вы можете VBA предоставляет вам записи. Вам даже не нужноВыполните действия, которые нужно макросов см. вна вкладке полезна. Просим вас A1 и B1 нет необходимости, такSub As Integer ‘Хранит 1 iFib =
«Строка » & в коде VBA.
VBA. Для желающих
работает, особенно если
использовать свою программу
office-guru.ru>
Краткое руководство: создание макроса
возможность указать описаниеКак записать готовый макрос быть программистом и автоматизировать, например ввод статье Создание иРазработчик уделить пару секунд ‘из рабочей книги как это активныйк объекту номер текущей строки 0 Else ‘Сохраняем sFindText & « Однако, здесь также изучить этот язык это требуется для на других листах к имени. Обязательно в Excel? Очень знать язык программирования стандартного текста или
удаление макросов.нажмите кнопку и сообщить, помогла Data.xlsx, находящейся в лист. Cells(i, 1)Columns Dim dCellValues() As размер следующего приращения не найдена» Else можно увидеть, как программирования более глубоко выполнения многих функций с аналогичными данными. используйте ее. просто:
«VBA» чтобы создавать заполнение столбца данных.Сведения о запуске макросовЗапись макроса ли она вам, папке C:\Documents and = dVal i, и показано, как Double ‘Массив для перед тем, как MsgBox «Строка « объявляются переменные, как
существуют отличные книги
Процедура
или рассчитать много Независимо от того, Имя макроса обязательно должноНа вкладке «Разработчик» нажимаем свои макро-программы сНа вкладке см. в статье. с помощью кнопок Settings Sub Set_Values(Val1 = i + |
доступ к этому хранения значений ячеек
|
Действия перед записью макросаИмя макроса удобства также приводим As Double) Dim Sub объект ReDim dCellValues(1 To iFib iFib = ячейке A» & цикла самоучителя по ExcelЕсли вы запустите каждый начинаете запись макроса! содержать пробелы, символы заполняем параметры макроса. Сначала надо включить панельКод , ссылку на оригинал DataWorkbook As WorkbookДанный макрос показывает пример Worksheet 10) ‘Цикл Do iFib_Next End If iRowNumber End If |
Дальнейшие действия
Процедура
нажмите кнопкуУбедитесь в том, что Сочетание клавиш (на английском языке). On Error GoTo кода VBA, отслеживающего. Показано так же, Until перебирает последовательно ‘Выводим текущее число End Sub, условного оператора
|
рекомендуется начать с результаты для проверки
|
диапазону ячеек на извлекает их значения листа ‘в строке– пример использования экран окна сообщения. и изучать ихЕсли нельзя разбить длинный записывать после нажатия или нижнее подчеркивание, будет автоматически сохранен. окне «Параметры Excel» . По умолчанию вкладка кнопку макрос. Макрос представляет Workbooks.Open(«C:\Documents and Settings\Data») раз при выделении активном листе, имя в массив до с индексом i цикла’Процедура Sub выполняет по порядку. Те, макрос на короткие |
Дальнейшие действия
клавиш должны быть но максимальная длинаДля выполнения или редактирования открываем группу «НастройкаПри редактировании макроса можноРазработчик
support.office.com>
Как работать с макросами в Excel 2010 без программирования кода
OK собой действие (или ‘Присваиваем переменным Val1 ячейки или диапазона этого листа при тех пор, пока Cells(i, 1).Value =Do While поиск ячейки, содержащей кто имеет опыт приложения, а требуется
Ctrl + Home. имени составляет 80 записанного макроса нажимаем ленты». Обратите внимание немного изучить языкне видна, поэтому, чтобы начать запись
набор действий), которое и Val2 значения ячеек на рабочем записи ссылки указывать не встретится пустая iFib ‘Вычисляем следующее. Здесь также можно заданную строку ‘в в программировании на проверить его функциональностьПример: Представьте себе, что символов. на кнопку «Макросы» на правую колонку программирования Visual Basic.
необходимо выполнить указанные макроса. можно выполнять любое из заданной рабочей листе. В нашем не обязательно. ячейка Do Until
Применение VBA и макросов в Microsoft Excel
число Фибоначчи и увидеть, как объявляются диапазоне ячеек A1:A100 VBA, могут сразу пошагово («отладкой»). Нажмите каждый месяц выАбсолютный адрес ячейки – (или комбинацию клавиш настроек под аналогичнымЧтобы изменить макрос, на ниже действия.Выполните действия, которые нужно
количество раз.
ALT+F8). Появится окно названием «Настройка ленты». вкладке
- Выберите автоматизировать, например ввод
- создании макроса записываются Sheets(«Лист1»).Cells(1, 1) Val2 ячейки
- помощи цикла считывает что массив dCellValues элемента на 1 ссылками на ячейки
- Find_String(sFindText As String) интересующим темам. раз, когда вы из всех филиалов. курсора, когда информация со списком записанных В ней следуетразработчик
Excel стандартного текста или щелчки мышью и = Sheets(«Лист1»).Cells(1, 2)B1 значения в столбце имеет достаточный размер iFib_Next = iFib Excel и применение Dim i AsЧасть 1: Оформление кода хотите перейти к
От вас требуется
Как работать с макросами в Excel
о его размещении макросов и кнопками отметить галочкой опциюнажмите кнопку Макросы> заполнение столбца данных. нажатия клавиш. После DataWorkbook.Close Exit Sub
1 Правильные имена в макросах.
, на экран выводится A рабочего листа ‘Если нет – + iStep i условного оператора Integer ‘Целое числоЧасть 2: Типы данных, следующему шагу выполнения организовать данные и записывается в макро-адреса для управления ими. «Разработчик» как показано , выберите имяПараметры
На вкладке создания макроса его ErrorHandling: ‘Если файл окно с сообщением. Лист2, ‘выполняет с увеличиваем размер массива = i +If типа Integer, используется переменные и константы задачи. Процесс выполнения рассчитать показатели, чтобы
2 Используйте относительные (не абсолютные) адреса ячеек
с жесткой привязкойС помощью макропрограмм можно ниже на рисунке: макроса и нажмите>Разработчик можно отредактировать, чтобы не найден, пользователю’Данный код показывает каждым значением арифметические на 10 при 1 Loop End. в цикле ForЧасть 3: Массивы программы останавливается, когда произвести еще один к конкретной ячейке
увеличить производительность трудаТеперь нам доступна на кнопкуЛента и панельщелкните изменить выполняемые им будет предложено поместить окно с сообщением, операции и записывает
3 Всегда начинайте запись с курсором в A1
помощи ReDim If Sub’Процедура Sub выводит Dim iRowNumber AsЧасть 4: Процедуры Function он видит ошибку. ежемесячный отчет. Вы в момент записи. пользователя в десятки ленте новая закладкаизменить.Остановить запись действия. искомый файл ‘в если на текущем результат в ‘столбец UBound(dCellValues) < iRowЭта процедура числа Фибоначчи, не Integer ‘Целое число и Sub Вы можете исправить можете записать макрос Абсолютные адреса ограничивают
раз. Но чтобы «Разработчик» со всеми. Откроется редактор VisualВ категории.Допустим, что необходимо каждый нужную папку и рабочем листе ‘выбрана A активного рабочего Then ReDim PreserveSub превышающие 1000 Sub типа Integer дляЧасть 5: Условные операторы ошибку, которую легко для выполнения всех
4 Всегда перемещаться с клавиш направления в момент записи макроса
возможности макроса, если использовать запись пользовательских своими инструментами для Basic.Настроить лентуБолее подробное изучение макроса месяц создавать отчет после этого продолжить ячейка B1 Private
листа (Лист1) Sub dCellValues(1 To iRowпросматривает ячейки столбца Fibonacci() Dim i хранения результата iRowNumberЧасть 6: Циклы найти с помощью этих функций, в будут добавляться /
5 Создавайте макросы для конкретных небольших задач
макросов на все автоматизации работы вОбратите внимание на то,в списке для главного бухгалтера. выполнение макроса MsgBox Sub Worksheet_SelectionChange(ByVal Target Transfer_ColA() Dim i + 9) EndA
As Integer ‘Счётчик = 0 ‘ПросматриваетЧасть 7: Операторы и «отладки» или записать том числе открытие
удаляться данные на 100% следует соблюдать Excel и создания как в немОсновные вкладкиПри редактировании макроса можно Требуется выделить красным «Файл Data.xlsx не As Range) ‘Проверяем As Integer Dim If ‘Сохраняем значениеактивного листа до для обозначения позиции одну за другой встроенные функции по-новому. и соединение всех
exceltable.com>
листе Excel или
- Excel макросы учебник с примерами
- Vba для excel самоучитель
- Макросы в excel примеры
- Как в excel удалить макросы в
- Включить макросы в excel 2013
- Сводные таблицы в excel примеры самоучитель
- Макросы в excel что это и для чего
- Макросы для excel
- Vba excel самоучитель для чайников
- Как в excel подключить макросы в
- Макросы в excel 2010 отключить
- Макросы в excel 2016 для чайников с примерами
Основы написания макросов в Excel
Курс
Основы написания макросов в Excel
Как писать макросы в Excel? Что такое макросы? Как они работают? Как создавать свои макросы? Вот вопросы, на которые вы получите ответ, посмотрев данный видеокурс.
Содержание
#7 — Обращение к WorkBooks и Worksheets
Привет всем обучающимся! Представленный видеоурок посвящен основным понятиям макросов. Сегодня мы продолжаем разговор про объектную модель и поговорим конкретно про такие объекты как WorkBooks – книга Excel и Worksheets – листы книги. Открывайте ваш Excel и приступайте к работе.
#6 — Объекты Excel
Привет всем! Продолжаем наш видеокурс по написанию макросов в Excel. В предыдущих видеоуроках вы уже узнали, в какой среде пишутся макросы, какими способами можно их запустить и написали свой первый макрос. Сегодня же давайте подробнее поговорим про объекты Excel. Эта тема для нас очень важна, так как для разработки решений, использующих Microsoft Office Excel, необходимо […]
#5 — Макрорекодер — помощник?
Привет, «макрописцы»! Вы уже изучили на прошлых видеоуроках понятие «макроса», научились создавать его и запускать различными способами, узнали, где и в какой среде он пишется.
#4 — Создание макросов в Excel с нуля
Всем большой привет! Рады снова пообщаться с вами на нашем видеокурсе. Сегодня на видеоуроке мы пройдём все этапы создания макросов в Excel с нуля, сами создадим свой модуль, в котором при нажатии на кнопку Start, макрос создаст новый лист и в ячейке введет имя пользователя и текущую дату. Поехали… Итак, создадим для начала новый файл […]
#3 — Изучаем редактор VBE
Привет! В предыдущих уроках мы уже познакомились с понятием макроса и способами его создания, рассмотрели способы его запуска, а также создали свой первый макрос. Сегодня давайте изучим среду VBE для написания макросов, научимся настраивать ее под себя, а также познакомимся с понятием «Модуль». VBE — редактор, встроенный в Excel Редактор Visual Basic Editor или VBE […]
#2 — Как включить макросы в Excel (7 способов)
Всем привет!!! Продолжаем курс по написанию макросов Excel. На сегодняшнем видеоуроке вы узнаете, как включить макросы в Excel 7-ью различными способами. В процессе прохождения уроков вы познакомитесь как минимум еще с 2 способами включения макросов, но для начала вполне достаточно семи. Как показывает практика, вы будете пользоваться не всеми, поэтому сразу присмотритесь к тому, что […]
#1 — Знакомство с макросами в Excel
Чему бы ты ни учился, ты учишься для себя. Петроний Всех приветствуем на первом видеоуроке курса по написанию макросов в Excel! Сегодня вы узнаете, что представляют из себя макросы в Excel и напишете свой первый макрос. Поехали… Что же такое макросы в Excel Макрос – это записанная последовательность команд, которую затем выполняет Excel. Если говорить […]
макросов Excel | CustomGuide
Существует два способа создать макрос: записать их или написать на языке программирования Excel Visual Basic. В этом уроке объясняется простой способ создания макроса — путем записи задач, которые вы хотите, чтобы макрос выполнял для вас.
Запись макроса
Когда вы создаете макрос, представьте, что вас записывают; отслеживается каждый ваш шаг — все ваши команды, данные, которые вы вводите, даже любые ваши ошибки. Перед записью макроса полезно написать сценарий, содержащий все шаги, которые вы хотите записать в макрос. Потренируйтесь или отрепетируйте свой сценарий пару раз, чтобы убедиться, что он работает, прежде чем вы начнете его записывать. Если вы допустили ошибку при записи макроса, не беспокойтесь — вы всегда можете удалить существующий макрос и повторить попытку или отредактировать исходный код макроса Visual Basic, чтобы исправить ошибку.
- При необходимости откройте вкладку Разработчик.
- Перейдите на вкладку Разработчик .
- Нажмите кнопку Запись макроса .
Откроется окно «Запись макроса», в котором вы можете настроить имя, описание и сочетания клавиш макроса перед его записью.
- Введите имя макроса.
Имя должно начинаться с буквы и не может содержать пробелов, символов и знаков препинания.
У вас может быть довольно много макросов в файле, поэтому вам нужно дать ему описательное имя, чтобы легко определить, что он делает.
- (Необязательно) Назначьте сочетание клавиш.
Убедитесь, что это не то, что вы обычно используете, например, Ctrl + C, которое является копированием.
- Выберите место для сохранения макроса.
- Личная книга макросов: Макрос будет доступен в любом файле Excel, с которым вы работаете.
- Новая рабочая книга: Создает новый файл Excel и сохраняет в нем макрос.
- Эта рабочая книга: Сохраняет макрос в текущем файле. Он не будет доступен ни в каких других файлах Excel, с которыми вы работаете.
Хотя вам не нужно добавлять описание, если у вас есть рабочая книга, содержащая несколько макросов, описание может быть очень полезным.
Макрос немедленно начинает запись.
Во время записи макрос фиксирует все действия, которые вы выполняете. Это включает в себя щелчок по ячейкам, ввод данных и формул ячеек, применение форматирования и другие задачи.
Рабочая книга сохранена, и макрос будет доступен при следующем открытии рабочей книги.
Запуск макроса
После того, как вы записали и сохранили макрос в книгу, вы можете запустить его с помощью сочетания клавиш или просмотреть все макросы в книге и выбрать один для прямого запуска.
- Выберите лист, на котором вы хотите запустить макрос.
- Нажмите кнопку Макросы на вкладке Разработчик.
Все доступные макросы перечислены в диалоговом окне Макросы. Отсюда вы можете запустить макрос, отредактировать его, создать новый или удалить макрос, который вам больше не нужен.
- Выберите макрос, который хотите запустить.
- Нажмите кнопку Выполнить .
Выбранный макрос запущен.
БЕСПЛАТНЫЙ краткий справочник
Нажмите, чтобы загрузить
Бесплатно для распространения с нашими комплиментами; мы надеемся, что вы рассмотрите наше платное обучение.
Написание макросов VBA с нуля
Средство записи макросов Excel обладает большими возможностями, но имеет свои ограничения. Как описано в другой статье, средство записи макросов часто записывает ненужный код и не может записывать такие вещи, как логика или взаимодействие с другими программами. Его также может быть сложно использовать для более длинных макросов — вы можете заранее раскадровывать свои действия, чтобы избежать дорогостоящих ошибок.
Эта статья призвана помочь вам начать кодирование макросов с нуля в VBA. Вы узнаете, где хранятся макросы, напишете базовый макрос и изучите основы программирования на VBA с использованием переменных, логики и циклов.
Начало работы
VBA и редактор Visual Basic
VBA, или Visual Basic для приложений, — это язык, на котором написаны макросы. Все макросы хранятся в виде кода VBA, независимо от того, написаны ли они вручную или созданы с помощью средства записи макросов.
Вы можете получить доступ ко всему коду VBA в книге с помощью редактора Visual Basic. Это специальный текстовый редактор и отладчик, встроенный во все офисные приложения, включая Excel. Как правило, вы открываете этот редактор с помощью сочетания клавиш ALT+F11 в Excel, но вы также можете получить к нему доступ с вкладки Excel Developer , если она у вас включена.
Исследователь проекта
Project Explorer — это окно внутри VB Editor, которое показывает вам все элементы, которые могут содержать код VBA. Если вы не видите это окно, нажмите F5 , чтобы он появился, или выберите Project Explorer в меню View .
Двойной щелчок по элементу в Project Explorer покажет код этого элемента. Существует несколько типов элементов, которые могут отображаться в Project Explorer:
- Рабочие тетради
- Рабочие листы
- Пользовательские формы Модули класса
- Модули (в этих элементах хранятся макросы)
Хотя все эти типы элементов могут включать код VBA, лучше всего кодировать макросы в модулях.
Создание вашего первого макроса
Использование списка макросов
В списке макросов показаны все макросы в вашей книге. Из этого списка вы можете отредактировать существующий макрос или создать новый.
Чтобы создать новый макрос, используя список макросов:
- Выберите вкладку Разработчик и нажмите Макросы (или нажмите ALT+F8 )
- Введите новое имя для вашего макроса, затем нажмите «Создать»
После нажатия «Создать» появится редактор VB, показывающий только что созданный макрос. При необходимости Excel создаст новый модуль для макроса.
Вручную в VB Editor
Вы можете добавить новый макрос вручную без списка макросов. Это лучший вариант, если вы хотите указать модуль, в котором сохранен макрос.
Чтобы добавить макрос вручную:
- Открыть редактор VB ( ALT+F11 )
- Либо:
- Добавьте новый модуль, нажав Вставить > Модуль в меню (модуль откроется автоматически)
- ИЛИ дважды щелкните существующий модуль в Project Explorer, чтобы открыть его
- В модуле введите код вашего нового макроса
Подпрограмма MyMacro() Конец суб
Эти две строки указывают начало и конец макроса с именем «MyMacro» (обратите внимание на круглые скобки, которые обязательны). Это будет отображаться в диалоговом окне «Просмотр макросов» в Excel и может быть назначено кнопке (хотя она еще ничего не делает).
Добавьте код в макрос
Теперь давайте добавим некоторый код между строками «Sub» и «End Sub», чтобы этот макрос действительно что-то делал:
Подпрограмма MyMacro() Диапазон («A1»). Значение = «Привет, мир!» Конец суб
Основные структуры кода
Объект полигона
Excel VBA использует объект диапазона для представления ячеек на листе. В приведенном выше примере создается объект Range с кодом Range(«A1») для доступа к значению ячейки A1.
Объекты диапазона в основном используются для установки значений ячеек:
Диапазон ("A1"). Значение = 1
Диапазон ("A1"). Значение = "Первая ячейка"
Обратите внимание, что при определении значений ячеек как чисел вы просто вводите число, но при вводе текста вы должны заключать текст в кавычки.
Диапазонытакже можно использовать для доступа ко многим свойствам ячеек, таким как их шрифт, границы, формулы и многое другое.
Например, вы можете установить полужирный шрифт ячейки следующим образом:
Диапазон("A1").Шрифт.Жирный = True
Вы также можете установить формулу ячейки:
Диапазон («A1»). Формула = «= Сумма (A2: A10)»
В Excel вы можете выбрать блок ячеек с помощью курсора (например, от A1 до D10) и выделить их все полужирным шрифтом. Объекты диапазона могут получать доступ к блокам ячеек следующим образом:
Диапазон("A1:D10").Шрифт.Жирный = True
Вы также можете обратиться сразу к нескольким ячейкам/блокам:
Диапазон("A1:D10,A12:D12,G1").Font.Bold = True
Формат для этого такой же, как формат, который вы использовали бы при выборе ячеек для формулы СУММ() в Excel. Каждый блок отделяется запятой, а блоки обозначаются верхней левой и нижней правой ячейками, разделенными двоеточием.
Наконец, объекты Range имеют встроенные методы для выполнения общих операций на листе. Например, вы можете захотеть скопировать некоторые данные из одного места в другое. Вот пример:
Диапазон("A1:D10").Копировать Диапазон("F1").PasteSpecial xlPasteValues Диапазон ("F1").PasteSpecial xlPasteFormats
Это копирует ячейки A1:D10 в буфер обмена, а затем выполняет PasteSpecial(), начиная с ячейки C1 — точно так же, как вы делаете это вручную в Excel. Обратите внимание, что в этом примере показано, как использовать PasteSpecial() для вставки только значений и форматов — здесь есть параметры для всех параметров, которые вы видите в диалоговом окне «Специальная вставка».
Вот пример вставки «Все» на другой лист:
Диапазон("A1:D10").Копировать Листы("Лист2").Range("A1").PasteSpecial xlPasteAll
Операторы if
С оператором If вы можете заставить часть кода выполняться только «если» определенное утверждение верно.
Например, вы можете выделить ячейку полужирным шрифтом и покрасить ее в красный цвет, но только «если» значение в ячейке меньше 100.
Если Диапазон ("A4"). Значение < 100 Тогда Диапазон ("A4"). Шрифт. Полужирный = Истина Диапазон("A4").Interior.Color = vbRed Конец, если
Правильная структура оператора If выглядит следующим образом (квадратные скобки обозначают необязательные компоненты):
Если <условие> Тогда
[ ElseIf <другое-условие> Then ]
[ Еще ]
Конец, если
Вы можете включить любое количество блоков ElseIf для проверки нескольких условий. Вы также можете добавить блок Else , который запускается только в том случае, если ни одно из других условий в операторе If не выполняется.
Вот еще один пример, основанный на предыдущем, где ячейка форматируется по-разному в зависимости от значения:
Если Диапазон("A4").Значение < 100 Тогда Диапазон ("A4"). Шрифт. Полужирный = Истина Диапазон("A4").Interior. Color = vbRed ElseIf Range("A4").Value < 200 Тогда Диапазон ("A4"). Шрифт. Полужирный = Ложь Диапазон ("A4"). Интерьер. Цвет = vbYellow Еще Диапазон ("A4"). Шрифт. Полужирный = Ложь Диапазон ("A4"). Интерьер. Цвет = vbGreen Конец, если
В приведенном выше примере ячейка не выделена полужирным шрифтом в блоках ElseIf, где значение не меньше 100. можно вложить операторы If, чтобы избежать дублирования кода, например:
Если Диапазон("A4").Значение < 100 Тогда Диапазон ("A4"). Шрифт. Полужирный = Истина Диапазон("A4").Interior.Color = vbRed Еще Range("A4").Font.Bold = False ' выделение шрифта только один раз Если Диапазон("A4").Значение < 200 Тогда Диапазон ("A4"). Интерьер. Цвет = vbYellow Еще Диапазон ("A4"). Интерьер. Цвет = vbGreen Конец, если Конец, если
Переменные
A Переменная — это часть памяти, используемая для хранения временной информации во время выполнения макроса. Они часто используются в циклах в качестве итераторов или для хранения результата операции, которую вы хотите использовать несколько раз в макросе.
Вот пример переменной и ее использования:
Sub ExtractSerialNumber() Dim strSerial As String ' это объявление переменной 'As String' означает, что эта переменная предназначена для хранения текста ' установка фиктивного серийного номера: Диапазон ("A4"). Значение = "серийный номер 804567-88" ' выделите серийный номер из ячейки A4 и присвойте его переменной strSerial = Средний (Диапазон («A4»). Значение, 9) ' теперь используйте переменную дважды, вместо того, чтобы дважды анализировать серийный номер Диапазон ("B4"). Значение = strSerial MsgBox улСериал Конец сабвуфера
В этом базовом примере переменная strSerial используется для извлечения серийного номера из ячейки A4 с помощью функции Mid(), а затем используется в двух других местах.
Стандартный способ объявления переменной выглядит следующим образом:
Тусклый как угодно [ Как тип ]
- любое имя это имя, которое вы решили дать своей переменной
- тип - это тип данных переменной
Часть «[As type ]» может быть опущена — в этом случае переменная объявляется как тип Variant, который может содержать любые данные. Несмотря на то, что типы Variant абсолютно допустимы, их следует избегать, так как они могут привести к неожиданным результатам, если вы не будете осторожны.
Существует правил для имен переменных. Они должны начинаться либо с буквы, либо с символа подчеркивания, не могут содержать пробелов, точек, запятых, кавычек или символов «! @ & $ #».
Вот несколько примеров объявлений переменных:
Dim strFilename As String ' стиль правильного имени — описательный и использует префикс Dim i As Long 'плохой стиль имени - приемлем только для некоторых итераторов Dim SalePrice As Double ' стиль имени в порядке — описательный, но не использует префикс Dim iCounter ' нормальное имя - не слишком описательное, использует префикс, без типа данных
Во всех этих примерах используются немного разные схемы именования, но все они допустимы. Неплохая идея ставить перед именем переменной краткую форму ее типа данных (как в некоторых из этих примеров), так как это делает ваш код более читабельным с первого взгляда.
VBA включает в себя множество основных типов данных . К наиболее популярным относятся:
- Строка (используется для хранения текстовых данных)
- Long (используется для хранения целых чисел, т. е. без десятичных знаков)
- Double (используется для хранения чисел с плавающей запятой, т. е. десятичных разрядов)
Полный список встроенных типов данных VBA можно найти здесь: https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/data-type-summary
Переменные объекта диапазонаТакже можно создавать переменные, которые ссылаются на объекты диапазона. Это полезно, если вы хотите сослаться на определенный диапазон в своем коде в нескольких местах — таким образом, если вам нужно изменить диапазон, вам нужно изменить его только в одном месте.
Когда вы создаете переменную объекта Range, вы должны «установить» ее на экземпляр Range. Например:
Dim rMyRange как диапазон Установите rMyRange = Range («A1: A10; D1: J10»)
Отсутствие инструкции «Set» при назначении переменной Range приведет к ошибке.
Петли
Циклы — это блоки, код внутри которых повторяется определенное количество раз. Они полезны для уменьшения объема кода, который вам нужно написать, и позволяют вам написать один фрагмент кода, который выполняет одни и те же действия со многими различными связанными элементами.
Для следующего
Блок For-Next представляет собой цикл, который повторяется определенное количество раз. Он использует переменную в качестве итератора , чтобы подсчитать, сколько раз он выполнялся, и эту переменную-итератор можно использовать внутри цикла. Это делает циклы For-Next очень полезными для перебора ячеек или массивов.
Вот пример, который перебирает ячейки в строках с 1 по 100, столбец 1 и устанавливает их значения в значение переменной итератора:
Тусклый и такой длинный Для i = от 1 до 100 Ячейки (я, 1). Значение = я Далее я
Строка «For i = 1 To 100» означает, что цикл начинается с 1 и заканчивается после 100. Вы можете установить любые начальные и конечные числа, которые вам нравятся; вы также можете использовать переменные для этих чисел.
По умолчанию циклы For-Next подсчитываются до 1. Если вы хотите подсчитывать по другому числу, вы можете написать цикл с явным предложением Step :
Для i = от 5 до 100 Шаг 5
Этот цикл начнется с 5, затем к «i» будет добавляться 5 каждый раз, когда цикл повторяется (таким образом, «i» будет равно 10 при втором повторении, 15 при третьем и так далее).
Используя Step , вы также можете сделать цикл в обратном порядке:
Для i = 100 до 1 Шаг -1
Вы также можете вложить циклов For-Next. Для каждого блока требуется собственная переменная для подсчета, но вы можете использовать эти переменные где угодно. Вот пример того, как это полезно в Excel VBA:
Dim i As Long, j As Long Для i = от 1 до 100 Для j = от 1 до 100 Ячейки (i, j). Значение = i * j Следующий j Далее я
Это позволяет перебирать как строки, так и столбцы.
ПРЕДУПРЕЖДЕНИЕ : хотя это разрешено, вы НИКОГДА не должны изменять переменную итератора внутри блока For-Next, так как он использует этот итератор для отслеживания цикла. Изменение итератора может привести к бесконечному циклу и зависанию макроса. Например:
Для i = от 1 до 100 я = 1 Далее я
В этом цикле «я» никогда не превысит 2, пока не будет сброшено в 1, и цикл будет повторяться вечно.
Для каждого
Блоки For-Each очень похожи на блоки For-Next, за исключением того, что они не используют счетчик для указания количества циклов. Вместо этого блок For-Each берет «коллекцию» объектов (например, диапазон ячеек) и запускается столько раз, сколько объектов в этой коллекции.
Вот пример:
Dim r As Диапазон Для каждого r в диапазоне («A15: J54») Если г.Значение > 0 Тогда r. Font.Bold = Истина Конец, если Следующий р
Обратите внимание на использование переменной объекта Range ‘r’. Это переменная итератора, используемая в цикле For-Each — каждый раз в цикле «r» получает ссылку на следующую ячейку в диапазоне.
Преимущество использования циклов For-Each в Excel VBA заключается в том, что вы можете перебирать все ячейки в диапазоне без вложенных циклов. Это может быть удобно, если вам нужно перебрать все ячейки в сложном диапазоне, таком как Range("A1:D12,J13, M1:Y12") .
Одним из недостатков циклов For-Each является то, что вы не можете контролировать порядок обработки ячеек. Хотя на практике Excel будет перебирать ячейки по порядку, теоретически он может обрабатывать ячейки в совершенно случайном порядке. Если вам нужно обрабатывать ячейки в определенном порядке, вместо этого следует использовать циклы For-Next.
Do-Loop
В то время как блоки For-Next используют счетчики, чтобы знать, когда остановиться, блоки Do-Loop выполняются до тех пор, пока не будет выполнено условие. Для этого вы используете предложение Before либо в начале, либо в конце блока, которое проверяет условие и вызывает остановку цикла при выполнении этого условия.
Пример:
Dim str As String ул = "Буффало" Делать до str = "Buffalo Buffalo Buffalo Buffalo Buffalo Buffalo Buffalo" str = str & " " & "Буффало" Петля Диапазон ("A1"). Значение = ул
В этом цикле «Buffalo» объединяется с «str» каждый раз в цикле до тех пор, пока не совпадет с ожидаемым предложением. В этом случае тест выполняется в начале цикла — если «str» уже было ожидаемым предложением (что не так, потому что мы не начали его таким образом, но если бы), цикл даже не запустился. .
Вы можете запустить цикл хотя бы один раз, переместив предложение «До тех пор» в конец, например:
Делать str = str & " " & "Буффало" Цикл до str = «Buffalo Buffalo Buffalo Buffalo Buffalo Buffalo Buffalo»
Вы можете использовать в своем макросе любую версию, которая имеет смысл.