Циклы в VBA — Информационные технологии
Встречаются ситуации, когда от программы VBA требуется совершить несколько раз подряд один и тот же набор действий (то есть повторить несколько раз один и тот же блок кода). Это может быть сделано при помощи циклов VBA.
К циклам VBA относятся:
Далее мы подробно рассмотрим каждый из этих циклов.
Оператор цикла «For» в Visual Basic
Структура оператора цикла For в Visual Basic может быть организована в одной из двух форм: как цикл For … Next или как цикл For Each.
Цикл «For … Next»
Цикл For … Next использует переменную, которая последовательно принимает значения из заданного диапазона. С каждой сменой значения переменной выполняются действия, заключённые в теле цикла. Это легко понять из простого примера:
For i = 1 To 10 Total = Total + iArray(i) Next i
В этом простом цикле For … Next используется переменная i, которая последовательно принимает значения 1, 2, 3, … 10, и для каждого из этих значений выполняется код VBA, находящийся внутри цикла.
В приведённом выше примере шаг приращения цикла не указан, поэтому для пошагового увеличения переменной i от 1 до 10 по умолчанию используется приращение 1. Однако, в некоторых случаях требуется использовать другие значения приращения для цикла. Это можно сделать при помощи ключевого слова Step, как показано в следующем простом примере.
For d = 0 To 10 Step 0.1 dTotal = dTotal + d Next d
Так как в приведённом выше примере задан шаг приращения равный 0.1, то переменная dTotal для каждого повторения цикла принимает значения 0.0, 0.1, 0.2, 0.3, … 9.9, 10.0.
Для определения шага цикла в VBA можно использовать отрицательную величину, например, вот так:
For i = 10 To 1 Step -1 iArray(i) = i Next i
Здесь шаг приращения равен -1, поэтому переменная i с каждым повторением цикла принимает значения 10, 9, 8, … 1.
Цикл «For Each»
Цикл For Each похож на цикл For … Next, но вместо того, чтобы перебирать последовательность значений для переменной-счётчика, цикл For Each выполняет набор действий для каждого объекта из указанной группы объектов. В следующем примере при помощи цикла For Each выполняется перечисление всех листов в текущей рабочей книге Excel:
Dim wSheet As Worksheet For Each wSheet in Worksheets MsgBox "Найден лист: " & wSheet.Name Next wSheet
Оператор прерывания цикла «Exit For»
Применение оператора Exit For продемонстрировано в следующем примере. Здесь цикл перебирает 100 записей массива и сравнивает каждую со значением переменной dVal. Если совпадение найдено, то цикл прерывается:
For i = 1 To 100 If dValues(i) = dVal Then IndexVal = i Exit For End If Next i
Цикл «Do While» в Visual Basic
Цикл Do While выполняет блок кода до тех пор, пока выполняется заданное условие. Далее приведён пример процедуры Sub, в которой при помощи цикла Do While выводятся последовательно числа Фибоначчи не превышающие 1000:
'Процедура Sub выводит числа Фибоначчи, не превышающие 1000 Sub Fibonacci() Dim i As Integer 'счётчик для обозначения позиции элемента в последовательности Dim iFib As Integer 'хранит текущее значение последовательности Dim iFib_Next As Integer 'хранит следующее значение последовательности Dim iStep As Integer 'хранит размер следующего приращения 'инициализируем переменные i и iFib_Next i = 1 iFib_Next = 0 'цикл Do While будет выполняться до тех пор, пока значение 'текущего числа Фибоначчи не превысит 1000 Do While iFib_Next < 1000 If i = 1 Then 'особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else 'сохраняем размер следующего приращения перед тем, как перезаписать 'текущее значение последовательности iStep = iFib iFib = iFib_Next End If 'выводим текущее число Фибоначчи в столбце A активного рабочего листа 'в строке с индексом i Cells(i, 1).Value = iFib 'вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub
В приведённом примере условие iFib_Next < 1000 проверяется в начале цикла. Поэтому если бы первое значение iFib_Next было бы больше 1000, то цикл бы не выполнялся ни разу.
Другой способ реализовать цикл Do While – поместить условие не в начале, а в конце цикла. В этом случае цикл будет выполнен хотя бы раз, не зависимо от того, выполняется ли условие.
Схематично такой цикл Do While с проверяемым условием в конце будет выглядеть вот так:
Do ... Loop While iFib_Next < 1000
Цикл «Do Until» в Visual Basic
Цикл Do Until очень похож на цикл Do While: блок кода в теле цикла выполняется раз за разом до тех пор, пока заданное условие выполняется (результат условного выражения равен True). В следующей процедуре Sub при помощи цикла Do Until извлекаются значения из всех ячеек столбца A рабочего листа до тех пор, пока в столбце не встретится пустая ячейка:
iRow = 1 Do Until IsEmpty(Cells(iRow, 1)) 'Значение текущей ячейки сохраняется в массиве dCellValues dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop
В приведённом выше примере условие IsEmpty(Cells(iRow, 1)) находится в начале конструкции Do Until, следовательно цикл будет выполнен хотя бы один раз, если первая взятая ячейка не пуста.
Однако, как было показано в примерах цикла Do While, в некоторых ситуациях нужно, чтобы цикл был выполнен хотя бы один раз, не зависимо от первоначального результата условного выражения. В таком случае условное выражение нужно поместить в конце цикла, вот так:
Do ... Loop Until IsEmpty(Cells(iRow, 1))
Оцените качество статьи. Нам важно ваше мнение:
Оформление кода VBA — Информационные технологии
Начиная практиковаться в написании кода VBA, очень важно с самого начала выработать хорошие привычки в оформлении кода, чтобы в дальнейшем написанный код было легко читать и понимать, как он работает.
В процессе написания кода, программист может иметь совершенно чёткое представление о том, что за код он пишет и как этот код должен работать. Но нужно позаботиться и о том, чтобы, вернувшись к работе спустя полгода, не пришлось ломать голову, пытаясь понять, что должен делать этот код. Ещё более неприятная ситуация – когда кто-то другой станет продолжать Вашу работу над кодом и не сможет понять, как он работает.
Эта статья посвящена комментариям, отступам в коде и переносам строк – элементам, которые делают код аккуратным и понятным.
Комментарии в VBA
Самое важное для написания аккуратного и понятного кода – чаще оставлять комментарии. Комментарии – это строки в коде, которые исполняют роль заметок и помогают разобраться, какие действия выполняет та или иная часть кода.
Комментарии не участвуют в процессе выполнения программы и не влияют на результат работы макроса. Каждая строка, начинающаяся апострофом (‘), будет считаться в VBA комментарием. Редактор VBA в Excel выделит такую строку зелёным цветом шрифта, чтобы с первого взгляда было понятно, что это комментарий, который не будет выполняться.
Ниже продемонстрировано, как при помощи комментариев поясняется работа простой процедуры Sub:
' процедура Sub для просмотра диапазона ячеек A1-A100 активного ' листа и поиска ячейки, содержащей переданную процедуре строку Sub Find_String(sFindText As String) Dim i As Integer ' переменная типа Integer для цикла 'For' Dim iRowNumber As Integer ' переменная типа Integer для хранения результата iRowNumber = 0 ' последовательно посматриваем ячейки A1-A100, пока не будет найдено значение 'sFindText' For i = 1 To 100 If Cells(i, 1). Value = sFindText Then ' найдено совпадение с переданной строкой ' сохраняем номер текущей строки и выходим из цикла iRowNumber = i Exit For End If Next i ' сообщение во всплывающем окне сообщает пользователю, ' найдена ли строка, и если найдена – сообщает номер строки If iRowNumber = 0 Then MsgBox "Строка " & sFindText & " не найдена" Else MsgBox "Строка " & sFindText & " найдена в ячейке A" & iRowNumber End If End Sub
Не расстраивайтесь, если какую-то часть кода, показанного выше, не удалось понять – далее в учебнике мы рассмотрим эту тему подробнее. Цель приведённого примера – продемонстрировать, как при помощи комментариев поясняется каждый блок кода.
Часто программисты ленятся добавлять подробные комментарии к своему коду, но, поверьте, затраченные усилия оправдают себя с избытком! Несколько минут, потраченных на написание понятного комментария, могут сэкономить Вам долгие часы в будущем.
Отступы в коде VBA
Другой приём, делающий написанный код более читаемым – правильно расставлять отступы. В приведённом выше примере видно, что отступ сделан для кода внутри главной процедуры Sub и далее отступ увеличивается для каждого вложенного блока кода. Такие увеличенные отступы помогают понять, где каждый отдельный блок кода начинается и заканчивается.
Переносы строк в VBA
Ещё один способ сделать код более читаемым и облегчить работу с ним – делать переносы и разбивать одну длинную строку кода на несколько коротких. В VBA, чтобы разбить строку, нужно вставить символы ” _” (пробел+подчёркивание) непосредственно перед переносом строки. Это сообщает компилятору VBA, что текущая строка кода продолжается на следующей строке.
Следующий пример демонстрирует, как при помощи переносов строк можно сделать длинные строки кода гораздо более понятными и легко читаемыми.
Посмотрите на этот оператор If:
If (index = 1 And sColor1 = "красный") Or (index = 2 And sColor1 = "синий") Or (index = 3 And sColor1 = "зеленый") Or (index = 4 And sColor1 = "коричневый") Then
При помощи переносов строк тот же оператор If может быть записан вот так:
If (index = 1 And sColor1 = "красный") Or _ (index = 2 And sColor1 = "синий") Or _ (index = 3 And sColor1 = "зеленый") Or _ (index = 4 And sColor1 = "коричневый") Then
Если рассмотренный оператор If разбит на четыре строки, то составляющие его блоки c условиями видны гораздо более наглядно. Этот пример иллюстрирует, как аккуратное оформление может сделать код более читаемым и привести в результате к меньшему количеству ошибок и путаницы.
Оцените качество статьи. Нам важно ваше мнение:
Самоучитель VBA — А. Гарнаев — VisualBasic — Каталог файлов
Скачали: 2187
Категория: VisualBasic
Размер файла: 2.18 MB
Версия: 1.0
E-Mail автора:
[email protected]Домашняя страница: programmistu.info
Настоящая книга является с одной стороны, подробным справочником по Visual Basic for Applications (VBA), а с другой стороны, самоучителем по составлению и разработке приложений, написанных на этом языке. Это уникальное сочетание, которое, следуя рекламному подходу, можно назвать «два в одном», обеспечивает большую гибкость при решении читателем своих собственных задач. Самоучитель на большом количестве примеров умело и доступно обучает, как можно быстро и эффективно решать разнообразные задачи. В справочнике приводится подробное описание возможностей VBA, имея такие сведения под рукой у читателя исчезнет необходимость бегать по магазинам в поиске дополнительной литературы при написании самостоятельных приложений, что несомненно сбережет время и кошелек.Самоучитель состоит из уроков. В каждом из уроков разрабатывается пример пользовательского приложения и дается подробный анализ. Тексты всех программ снабжены доскональными комментариями. Можно сказать, что все рассматриваемые программы разложены буквально по маленьким разжеванным кусочкам, которые читателю только и остается проглотить. По завершению урока предлагается самостоятельное задание, выполнение которого поможет лучше закрепить разобранный материал.
С помощью VBA можно легко и быстро создавать пользовательские приложения, используя единую для всех офисных программ среду и язык. Научившись разрабатывать приложения для одной офисной программы, например Excel (которой, как наиболее популярной офисной программе, в основном и посвящена данная книга), можно создавать приложения и для других офисных программ, например Access. Внимательно читая эту книгу, можно стать искусным разработчиком и научиться пользоваться мощными средствами разработки приложений Excel для того, чтобы конструировать эффективные и применимые к реальной жизни приложения. Кроме того, по своей структуре, интерфейсу и синтаксису VBA образует ядро Visual Basic. Поэтому тот, кто изучит программирование на VBA очень быстро может освоить и Visual Basic.
В данной книге уделяется огромное внимание программированию на языке VBA, но это совсем не требует от читателя быть профессиональным программистом. VBA обладает мощными встроенными интеллектуальными средствами, которые позволяют даже начинающему пользователю быстро самостоятельно разрабатывать профессиональные приложения. Например, при написании кода программы редактор VBA сам предлагает пользователю возможные продолжения составляемых им инструкций. Другим примером встроенных интеллектуальных средств VBA является макрорекордер, который переводит все выполняемые вручную пользователем действия в основном приложении на язык VBA. Таким образом, макрорекордер позволяет пользователю поручать VBA самому создавать большие куски кода разрабатываемого приложения.
Программирование на VBA в Excel 2016. Самоучитель
Только зарегистрированные клиенты, купившие этот товар, могут публиковать отзывы.
- Вопрос по коду на стр.174
Используются русские слова «Вниз», «Влево», «Вправо», «Высота». Объясните, пожалуйста, что это?
Public Sub Прыжок()
With CmdTest
Вправо = .Left + Int(5 * Rnd())
If Вправо > 220 Then Вправо = 10
If Вправо + Ширина > InsideWidth Then
Вправо = InsideWidth — Ширина
End If
Пользовательская форма 175
Вниз = .Top + Int(5 * Rnd())
If Вниз > 220 Then Влево = 10
If Вниз + Высота > 220 Then
Вниз = 50
End If
.Move Влево, Вниз
End With
End Sub
Ответ:
Это обычные переменные, только их тип явно не указан. В именах переменных можно использовать русские буквы, по умолчанию тип integer.
Согласны что пример не очень удачный, он убран из следующего издания
2. Использование функции InputBox. Вначале авторы объясняют принцип работы. И что возвращается введенное значение типа String. Забывая при этом сообщить, что при нажатии клавиши Cancel возвращается пустая строка.
А в приведенном коде задается тип возвращаемой переменной Integer. Вопрос!!!! Что произойдет, если будет нажата клавиша Cancel? Если кому интересно, данный код находится на стр. 107.
Ответ:
Спасибо за замечание. Правильно добавить «При нажатии кнопки Cancel возвращает пустую строку (empty)». Язык VBA не является строго типизированным, поэтому транслятор такое допускает. При нажатии кнопки Cancel будет ошибка времени выполнения. Более корректный код с явным преобразованием типов прилагается.
Листинг 3.15. Пример оператора Case
Public Sub Целое_число()
Dim s As String, i As Integer
s = InputBox(«Введите целое число >= 1»)
If s <> «» Then ‘Если не нажата кнопка Cancel
i = CInt(s) ‘Преобразование строки в целое число
Select Case i
Case 1 To 5
MsgBox «Число лежит в пределах от 1 до 5»
Case 6 To 8
MsgBox «Число лежит в пределах от 6 до 8»
Case 9 To 15
MsgBox «Число лежит в пределах от 9 до 15»
Case 15 To 50
MsgBox «Число лежит в пределах от 15 до 50»
Case Is > 50
MsgBox «Число больше 50»
Case Else
MsgBox «Допустимое значение не было введено»
End Select
End If
End Sub
Гарбер Г.
3. — Основы программирования на Visual Basic и VBA в Excel 2007. — Трюки и приемы в Microsoft ExcelРассматриваются основные элементы среды разработки программ, а также базовые конструкции алгоритмических языков Visual Basic и VBA (Visual Basic для приложений). В качестве пользовательского интерфейса программы (макроса) используются стандартные окна Windows, текстовые файлы, формы, таблица Exccl. Рассматривается также вопрос разработки пользовательских функций Excel. Продемонстрированы приемы работы с отладчиком программ, справочными системами, макрорекордером и личной книгой макросов. Опыт программирования не является обязательным. Книга ориентирована на преподавателей информатики, студентов вузов и колледжей, а также на широкий круг читателей, имеющих желание научиться программировать в табличном процессоре Excel и тем самым существенно расширить круг решаемых задач.
Изучение данной книги возможно лишь в процессе работы на компьютере, оснащенном табличным процессором Excel. Книга рассчитана на читателя, уже имеющего опыт работы с Excel, а также с программой Проводник (Windows Explorer) и текстовым процессором Word, причем читатель должен уметь пользоваться буфером обмена операционной системы Windows.
В книге рассмотрены базовые конструкции, имеющиеся во всех алгоритмических языках, — оператор присваивания, условные операторы, циклы, массивы и др. Кроме того, рассмотрены вопросы разработки макросов и пользовательских функций Excel средствами макрорекордера и алгоритмического языка VBA (Visual Basic for Applications — VB для приложений), являющегося расширением Visual Basic: помимо всех основных конструкций VB, язык VBA включает ряд специфических конструкций. В качестве пользовательского интерфейса программы (макроса) используются стандартные окна операционной системы Windows, текстовые файлы, формы, таблица Excel.
Пользовательским интерфейсом программы называется средство общения пользователя с программой. Форма — это прямоугольник с текстовыми полями, кнопками, переключателями и другими элементами управления, знакомыми пользователям Microsoft Office. При изучении VB с помощью данной книги рекомендуем тщательно прорабатывать на компьютере приведенные в ней программы. Рекомендуем также выполнять все задания и чаще использовать такие мощные средства обучения, как отладчик программ VB, макрорекордер Excel и справочные системы Excel и VB.
Хочу всё знать. Язык Visual Basic | GeekBrains
Способ прокачать свой Windows.
https://d2xzmw6cctk25h.cloudfront.net/post/1163/og_cover_image/a72a77eb995086f5da41a0968d436bf8
В 1964 году на свет появился язык BASIC. Он разрабатывался для учебных целей, чтобы студенты вузов с помощью простых алгоритмов изучать программирование. BASIC стал настоящим прорывом в образовании, а в реальной жизни программисты соревновались в создании диалектов. Среди очарованных языком гиков оказался Билл Гейтс. В 13 лет он написал на нем свою первую программу, в 20 — зарабатывал деньги реализацией версии Altair BASIC, разработанной им совместно с Полом Алленом.
В 80-е годы популярность BASIC пошла на спад. Новые языки программирования избавились от сложного синтаксиса, при этом их возможности возросли. И только Microsoft продолжал гнуть свою линию, выпустив сначала еще один бестселлер QBasic, а потом и героя сегодняшнего текста — Visual Basic.
Краткая справка
Первые версии Visual Basic не снискали успеха среди разработчиков. Графический интерфейс, а потом и подсветка синтаксиса являлись едва ли не единственным отличием от QBasic. Microsoft начала вносить значительные перемены лишь с версии 3.0. В комплектации Professional разработчики получили возможность работать с базой данных Access, графические возможности позволяли работать с языком даже не программистам. Кроме того, повысилось быстродействие и упростилась установка ПО.
В 1995 году свет увидел Windows 95, вместе с которым захватывать мировое господство отправился Visual Basic 4.0. Здесь появился полноценный компилятор, возможность создавать 32 и 16-разрядные приложения, увеличилась скорость работы. В 1998 году вышла последняя версия традиционного Visual Basic. Далее компания Microsoft изменила концепцию, пустив развитие языка по двум направлениям: VB на платформе .NET и адаптированные версии для решения локальных задач (VBA, VBScript, eVB).
Visual Basic в наши дни
VB — инструмент для быстрого создания Windows-приложений. После смены концепции язык обрел:
- поддержку ООП с конструкторами, деструкторами и наследованием;
- свободную многопоточность;
- компиляцию в байт-код, исполняемую при помощи CLR;
- структурную обработку исключений;
Но главное удобство — платформа .NET. Это означает, что теперь разработчики имеют доступ к огромному количеству библиотек платформы для работы с БД, графикой, формами, безопасностью и вебом.
Другим популярным наследником является Visual Basic for Applications (VBA). Это урезанный VB 6.0 для обработки макросов, создания скриптов, который упрощает работу внутри ОС.
В AutoCAD, CorelDraw, SolidWorks и, конечно же, Microsoft Office вы можете экспортировать данные, структурировать информацию, подключать БД. Даже на бытовом уровне вам пригодится умение создавать автозаполняемые формы, вытягивать информацию в один клик из Excel. В работе, не обязательно связанной с программированием, VBA упростит создание технических документов, чертежей и планов.
Литература
Обучение языку лучше начинать с VBA. Во-первых, он проще, во-вторых, целевые продукты вам прекрасно известны, в-третьих, ограничения позволят вам сконцентрироваться на языке. Считается, что для изучения VBA вам понадобится 30 часов. Фактически — не более 15. Можете взять за основу одну из следующих книг:
Программировать на Visual Basic .NET сложнее, но и интереснее. Времени и справочных ресурсов потребуется больше:
На годы обращать внимания не стоит, здесь важнее практические навыки.
Заключение
Современный Visual Basic слабо напоминает язык, изобретенный более 50 лет назад. Он сохранил простоту, но оброс большим количеством функций и возможностей. А так как Microsoft продолжает работать над платформой .NET, то на ближайшие лет 10 он останется полезным инструментом для любого программиста.
|
|
Excel VBA Tutorial для начинающих: обучение за 3 дня
- Details
Это руководство по Excel VBA для начинающих содержит подробные уроки для изучения основ VBA Excel и VBA. Это руководство по Visual Basic для приложений Excel охватывает все основы, а также расширенные концепции VBA для начинающих.
Что такое VBA?
VBA означает Visual Basic для приложений. Это комбинация языка программирования Microsoft Visual Basic, управляемого событиями, с приложениями Microsoft Office, такими как Microsoft Excel.
VBA позволяет автоматизировать различные действия в Excel, такие как создание отчетов, подготовка диаграмм и графиков, выполнение вычислений и т. Д. Это действие автоматизации также часто называют макросом. Таким образом, это помогает пользователям сэкономить время, потраченное на выполнение повторяющихся шагов.
Вот что мы изучаем в курсе
ВведениеУчебное пособие | Как писать макросы в Excel: пошаговое руководство для начинающих |
Учебное пособие | VBA в Excel: что такое визуальное Базовый для приложений, Как использовать |
Учебное пособие | Переменные VBA, типы данных и объявление констант VBA в Excel |
Учебное пособие | Массивы Excel VBA: что такое, как использовать и типы массивов в VBA |
Учебное пособие | Элементы управления VBA: элемент управления формой VBA и элементы управления ActiveX в Excel |
Учебное пособие | Арифметические операторы VBA: умножение, деление и сложение |
Учебное пособие | Строковые операторы VBA | Функции управления строками VBA |
Учебное пособие | Операторы сравнения VBA: не равно, меньше или равно |
Учебное пособие | Логические операторы VBA: И, ИЛИ, НЕ |
Учебное пособие | Подпрограмма Excel VBA: как вызвать Sub в VBA с примером |
Учебное пособие | Учебное пособие по функциям Excel VBA: возврат, вызов, примеры |
Учебное пособие | Excel VBA Range Object |
Зачем изучать Excel VBA?
Excel VBA позволяет использовать английские операторы для написания инструкций по созданию различных приложений.Excel VBA прост в освоении, и у него простой в использовании пользовательский интерфейс, в котором вам просто нужно перетаскивать элементы управления интерфейса. Это также позволяет вам улучшить функциональность Excel, заставив его вести себя так, как вы хотите.
Для чего используется VBA?
VBA используется как для личного, так и для коммерческого использования. Вы можете автоматизировать повседневные рутинные задачи, используя простые макросы VBA для личного использования. Для использования в бизнесе вы можете создавать надежные программы и использовать возможности Excel в своих пользовательских программах с помощью VBA.
Что необходимо для изучения руководства по VBA Excel?
Ничего! Это обучение Excel VBA предполагает, что вы абсолютный новичок в VBA. Однако желательно, чтобы вы знали основы Excel и как работают функции в Excel, это повысит вашу скорость обучения и понимания.
Что вы узнаете из этого руководства по Excel VBA?
В этом руководстве по Excel VBA вы изучите все основы VBA, такие как введение в макросы, типы данных VBA, переменные, массивы и т. Д.Вы также узнаете расширенные концепции Excel VBA, такие как элемент управления формой VBA Excel, элемент управления ActiveX, операторы VBA, подпрограммы, функции, объекты, парсинг веб-страниц с помощью VBA и многие другие интересные темы.
Learn VBA Online — Учебное пособие для начинающих (бесплатное и интерактивное)
Строки и столбцы
Давайте рассмотрим несколько примеров, касающихся строк и столбцов в VBA.
Чтобы получить номер строки ячейки:
row_num = диапазон ("a3").ряд
Это не особенно полезно, если вы жестко запрограммировали диапазон «A3» (номер строки вам уже известен). Вместо этого потренируйтесь с именованным диапазоном:
1. Получите номер строки именованного диапазона «drate» и назначьте его переменной «row_num» .row_num = Range («drate»). Строка
Субмакрос1 ()
Уменьшить row_num как Long
Концевой переводник
Теперь используйте .column, чтобы получить номер столбца.
2. Получите номер столбца именованного диапазона «drate» и присвойте его переменной «col_num».col_num = Диапазон («скорость»). Столбец
Объекты строк и столбцов
Вы уже знаете об объектах Range, Worksheet и Workbook. Вам также могут быть полезны объекты «Строки» и «Столбцы».
Этот фрагмент кода удалит строки 2 и 3
Строки ("2: 3"). Удалить
Ваша очередь:
3. Удалите столбцы «H: I». Столбцы («H: I»). Удалить
Вы также можете вставлять строки и столбцы:
Колонны ("H"). Вставить
4.Вставить строку после строки 3Rows (4).
Ссылочные строки и столбцы с объектом диапазона
В качестве альтернативы вы можете ссылаться на целые столбцы и строки, добавив «.EntireColumn» или «.EntireRow» после ссылки на Range.
диапазон ("b3"). CompleteColumn.insert
5. Вставьте строку под диапазоном «C4», используя «CompleteRow» .Range («C5»). CompleteRow.Insert.
Скрытие и отображение строк и столбцов
Строки и столбцы имеют свойство, называемое «скрытым», для которого установлено значение ИСТИНА или ЛОЖЬ.Чтобы скрыть строку:
строки ("a"). Hidden = true
или
диапазон ("a1"). Allrow.hidden = true
6. Показать столбцы B и C.Range («B: C»). CompleteColumn.Hidden = False
Счетчик
Метод .Count используется для подсчета количества ячеек в диапазоне.
n = диапазон ("данные"). Count
7. Подсчитайте количество ячеек в диапазоне «import_data» и присвойте результат переменной «n» .n = Range («import_data»).Считать
Суб-макрос1 ()
Уменьшить до длинного
Концевой переводник
Копирование, вставка и специальная вставка
Чтобы скопировать диапазон «A1» и вставить в диапазон «B1»:
Диапазон ("A1"). Диапазон копирования ("B1")
8. Скопируйте диапазон «B3» в диапазон «C3» Диапазон («B3»). Копируйте диапазон («C3»)
Специальная вставка позволяет вставлять только определенные свойства ячейки вместо всех свойств ячейки (например, только значения ячейки). При использовании специальной вставки вы должны использовать две строки кода:
Диапазон ("A1").Скопируйте диапазон
("A2"). PasteSpecial Paste: = xlPasteFormats
9. Скопируйте диапазон «A1» и вставьте форматы в диапазон «B1» Range («A1»). Скопируйте диапазон («B1»). PasteSpecial Paste: = xlPasteFormats
Субмакрос1 ()
Диапазон («A1»). Копировать Диапазон («B1»). PasteSpecial Paste: = xlPasteFormats
Концевой переводник
Вы также можете использовать xlPasteValues, xlPasteFormulas или любой из параметров, доступных вам в специальном меню «Вставить»:
R1C1 Ссылка на ячейки и объект
Ранее мы познакомили вас с тем, как ссылаться на ячейки в Excel с помощью объекта Range.С помощью объекта Range мы научили вас ссылаться на ячейки, обращаясь к их столбцу , букве и номеру строки. Это называется привязкой к ячейкам в стиле A1. Вместо этого вы можете использовать ссылки в стиле R1C1, где вы можете ссылаться на столбец номер вместо его буквы. Это очень полезно, как мы увидим ниже. Пример:
диапазон («R3C2»)
относится к ячейке «B3». Чтобы использовать ссылку в стиле R1C1, введите «R», за которым следует номер строки, и «C», за которым следует номер столбца.
10. Используйте объект диапазона и ссылку стиля R1C1 для ссылки на ячейку «D4». Диапазон («R4C4»)
Объект Cells предоставляет вам еще одну возможность ссылаться на ячейки с помощью номеров столбцов и строк. При использовании объекта ячеек сначала введите номер строки, затем введите номер столбца. Пример:
ячейки (3,2)
относится к ячейке «B3».
11. Используйте объект cells, чтобы присвоить значение 4 ячейке «E2» .Cells (2,5) .Value = 4.
Найти последнюю строку или столбец
Одна из частых проблем при работе с VBA — определение подходящих диапазонов для вашей работы.Например, у вас есть несколько столбцов данных, и вы хотите добавить дополнительный столбец расчетов. В какой столбец вы должны поместить свои расчеты? Как далеко должны зайти ваши расчеты (в какой строке)? К счастью, VBA предоставляет нам несколько полезных команд, которые могут нам помочь.
Excel хранит запись о последней использованной ячейке на каждом листе, которая называется «Используемый диапазон». Используемый диапазон помогает минимизировать размер файла и время расчета, сообщая Excel игнорировать все ячейки за пределами используемого диапазона.Вы можете ссылаться на используемый диапазон в VBA, чтобы найти последнюю использованную ячейку.
lrow = Activesheet.UsedRange.row
Этот код находит последнюю использованную строку в Activesheet и назначает ее переменной «lrow»
12. Найдите последний использованный столбец на активном листе и назначьте его переменной «lcol» lcol = Activesheet.UsedRange.Column.
К сожалению, нужно быть осторожным, полагаясь на используемый диапазон. Он не всегда дает ответ, которого вы ожидаете.Следует иметь в виду пару вещей:
- Используемый диапазон пересчитывается только при сохранении книги. Если вы удаляете строки, столбцы или данные, вам нужно будет сохранить книгу, прежде чем эти изменения отразятся в используемом диапазоне.
- Используемый диапазон может подсчитывать форматирование. Даже если значение ячейки пустое, если ячейка отформатирована, она будет учитываться в используемом диапазоне. Обязательно используйте .clear вместо .clearcontents, если вы хотите удалить ячейки из используемого диапазона. Вы также можете удалить целые строки или столбцы.
UsedRange находит последнюю использованную ячейку на всем листе. Вместо этого вы можете найти последнюю использованную ячейку в строке или столбце. Вам нужно будет использовать метод «.End»:
диапазон ("a3"). Конец (xlDown) .Row
Это эквивалент нажатия клавиш CTRL + стрелка вниз в ячейке «A3». Если вы не знакомы с сочетанием клавиш CTRL + Arrow, вам действительно стоит его изучить. Это огромная экономия времени в Excel. CTRL + стрелка позволяет перейти к последней непустой ячейке в серии или к первой непустой ячейке после серии пустых ячеек.
В приведенном выше примере будет найдена последняя использованная ячейка в столбце A, но только если в столбце A нет пустых ячеек (перед последней использованной ячейкой). Чтобы быть в безопасности, вы должны начать свой .End в нижней части рабочего листа и продвигаться вверх. Вы можете определить диапазон для начала:
диапазон ("a1000000"). Конец (xlUp) .row
Или вы можете использовать более сложный код:
с ActiveSheet
LastRow = .Cells (.Rows.Count, "A"). End (xlUp) .Row
End with
Обратите внимание, что здесь строк.Подсчет
подсчитывает количество строк на листе.
То же самое можно сделать и со столбцами, но синтаксис немного отличается. Вместо xlLeft вы используете xlToLeft и xlToRight.
13. Найдите последний использованный столбец в строке 1 (подсказка начинается с ячейки «AZ1»). Диапазон («AZ1»). Конец (XlToLeft) .column
Смещение и изменение размера
Смещениепозволяет смещать диапазон ячеек на количество строк или столбцов
диапазон ("a1"). Смещение (2,1) .select
Это выберет ячейку B3 (2 вниз и 1 справа от ячейки «A1»).
Вы можете найти смещение полезным при циклическом переключении диапазонов ячеек
Для каждой ячейки в диапазоне ("a1: b3")
Cell.value = n
Cell.offset (0,1) .value = n + 1
Cell.offset (0,2) .value = n + 2
Следующая ячейка
14. Выберите ячейку «B2» путем смещения от диапазона ячейки «D5» («D5»). Смещение (-3, -2). Выберите
Resize позволяет изменять размер диапазона ячеек до определенного количества строк и столбцов. Он работает очень похоже на смещение. Важно помнить, что при изменении размера указывается общее количество строк и столбцов в новом диапазоне, а не количество строк и столбцов, которые нужно добавить (или вычесть) к существующему диапазону.Изменение размера (0,0) приведет к ошибке. Чтобы изменить размер до одной ячейки, используйте Resize (1,1). Также имейте в виду, что ваша начальная ячейка всегда будет самой верхней левой ячейкой в диапазоне.
15. Выберите диапазон «A2: B5», используя Изменить размер с «A2» в качестве отправной точки. Диапазон («A2»). Resize (4,2). Выберите
Вы даже можете использовать Resize и Offset в одной строке кода:
диапазон ("a1"). Offset (1,1) .resize (2,2) .select
Формула R1C1
В первой главе вы познакомились со свойством формулы, в котором вы можете назначить формулу ячейке:
диапазон ("a1: a10").формула = "= b1"
Другой вариант формулы — свойство FormulaR1C1. Следующий код сгенерирует результат, идентичный приведенному выше:
диапазон ("a1: a10"). FormulaR1C1 = "= R1C2"
Ячейка «B1» — это строка 1 столбца 2 (R1C2).
Попробуйте сами:
16. Задайте для свойства formulaR1C1 диапазона «B1: B10» значение, равное ячейке «C8» .range («B1: B10»). FormulaR1C1 = «= R8C3»
Когда вы используете любой из этих методов, ваша формула «жестко запрограммирована», то есть формула будет применяться одинаково ко всему диапазону ячеек.В первом примере выше все ячейки от «A1» до «A10» будут иметь формулу «= b1».
Вместо этого часто вы захотите использовать «относительные ссылки» со свойством formulaR1C1 R [1] C [1]
. При использовании относительных ссылок ссылки на формулы пропорциональны каждой конкретной ячейке. Они не жестко запрограммированы. Таким образом, при применении формулы вниз по столбцу ячейка A1 = B1, ячейка A2 = B2, ячейка A3 = B3 и т. Д .:
диапазон ("a1: a10"). Formular1c1 = "= RC [1]"
В этом примере «[1]» после «C» обозначает первый столбец справа от ячейки, содержащей формулу.В скобках указаны «относительные» ссылки. При использовании относительных ссылок вы указываете, сколько строк / столбцов нужно смещать от текущей ячейки. Не имея ничего после «R», вы говорите VBA, чтобы он смотрел на ту же строку. Если вы используете числа без скобок, вы используете обычные ссылки на ячейки R1C1, о которых мы узнали ранее. Эти ссылки жестко запрограммированы и не будут перемещаться.
17. Задайте формулы в диапазоне «B1: B5», чтобы равняться ячейке непосредственно слева (совет: используйте отрицательное значение 1) диапазон («B1: B5»).формулаR1C1 = «= RC [-1]»
Вероятно, вы будете чаще всего использовать стиль R [1] C [1] при работе с формулами ячеек в VBA. Эту технику сложно запомнить, и в ней очень легко сделать ошибку. Мы рекомендуем записать макрос, ввести формулу непосредственно в Excel, а затем скопировать / вставить эту записанную формулу в основную процедуру.
Activecell
Activecell ссылается на текущую активную ячейку в VBA.
18. Выберите ячейку в одном столбце справа от Activecell.Activecell.Offset (0,1) .Select
листов
До сих пор мы в основном использовали объект Sheets, чтобы определить, с каким листом работать. Теперь мы узнаем о методах и свойствах рабочего листа.
Скрытие и отображение листов
Чтобы скрыть лист:
листа («данные»). Visible = false
Теперь попробуйте показать лист тем же способом:
19. Показать «данные» листа. Таблицы («данные»). Visible = True
Свойство Visible фактически имеет третий вариант: xlSheetVeryHidden.Помимо скрытия вкладки рабочего листа, ее нельзя отобразить из Excel. Он исчезнет из списка листов, и его можно будет отобразить только с помощью VBA.
20. Сделайте лист «Данные» очень скрытым. Таблицы («данные»). Visible = xlSheetVeryHidden
Название листа
Имя рабочего листа изменить легко:
листа ("data"). Name = "data_old"
21. Переименуйте лист «input» в «Start Here» .Sheets («inputs»). Name = «Start Here»
Защита и снятие защиты листов
Рабочие листы могут быть защищены паролем, чтобы предотвратить случайное повреждение книги пользователем.Если вы защищаете лист паролем, вам понадобится код, чтобы снять защиту с листа, прежде чем он сможет вносить изменения в какие-либо защищенные свойства, и повторно защитить лист после завершения выполнения кода.
Для защиты рабочего листа:
листа («кальки»). Защитить «паролем»
Вместо «пароля» введите фактический пароль, или вы можете фактически проигнорировать аргумент пароля, если вы хотите защитить лист, но не хотите запрашивать пароль для его снятия.
Чтобы снять защиту с листа, используйте тот же синтаксис.
22. Снимите защиту с листа с именем «calcs» паролем «abc123». Таблицы («calcs»). Снимите защиту с «abc123»
Метод Protect на самом деле имеет много других аргументов, указывающих, что пользователь может и что не может делать с листом. Лучший способ получить нужные вам параметры — это записать макрос с соответствующими настройками, а затем скопировать и вставить записанный код в свою процедуру.
Учебное пособие поVBA — полное руководство для начинающих
Добро пожаловать в первую часть руководства Ultimate VBA для начинающих.
Если вы новичок в VBA, убедитесь, что вы прочитали сообщение «Как создать макрос с нуля в Excel», чтобы ваша среда была правильно настроена для запуска макросов.
Из этого руководства по Excel VBA вы узнаете, как создавать реальные макросы. Основное внимание уделяется обучению на практике. В этом руководстве есть примеры кодирования и упражнения, которые помогут вам на вашем пути. Вы найдете викторину в конце этого руководства по VBA. Вы можете использовать это, чтобы проверить свои знания и узнать, сколько вы узнали.
В первой части этого руководства по VBA мы сконцентрируемся на основах создания макросов Excel. В следующих разделах представлены результаты обучения и советы по началу работы с VBA.
«Самое благородное удовольствие — это радость понимания». — Леонардо да Винчи
Результаты обучения для этого учебника VBA
Когда вы закончите это руководство по VBA, вы сможете:
- Создать модуль
- Создать подписку
- Понимание разницы между модулем и вспомогательным устройством
- Запуск кода в суб-
- Записать значение в ячейку
- Скопируйте значение из одной ячейки в другую
- Копировать значения из одного диапазона ячеек в другой
- Копирование значений между разностными листами
- Проверьте результат с помощью окна немедленного доступа
- Пишите код быстрее с помощью инструкции With
- Создание и использование переменных
- Копировать из ячейки в переменную и наоборот
Прежде чем мы начнем, давайте рассмотрим несколько простых советов, которые помогут вам в вашем путешествии.
Шесть убийственных советов для этого руководства по VBA
- Практика, практика, практика — не пытайтесь учиться, читая. Попробуйте примеры и упражнения.
- Введите примеры кода вместо копирования и вставки — это поможет вам лучше понять код.
- Имейте четко определенную цель для изучения VBA. Один вы узнаете, когда дойдете до него.
- Не пугайтесь ошибок. Они помогают писать правильный код.
- Начните с создания простых макросов для своей работы.Затем создавайте более сложные, когда становитесь лучше.
- Не бойтесь прорабатывать каждое учебное пособие более одного раза. Чем больше вы это сделаете, тем глубже будут внедрены знания.
Основные термины, используемые в этом руководстве по VBA
Макросы Excel : Макрос — это группа программных инструкций, которые мы используем для создания автоматизированных задач.
VBA : VBA — это язык программирования, который мы используем для создания макросов. Это сокращение от Visual Basic для приложений.
Строка кода : Это инструкция VBA. В общем, они выполняют одну задачу.
Подложка : Подложка состоит из одной или нескольких строк кода. Когда мы «запускаем» подпрограмму, VBA просматривает все строки кода и выполняет соответствующие действия. Макрос и подпрограмма по сути одно и то же.
Модуль : Модуль — это просто контейнер для наших сабвуферов. Модуль содержит подпрограммы, которые, в свою очередь, содержат строки кода. Нет ограничений (в разумных пределах) на количество модулей в книге или количество подпрограмм в модуле.
Редактор VBA : Здесь мы пишем наш код. Нажатие Alt + F11 переключает между Excel и редактором Visual Basic. Если редактор Visual Basic в данный момент не открыт, нажатие Alt + F11 откроет его автоматически.
На снимке экрана ниже показаны основные части редактора Visual Basic:
Редактор Visual Basic
Совет для учебных занятий по VBA
Когда вы работаете над действиями в этом учебном пособии по VBA, рекомендуется закрыть все другие книги Excel.
Создание модуля
В Excel мы используем язык VBA для создания макросов. VBA означает Visual Basic для приложений.
Когда мы используем термин Макросы Excel , мы имеем в виду VBA. Термин макрос — это, по сути, другое название подпрограммы. Каждый раз, когда вы видите термины «Макросы Excel» или «VBA», просто помните, что они относятся к одному и тому же.
В VBA мы создаем строки инструкций для обработки VBA. Мы помещаем строки кода в подпрограмму.Эти сабвуферы хранятся в модулях.
Мы можем разместить наши подпрограммы в модуле рабочего листа. Однако мы обычно размещаем здесь код только для событий рабочего листа.
В VBA мы создаем новые модули для хранения большинства наших подпрограмм. Итак, для нашего первого упражнения давайте продолжим и создадим новый модуль.
- Откройте новую пустую книгу в Excel.
- Откройте редактор Visual Basic (Alt + F11).
- Перейдите в окно Project — VBAProject слева (Ctrl + R, если оно не отображается).
- Щелкните книгу правой кнопкой мыши и выберите Вставить , а затем Модуль .
- Щелкните Module1 в окне Project — VBAProject .
- В окне Properties в нижнем левом углу (F4, если не отображается) измените имя модуля с module1 на MyFirstModule.
Модуль — это место, где вы размещаете свой код. Это просто контейнер для кода, и вы не используете его ни для чего другого.
Вы можете думать о модуле как о разделе в книжном магазине. Его единственная цель — хранить книги, а наличие похожих книг в определенном разделе делает магазин в целом более организованным.
Главное окно (или окно кода) — это место, где написан код. Чтобы просмотреть код любого модуля, включая рабочие листы, можно дважды щелкнуть элемент в окне «Проект — VBAProject ».
Давайте сделаем это сейчас, чтобы вы могли ознакомиться с окном кода.
- Откройте новую книгу и создайте новый модуль, как в предыдущем упражнении.
- Дважды щелкните новый модуль в окне Project — VBAProject .
- Откроется окно кода для этого модуля. Вы увидите имя в строке заголовка Visual Basic.
У вас может быть столько модулей, сколько вам нужно в книге, и столько подпрограмм, сколько вам нужно в модуле. Вам решать, как вы хотите назвать модули и как вы организуете свои подпрограммы в своих модулях.
В следующей части этого руководства по VBA мы рассмотрим использование подпрограмм.
Как использовать Subs
Строка кода — это инструкции, которые мы передаем VBA. Мы группируем строки кода в подгруппу . Мы размещаем эти сабвуферы в модуле.
Мы создаем подпрограмму, чтобы VBA обрабатывал инструкции, которые мы ей даем. Для этого мы получаем VBA на Запускаем sub. Когда мы выбираем Run Sub из меню, VBA просматривает строки кода в подпрограмме и обрабатывает их по одной в том порядке, в котором они были размещены.
Давайте создадим подписку.Затем мы посмотрим на строки кода и то, что они делают.
- Возьмите модуль, который вы создали в последнем упражнении, или создайте новый.
- Выберите модуль, дважды щелкнув его в окне «Проект — VBAProject ». Убедитесь, что имя отображается в строке заголовка.
- Введите следующую строку в окно кода и нажмите ввод.
Sub WriteValue
- VBA автоматически добавит вторую строку End Sub .Мы помещаем наш код между этими двумя строками.
- Между этими двумя строками введите строку
Sheet1.Range ("A1") = 5
Вы создали подписку! Возьмем его на тест-драйв.
- Щелкните вспомогательный элемент, чтобы убедиться, что курсор находится там. Выберите в меню Run-> Run Sub / Userform (или нажмите F5).
Примечание. Если вы не поместите курсор в подпрограмму, VBA отобразит список доступных для запуска подпрограмм. - Откройте Excel (Alt + F11). Вы увидите значение 5 в ячейке A1 .
- Добавьте каждую из следующих строк в подпрограмму, запустите подпрограмму и проверьте результаты.
Sheet1.Range ("B1") = "Какой-то текст" Sheet1.Range ("C3: E5") = 5,55 Sheet1.Range ("F1") = Сейчас
Вы должны увидеть «Некоторый текст» в ячейках B1 , 5.55 в ячейках от C3 до E5 и текущее время и дату в ячейке F1 .
Запись значений в ячейки
Давайте посмотрим на строку кода, которую мы использовали в предыдущем разделе этого руководства по VBA.
Лист1.Диапазон ("A1") = 5
Мы также можем написать эту строку так:
Sheet1.Range ("A1"). Значение = 5
Однако в большинстве случаев нам не нужно использовать значение , значение , поскольку это свойство по умолчанию.
Мы используем такие строки кода, чтобы присваивать (. Т.е. копировать) значений между ячейками и переменными.
VBA оценивает справа от знака равно и помещает результат в переменную / ячейку / диапазон, которая находится слева от знака равенства.
В строке указано «левая ячейка \ переменная \ диапазон теперь будет равна результату элемента справа» .
Давайте посмотрим на часть кода слева от знака равенства
Sheet1.Range ("A1") = 5
В этом коде Sheet1 относится к кодовому имени рабочего листа. Мы можем использовать кодовое имя только для ссылки на листы в книге, содержащие код. Мы рассмотрим это в разделе «Кодовое имя рабочего листа».
Когда у нас есть ссылка на рабочий лист, мы можем использовать свойство Range рабочего листа для записи в диапазон из одной или нескольких ячеек.
Используя такую строку, мы можем скопировать значение из одной ячейки в другую.
Вот еще несколько примеров:
'https://excelmacromastery.com/ Sub CopyValues () 'копирует значение из C2 в A1 Sheet1.Range ("A1") = Sheet1.Range ("C2") 'копирует значение из D6 в A2 Лист1.Диапазон ("A2") = Sheet1.Range ("D6") 'копирует значение из B1 на лист 2 в A3 на листе 1 Sheet1.Range ("A3") = Sheet2.Range ("B1") 'записывает результат D1 + D2 в A4 Sheet1.Range ("A4") = Sheet2.Range ("D1") + Sheet2.Range ("D2") Конец подписки
Теперь ваша очередь попробовать несколько примеров. Копирование между ячейками является фундаментальной частью Excel VBA, поэтому понимание этого действительно поможет вам на пути к мастерству VBA.
- Создайте новую книгу Excel.
- Вручную добавьте значения в ячейки на листе Sheet1 следующим образом: 20 в C1 и 80 в C2.
- Создайте новую подписку с именем Act4 .
- Напишите код, чтобы поместить значение из C1 в ячейку A1.
- Введите код, чтобы поместить результат C2 + 50 в ячейку A2.
- Напишите код для умножения значений в ячейках C1 и C2. Поместите результаты в ячейку A3.
- Выполните код. Ячейки должны иметь значения A1 20 , A2 130 и A3 1600 .
'https://excelmacromastery.com/ Sub Act4 () Sheet1.Range ("A1") = Sheet1.Range ("C1") Sheet1.Range ("A2") = Sheet1.Range ("C2") + 50 Sheet1.Range ("A3") = Sheet1.Range ("C1") * Sheet1.Range ("C2") Конец подписки
Ячейки в разных листах
Мы можем легко копировать ячейки на разных листах.Это очень похоже на то, как мы копируем ячейки на том же листе. Единственная разница — это имена рабочих листов, которые мы используем в нашем коде.
В следующем упражнении «Учебник по VBA» мы собираемся писать между ячейками на разных листах.
- Добавьте в книгу новый лист из последнего действия. Теперь у вас должно быть два рабочих листа с именами Sheet1 и Sheet2.
- Создайте новый дополнительный вызов Act5 .
- Добавьте код, чтобы скопировать значение из C1 на Sheet1 в ячейку A1 на Sheet2 .
- Добавьте код, чтобы поместить результат из C1 + C2 на Sheet1 в ячейку A2 на Sheet2 .
- Добавьте код, чтобы поместить результат из C1 * C2 на Sheet1 в ячейку A3 на Sheet2 .
- Введите код в суб (F5). Ячейки на листе Sheet2 должны иметь следующие значения:
A1 20 , A2 100 и A3 1600
Sub Act5 () Лист2.Диапазон ("A1") = Sheet1.Range ("C1") Sheet2.Range ("A2") = Sheet1.Range ("C1") + Sheet1.Range ("C2") Sheet2.Range ("A3") = Sheet1.Range ("C1") * Sheet1.Range ("C2") Конец подписки
Кодовое название рабочего листа
До сих пор в действиях мы использовали имена рабочего листа по умолчанию, такие как Sheet1 и Sheet2 . Считается хорошей практикой давать этим листам более значимые имена.
Мы делаем это, изменяя кодовое имя рабочего листа.Давайте посмотрим на кодовое имя и на то, что это такое.
Когда вы посмотрите в окне Project — VBAProject новую книгу, вы увидите Sheet1 как внутри, так и за пределами круглых скобок:
- Sheet1 слева — это кодовое имя рабочего листа.
- Sheet1 справа (в скобках) — это имя рабочего листа. Это имя, которое вы видите на вкладке в Excel.
Кодовое имя имеет следующие атрибуты
- Мы можем использовать его для прямой ссылки на рабочий лист, как мы, например,
Sheet1.Range ("A1")
Примечание: Мы можем использовать кодовое имя только в том случае, если рабочий лист находится в той же книге, что и наш код.
- Если имя рабочего листа изменено, наш код все равно будет работать, если мы используем кодовое имя для ссылки на лист.
Имя рабочего листа имеет следующие атрибуты
- Чтобы ссылаться на рабочий лист, используя имя рабочего листа, нам нужно использовать коллекцию рабочих листов книги. например
ThisWorkbook.Worksheets ("Sheet1"). Range ("A1")
- Если имя рабочего листа изменилось, нам нужно изменить имя в нашем коде.Например, если мы изменили имя нашего листа с Sheet1 на Data , то нам нужно будет изменить приведенный выше код следующим образом:
ThisWorkbook.Worksheets ("Данные"). Диапазон ("A1")
Мы можем изменить только кодовое имя в окне Properties .
Мы можем изменить имя рабочего листа как на вкладке рабочего листа в Excel, так и в окне Properties .
В следующем упражнении мы изменим кодовое имя рабочего листа.
- Откройте новую пустую книгу и перейдите в редактор Visual Basic.
- Щелкните Sheet1 в окне Project — VBAProject (Ctrl + R, если не отображается).
- Перейдите в окно Properties (F4, если не отображается).
- Измените кодовое имя рабочего листа на shReport .
- Создайте новый модуль и назовите его modAct6 .
- Добавьте следующую подпрограмму и запустите ее (F5)
Sub UseCodename () shReport.Диапазон ("A1") = 66 Конец подписки
- Затем добавьте следующую подпрограмму и запустите ее (F5)
Sub UseWorksheetname () ThisWorkbook.Worksheets ("Sheet1"). Range ("B2") = 55 Конец подписки
- Ячейка A1 должна теперь иметь значение 66 , а ячейка B2 должна иметь значение 55 .
- Измените имя рабочего листа в Excel на Отчет i.е. щелкните правой кнопкой мыши вкладку рабочего листа и переименуйте.
- Удалите содержимое ячеек и снова запустите код UseCodename . Код все равно должен работать правильно.
- Снова запустите подпрограмму UseWorksheetname . Вы получите ошибку «Индекс вне допустимого диапазона» . Эта критически звучащая ошибка просто означает, что в коллекции листов нет рабочего листа с именем Sheet1 .
- Измените код следующим образом и запустите его снова. Теперь код будет работать правильно.
Sub UseWorksheetname () ThisWorkbook.Worksheets ("Отчет"). Диапазон ("B2") = 55 Конец подписки
Ключевое слово With
Возможно, вы заметили в этом руководстве по VBA, что нам нужно многократно использовать имя рабочего листа — каждый раз, когда мы обращаемся к диапазону в нашем коде.
Представьте, что есть более простой способ написать код. Где мы могли бы просто упомянуть имя рабочего листа один раз, и VBA применился бы к любому диапазону, который мы использовали после этого.Хорошая новость в том, что мы можем сделать именно это, используя оператор With .
В VBA мы можем взять любой элемент до точки и использовать для него оператор With . Давайте перепишем код, используя оператор With .
Следующий код очень похож на тот, который мы использовали до сих пор в этом руководстве по VBA:
'https://excelmacromastery.com/ Sub WriteValues () Sheet1.Range ("A1") = Sheet1.Range ("C1") Лист1.Диапазон ("A2") = Sheet1.Range ("C2") + 50 Sheet1.Range ("A3") = Sheet1.Range ("C1") * Sheet1.Range ("C2") Конец подписки
Давайте обновим этот код с помощью оператора With :
'https://excelmacromastery.com/ Sub UsingWith () С Sheet1 .Range ("A1") = .Range ("C1") .Range ("A2") = .Range ("C2") + 50 .Range ("A3") = .Range ("C1") * .Range ("C2") Конец с Конец подписки
Мы используем с и рабочий лист, чтобы начать раздел.Везде, где VBA находит точку, он знает, как использовать рабочий лист перед ней.
Мы можем использовать оператор With с другими типами объектов в VBA, включая книги, диапазоны, диаграммы и т. Д.
Мы обозначаем конец раздела на , используя строку Конец на .
Отступы (табуляция) кода
Вы заметите, что строки кода между началом и концом С статусы помещены табуляцией один раз вправо.Мы называем это отступом кодом.
Мы всегда делаем отступ в коде между разделами VBA, у которых есть начальная и конечная строки. Примерами их являются подпрограммы, оператор With, оператор If и цикл For.
Вы можете вставить строки кода справа, выбрав соответствующие строки кода и нажав клавишу Tab . Нажатие Shift и Tab приведет к переходу влево.
Табуляция (или отступ) полезна, потому что она делает наш код более читабельным.
- Перепишите следующий код, используя оператор With .Не забудьте сделать отступ в коде.
'https://excelmacromastery.com/ Sub UseWith () Sheet1.Range ("A1") = Sheet1.Range ("B3") * 6 Sheet1.Cells (2, 1) = Sheet1.Range ("C2") + 50 Sheet1.Range ("A3") = Sheet2.Range ("C3") Конец подписки
Дополнительное использование с () С Sheet1 .Range ("A1") = .Range ("B3") * 6 .Cells (2, 1) = .Range ("C2") + 50 .Диапазон ("A3") = Sheet2.Range ("C3") Конец с Конец подписки
Копирование значений между несколькими ячейками
Вы можете скопировать значения из одного диапазона ячеек в другой диапазон ячеек следующим образом:
Sheet2.Range ("A1: D4") = Sheet2.Range ("G2: I5"). Значение
Очень важно заметить, что мы используем свойство Value исходного диапазона. Если мы не укажем это значение, в целевой диапазон будут записаны пустые значения.
'исходные ячейки останутся пустыми, потому что значение отсутствует Sheet2.Range ("A1: D4") = Sheet2.Range ("G2: I5")
Приведенный выше код — очень эффективный способ копирования значений между ячейками. Когда люди плохо знакомы с VBA, они часто думают, что им нужно использовать какую-либо форму выбора, копирования и вставки для копирования значений ячеек. Однако они медленные, громоздкие и ненужные.
Важно, чтобы диапазоны назначения и источника имели одинаковый размер.
- Если целевой диапазон меньше, будет заполнена только ячейка в этом диапазоне.Это отличается от копирования / вставки, когда нам нужно указать только первую целевую ячейку, а Excel заполнит остальные.
- Если диапазон назначения больше, дополнительные ячейки будут заполнены кодом # N / A .
- Создайте новую пустую книгу в Excel.
- Добавьте новый лист в эту книгу, чтобы было два листа — Sheet1 и Sheet2.
- Добавьте следующие данные в диапазон C2: E4 на Листе 1
- Запишите код для копирования данных из Sheet1 в диапазон B3: D5 на Sheet2.
- Введите код (F5).
- Удалите результаты, а затем измените диапазон назначения, чтобы он был меньше исходного диапазона. Запускаем еще раз и проверяем результаты.
- Удалите результаты, а затем измените диапазон назначения, чтобы он был больше исходного диапазона. Запускаем еще раз и проверяем результаты.
Sub CopyMultipleCells () Sheet2.Range ("B3: D5") = Sheet1.Range ("C2: E4"). Значение Конец подписки
Транспонирование диапазона ячеек
Если вам нужно перенести дату (преобразовать из строки в столбец и наоборот), вы можете использовать WorksheetFunction Transpose .
Поместите значения от 1 до 4 в ячейки от A1 до A4. Следующий код запишет значения с E1 на h2
Sheet1.Range ("E1: h2") = WorksheetFunction.Transpose (Sheet1.Range ("A1: A4"). Значение)
Следующий код будет читать из E1: h2 в L1: L4
Sheet1.Range ("L1: L4") = WorksheetFunction.Transpose (Sheet1.Range ("E1: h2"). Значение)
Вы заметите, что эти строки длинные. Мы можем разделить одну строку на несколько строк с помощью символа подчеркивания (_) e.грамм.
Sheet1.Range ("E1: h2") = _ WorksheetFunction.Transpose (Sheet1.Range ("A1: A4"). Значение)
Sheet1.Range ("L1: L4") = _ WorksheetFunction.Transpose (Sheet1.Range ("E1: h2"). Value)
Как использовать переменные
До сих пор в этом руководстве по VBA мы не использовали переменные. Переменные — неотъемлемая часть каждого языка программирования.
Так что они и зачем они вам нужны?
Переменные подобны ячейкам в памяти.Мы используем их для хранения временных значений во время выполнения нашего кода.
Мы делаем три вещи с переменными
- Объявить (т.е. создать) переменную.
- Сохранить значение в переменной.
- Прочтите значение, хранящееся в переменной.
Типы переменных, которые мы используем, такие же, как типы данных, которые мы используем в Excel.
В таблице ниже показаны общие переменные. Есть и другие типы, но вы будете их редко использовать.Фактически, вы, вероятно, будете использовать Long и String для 90% ваших переменных.
Тип | Детали |
---|---|
Логическое значение | Может быть только истина или ложь |
Валюта | То же, что и десятичное, но только с 4 десятичными знаками |
Дата | Использовать дату / время |
Двойное | Используется для десятичных знаков |
Длинный | Используйте для целых чисел |
Строка | Использовать для текста |
Вариант | VBA определит тип во время выполнения |
Объявление переменных
Прежде чем использовать переменные, мы должны их создать.Если мы этого не сделаем, мы можем столкнуться с различными проблемами.
По умолчанию VBA не требует объявления переменных. Однако мы должны включить это поведение, поскольку оно избавит нас от многих проблем в долгосрочной перспективе.
Чтобы включить «Требовать объявление переменной» , мы добавляем следующую строку в верхнюю часть нашего модуля
Явный вариант
Чтобы VBA автоматически добавлял эту строку, выберите в меню Инструменты-> Параметры и отметьте Требовать объявление переменной .Каждый раз, когда вы создаете новый модуль, VBA будет добавлять эту строку в начало.
Объявить переменную просто. Мы используем следующий формат:
Размер имя_переменной как тип
Мы можем использовать все, что захотим, в качестве имени переменной. Тип — это один из типов, указанных в таблице выше. Вот несколько примеров объявлений
Dim Total As Long Тусклая точка как двойная Тусклая цена как валюта Затенять дату начала как дату Уменьшить имя клиента как строку Dim IsExpired как логическое значение Тусклый элемент как вариант
Чтобы поместить значение в переменную, мы используем тот же тип оператора, который мы ранее использовали для помещения значения в ячейку.То есть утверждение со знаком равенства.
'https://excelmacromastery.com/ Sub DeclaringVars () Dim Total As Long Итого = 1 Тусклая цена как валюта Цена = 29,99 Затенять дату начала как дату Дата начала = # 1/21/2018 # Уменьшить имя клиента как строку CustomerName = "Джон Смит" Конец подписки
- Создайте новую подпрограмму и назовите ее UsingVariables .
- Объявите переменную для хранения счетчика и установите значение 5 .
- Объявите переменную для хранения цены билета и установите значение 99,99 .
- Объявите переменную для хранения страны и установите значение «Испания» .
- Объявите переменную для хранения даты окончания и установите значение 21 марта 2020 года .
- Объявить переменную для сохранения, если что-то завершено. Установите значение Ложь .
Sub с использованием переменных () Тусклый счет как долго count = 5 Тусклая цена билета как валюта ticketprice = 99,99 Тусклая страна как строка country = "Испания" Тусклая дата окончания как дата enddate = # 3/21/2020 # Dim завершается как логическое iscompleted = Ложь Конец подписки
Немедленное окно
УVBA есть отличный инструмент, который позволяет нам проверять наш вывод.Этот инструмент — Немедленное окно. Используя Debug.Print , мы можем записывать значения, текст и результаты вычислений в Immediate Window.
Чтобы просмотреть это окно, вы можете выбрать в меню View-> Immediate Window или нажать Ctrl + G.
Значения будут записаны, даже если непосредственное окно не отображается.
Мы можем использовать Immediate Window для записи наших переменных, чтобы проверить значения, которые они содержат.
Если мы обновим код из последнего действия, мы можем записать значения каждой переменной. Запустите приведенный ниже код и проверьте результат в непосредственном окне (Ctrl + G, если не отображается).
'https://excelmacromastery.com/ Sub WritingToImmediate () Тусклый счет как долго count = 5 Отладка. Количество отпечатков Тусклая цена билета как валюта ticketprice = 99,99 Отладка. Распечатать стоимость билета Тусклая страна как строка country = "Испания" Отлаживать.Страна печати Тусклая дата окончания как дата enddate = # 3/21/2020 # Debug.Print enddate Dim завершается как логическое iscompleted = Ложь Отладка. Печать завершена Конец подписки
Немедленное очень полезно для тестирования вывода, прежде чем мы запишем его на рабочие листы. Мы будем часто использовать его в этих уроках.
Запись между переменными и ячейками
Мы можем записывать и читать значения между ячейками и ячейками, ячейками и переменными, а также переменными и переменными, используя строку присваивания, которую мы уже видели.
Вот несколько примеров
'https://excelmacromastery.com/ ПодпеременныеCells () Dim price1 как валюта, цена2 как валюта 'значение места от A1 до price1 price1 = Sheet1.Range ("A1") 'значение места от цены1 до цены2 цена2 = цена1 'поместите значение из price2 в ячейку b2 Sheet1.Range ("B2") = цена2 'Печатать значения в окне "Немедленное" Debug.Print "Price 1 is" & price1 Отлаживать.Распечатать "Цена 2 есть" & price2 Конец подписки
- Создайте пустую книгу и рабочий лист, чтобы на нем было два листа: Sheet1 и Sheet2.
- Поместите текст «Нью-Йорк» в ячейку A1 на листе Sheet1. Поместите число 49 в ячейку C1 на Листе 2.
- Создайте подпрограмму, которая считывает значения в переменные из этих ячеек.
- Добавьте код для записи значений в окно Immediate.
'https: // excelmacromaster.com / Sub Act10 () Тусклый город как струна city = Sheet1.Range ("A1") Тусклое число по длине number = sheet2.Range ("C1") Debug.Print "Город есть" & город Debug.Print "Число равно" & число Конец подписки
Ошибки несоответствия типа
Вам может быть интересно, что произойдет, если вы используете неправильный тип. Например, что произойдет, если вы прочитаете число 99.55 на тип переменной Long (целое число).
Что происходит, так это то, что VBA делает все возможное, чтобы преобразовать переменную. Поэтому, если мы присвоим число 99,55 типу Long , VBA преобразует его в целое число.
В приведенном ниже коде число округляется до 100.
Dim i As Long я = 99,55
VBA в значительной степени преобразует любые числовые типы, например.
'https://excelmacromastery.com/ Дополнительное преобразование () Тусклый результат Как долго результат = 26.77 результат = "25" результат = 24,55555 результат = "24,55" Dim c как валюта с = 23 c = "23,334" результат = 24,55 c = результат Конец подписки
Однако даже у VBA есть предел. Следующий код приведет к ошибке Type Mismatch , поскольку VBA не может преобразовать текст в число
.'https://excelmacromastery.com/ Дополнительное преобразование () Тусклый результат Как долго результат = "26.77A " Dim c как валюта c = "a34" Конец подписки
Совет: Ошибка «Несоответствие типа » часто возникает из-за того, что пользователь случайно поместил текст в ячейку, которая должна содержать числовые данные.
- Объявите переменную типа Double с именем amount .
- Назначьте значение, которое вызывает ошибку несоответствия типа.
- Запустите код и убедитесь, что произошла ошибка.
Следующее — это один из возможных способов вызвать ошибку.
Dim amount As Double сумма = "а"
Конец задания для руководства по VBA
В этом руководстве мы рассмотрели много вещей. Итак, давайте соберем все это вместе в следующем задании
Учебное пособие Одно задание
Я создал простую рабочую тетрадь для этого задания.Вы можете скачать его по ссылке ниже
Учебное пособие Одна рабочая тетрадь
Откройте книгу заданий. Вы разместите свой код здесь
- Создайте модуль и назовите его Assignment1 .
- Создайте подгруппу с именем Top5Report , чтобы записать данные во все столбцы из первых 5 стран в раздел Top 5 на листе отчета . Это диапазон, начинающийся с B3 на листе Report .Используйте кодовое имя для ссылки на рабочие листы.
- Создайте дополнительный вызов AreaReport , чтобы записать размер всех областей в раздел All the Areas на листе Report . Это диапазон h4: h40. Используйте рабочий лист , имя , чтобы обращаться к рабочим листам.
- Создайте подпрограмму ImmediateReport , как показано ниже, считайте площадь и население из России в две переменные. Выведите численность населения на квадратный километр (население / площадь) в непосредственное окно.
- Создайте новый рабочий лист и назовите его областей . Установите кодовое имя shAreas . Создайте подпрограмму с именем RowsToCols , которая считывает все области в D2: D11 из рабочего листа стран и записывает их в диапазон A1: J1 на новом рабочем листе Области .
'https://excelmacromastery.com/ Sub Top5Report () shReport.Range ("B3: E7") = shCountries.Range ("B2: E6").Значение Конец подписки Sub AreaReport () 'Используйте подчеркивание, чтобы разделить на две строки ThisWorkbook.Worksheets ("Отчет"). Range ("h4: h40") = _ ThisWorkbook.Worksheets ("Страны"). Диапазон ("D2: D29"). Значение Конец подписки Sub ImmediateReport () Тусклая область в течение долгого времени, население в течение долгого времени area = shCountries.Range ("D2") Население = shCountries.Range ("E2") Debug.Print «Население на квадратный километр» и население / площадь Конец подписки Sub RowsToColls () shAreas.Диапазон ("A1: J1"). Значение = _ WorksheetFunction.Transpose (shCountries.Range ("D2: D11"). Value) Конец подписки
Конец учебного задания
Следующая викторина основана на том, что мы рассмотрели в этом руководстве.
Учебное пособие по VBA Один тест
1. Каковы два основных различия между кодовым названием и именем рабочего листа?
- На кодовое имя можно ссылаться непосредственно в коде.
- Для ссылки на имя рабочего листа необходимо использовать коллекцию рабочих листов .
- Код, использующий кодовое имя , по-прежнему будет работать, если имя рабочего листа изменится.
- Код, использующий имя рабочего листа, выдаст ошибку «нижний индекс вне допустимого диапазона», если имя рабочего листа изменится.
2.Какая последняя строка в подпрограмме?
Концевой переходник
3. Какой оператор сокращает наш код, позволяя нам писать объект один раз, но обращаться к нему несколько раз?
Заявление с заявлением
4. Что делает следующий код?
Sheet1.Range ("D1") = результат
Записывает значение переменной result в ячейку D1
5.Что делает следующий код?
Sheet1.Range ("A1: C3") = Sheet2.Range ("F1: h4")
Задает пустой диапазон ячеек от A1 до C3. В коде отсутствует свойство Value . Чтобы скопировать значения, он должен выглядеть следующим образом
Sheet1.Range ("A1: C3") = Sheet2.Range ("F1: h4"). Значение
6. Что дает следующий код?
Dim amount As Long сумма = 7 Отлаживать.Печать (5 + 6) * сумма
7. Что дает следующий код?
Dim amt1 As Long, amt2 As Long amt1 = "7,99" Debug.Print amt1 amt2 = "14a" Отладка.Печать amt2
Первый Debug.Print записывает значение 8 в окно Immediate. Строка am2 = приводит к ошибке несоответствия типа.
8. Если у нас 1,2 и 3 в ячейках A1, A2 и A3 соответственно, каков результат следующего кода?
Лист1.Диапазон ("B1: B4") = Sheet1.Range ("A1: A3"). Значение
Код помещает 1 в ячейку B1, 2 в ячейку B2, 3 в ячейку B3 и # N / A в ячейку B4.
9. Что делает сочетание клавиш Alt + F11?
Открывает Visual Basic из Excel. Если редактор открыт, он просто переключается на него.
Если вы нажмете Alt + F11 в Visual Basic, он переключится в Excel.
10. В следующем коде мы объявляем переменную, но не присваиваем ей значение.что выводит оператор Debug.Print?
Dim amt As Long Debug.Print amt
Выход равен нулю. Когда мы объявляем числовую переменную, ей дается значение по умолчанию, равное нулю.
Заключение первой части учебного пособия по VBA
Поздравляю с окончанием первого урока. Если вы выполнили упражнения и викторину, то вы узнаете некоторые важные концепции, которые будут использоваться вами при работе с VBA.
В Уроке 2 мы будем иметь дело с диапазонами, в которых столбец или строка могут отличаться при каждом запуске приложения. В этом уроке мы рассмотрим
- Как получить последнюю строку или столбец с данными.
- Невероятно эффективное свойство CurrentRegion.
- Как использовать гибкие строки и столбцы.
- Когда использовать Диапазон и когда использовать Ячейки .
- и многое другое…
.
Обратите внимание: , что Учебники 2–4 могут быть приобретены участниками моего списка рассылки по специальной сниженной цене.
Вы можете подписаться на рассылку рассылки здесь.
Что дальше?
Планируете создать приложение VBA или управлять им? Узнайте, как с нуля создать 10 приложений Excel VBA.
Начало работы с VBA в Office
- 25 минут на чтение
В этой статье
Вы сталкиваетесь с повторяющейся очисткой пятидесяти таблиц в Word? Вы хотите, чтобы конкретный документ предлагал пользователю вводить данные при его открытии? Вам сложно понять, как эффективно перенести контакты из Microsoft Outlook в электронную таблицу Microsoft Excel?
Вы можете выполнять эти задачи и многое другое, используя Visual Basic для приложений (VBA) для Office — простой, но мощный язык программирования, который можно использовать для расширения приложений Office.
Эта статья предназначена для опытных пользователей Office, которые хотят узнать о VBA и понять, как программирование может помочь им в настройке Office.
Пакет приложений Office обладает богатым набором функций. Существует множество различных способов создания, форматирования и управления документами, электронной почтой, базами данных, формами, электронными таблицами и презентациями. Великая сила программирования на VBA в Office заключается в том, что почти все операции, которые вы можете выполнить с помощью мыши, клавиатуры или диалогового окна, также можно выполнить с помощью VBA.Кроме того, если это можно сделать один раз с помощью VBA, то так же легко можно сделать и сто раз. (Фактически, автоматизация повторяющихся задач — одно из наиболее распространенных применений VBA в Office.)
Помимо возможностей написания сценариев VBA для ускорения повседневных задач, вы можете использовать VBA для добавления новых функций в приложения Office или для подсказки и взаимодействия с пользователем ваших документов способами, которые соответствуют потребностям вашего бизнеса. Например, вы можете написать код VBA, который отображает всплывающее сообщение, напоминающее пользователям о необходимости сохранения документа на конкретный сетевой диск при первой попытке сохранить его.
В этой статье исследуются некоторые из основных причин, по которым можно использовать возможности программирования на VBA. Он исследует язык VBA и готовые инструменты, которые вы можете использовать для работы со своими решениями. Наконец, он включает в себя несколько советов и способов избежать некоторых типичных ошибок и ошибок при программировании.
Примечание
Заинтересованы в разработке решений, расширяющих возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, такую как HTML5, JavaScript, CSS3 и XML.
Когда использовать VBA и почему
Есть несколько основных причин, чтобы рассмотреть возможность программирования на VBA в Office.
Автоматизация и повторение
VBA эффективен и действенен, когда дело доходит до повторяющихся решений проблем форматирования или исправления. Например, вы когда-нибудь меняли стиль абзаца вверху каждой страницы в Word? Вам когда-нибудь приходилось переформатировать несколько таблиц, которые были вставлены из Excel в документ Word или электронное письмо Outlook? Приходилось ли вам когда-нибудь вносить одно и то же изменение в несколько контактов Outlook?
Если у вас есть изменение, которое необходимо внести более десяти или двадцати раз, возможно, стоит автоматизировать его с помощью VBA.Если это изменение, которое вам нужно делать сотни раз, его, безусловно, стоит рассмотреть. Практически любое изменение форматирования или редактирования, которое вы можете сделать вручную, можно выполнить в VBA.
Расширения взаимодействия с пользователем
Бывают случаи, когда вы хотите побудить или заставить пользователей взаимодействовать с приложением или документом Office определенным образом, который не является частью стандартного приложения. Например, вы можете захотеть предложить пользователям выполнить какое-то конкретное действие при открытии, сохранении или печати документа.
Взаимодействие между приложениями Office
Вам нужно скопировать все ваши контакты из Outlook в Word, а затем отформатировать их определенным образом? Или вам нужно переместить данные из Excel в набор слайдов PowerPoint? Иногда простое копирование и вставка не делает того, что вы хотите, или оно выполняется слишком медленно. Вы можете использовать программирование на VBA для одновременного взаимодействия с деталями двух или более приложений Office, а затем изменять содержимое в одном приложении на основе содержимого в другом.
Как поступить иначе
ПрограммированиеVBA — мощное решение, но не всегда оптимальный подход. Иногда имеет смысл использовать другие способы для достижения своих целей.
Важнейший вопрос, который следует задать, — есть ли более простой способ. Прежде чем начать проект VBA, рассмотрите встроенные инструменты и стандартные функции. Например, если у вас есть трудоемкая задача редактирования или макета, подумайте об использовании стилей или клавиш-ускорителей для решения проблемы. Можете ли вы выполнить задачу один раз, а затем использовать CTRL + Y (Повторить), чтобы повторить ее? Можете ли вы создать новый документ с правильным форматом или шаблоном, а затем скопировать его содержимое в этот новый документ?
Офисные приложения — мощные; решение, которое вам нужно, может уже быть там.Прежде чем приступить к программированию, найдите время, чтобы узнать больше об Office.
Прежде чем приступить к проекту VBA, убедитесь, что у вас есть время поработать с VBA. Программирование требует сосредоточенности и может быть непредсказуемым. Тем более, что новичок, никогда не обращайтесь к программированию, если у вас нет времени тщательно поработать. Попытка написать «быстрый сценарий» для решения проблемы, когда приближается крайний срок, может привести к очень стрессовой ситуации. Если вы спешите, вы можете использовать обычные методы, даже если они однообразны и однообразны.
Программирование на VBA 101
Использование кода для работы приложений
Вы можете подумать, что написание кода загадочно или сложно, но основные принципы основаны на повседневных рассуждениях и вполне доступны. Приложения Microsoft Office созданы таким образом, что они предоставляют объекты, называемые объектами, которые могут получать инструкции, почти так же, как в телефоне созданы кнопки, которые вы используете для взаимодействия с телефоном. Когда вы нажимаете кнопку, телефон распознает инструкцию и включает соответствующий номер в последовательность, которую вы набираете.В программировании вы взаимодействуете с приложением, отправляя инструкции различным объектам в приложении. Эти объекты обширны, но у них есть свои пределы. Они могут делать только то, для чего они предназначены, и они будут делать только то, что вы им прикажете делать.
Например, представьте пользователя, который открывает документ в Word, вносит несколько изменений, сохраняет документ, а затем закрывает его. В мире программирования VBA Word предоставляет объект Document. Используя код VBA, вы можете указать объекту Document выполнять такие действия, как «Открыть», «Сохранить» или «Закрыть».
В следующем разделе обсуждается организация и описание объектов.
Объектная модель
Разработчики организуют программные объекты в иерархию, и эта иерархия называется объектной моделью приложения. Word, например, имеет объект Application верхнего уровня, который содержит объект Document. Объект Document содержит объекты Paragraph и так далее. Объектные модели примерно отражают то, что вы видите в пользовательском интерфейсе. Они представляют собой концептуальную карту приложения и его возможностей.
Определение объекта называется классом, поэтому вы можете увидеть, что эти два термина используются как взаимозаменяемые. Технически класс — это описание или шаблон, который используется для создания или создания экземпляра объекта.
Когда объект существует, вы можете управлять им, задавая его свойства и вызывая его методы. Если вы думаете об объекте как о существительном, свойства — это прилагательные, которые описывают существительное, а методы — это глаголы, которые оживляют существительное. Изменение свойства изменяет качество внешнего вида или поведения объекта.Вызов одного из методов объекта заставляет объект выполнить какое-то действие.
Код VBA в этой статье работает с открытым приложением Office, в котором многие объекты, которыми манипулирует код, уже запущены и работают; например, само приложение, рабочий лист в Excel, документ в Word, презентация в PowerPoint, объекты проводника и папки в Outlook. Узнав базовый макет объектной модели и некоторые ключевые свойства приложения, которые предоставляют доступ к его текущему состоянию, вы можете начать расширять и управлять этим приложением Office с помощью VBA в Office.
Методы
В Word, например, вы можете изменять свойства и вызывать методы текущего документа Word, используя свойство ActiveDocument объекта Application . Это свойство ActiveDocument возвращает ссылку на объект Document , который в настоящее время активен в приложении Word. «Возвращает ссылку на» означает «дает вам доступ к».
Следующий код делает именно то, что говорит; то есть сохраняет активный документ в приложении.
Application.ActiveDocument.Save
Прочтите код слева направо: «В этом приложении с документом, на который ссылается ActiveDocument, вызовите метод Save ». Имейте в виду, что Save — это простейшая форма метода; это не требует от вас каких-либо подробных инструкций. Вы указываете объекту Document команду Save , и это не требует от вас дополнительных действий.
Если для метода требуется дополнительная информация, эти сведения называются параметрами.Следующий код запускает метод SaveAs , для которого требуется новое имя файла.
Application.ActiveDocument.SaveAs («Имя нового документа.docx»)
Значения, перечисленные в скобках после имени метода, являются параметрами. Здесь новое имя файла является параметром для метода SaveAs .
Недвижимость
Вы используете тот же синтаксис, чтобы установить свойство, которое вы используете для чтения свойства. Следующий код выполняет метод выбора ячейки A1 в Excel, а затем устанавливает свойство для помещения чего-либо в эту ячейку.
Application.ActiveSheet.Range ("A1"). Выберите
Application.Selection.Value = "Привет, мир"
Первая задача в программировании на VBA — получить представление об объектной модели каждого приложения Office и прочитать синтаксис объекта, метода и свойства. Объектные модели аналогичны во всех приложениях Office, но каждая зависит от типа документов и объектов, с которыми она работает.
В первой строке фрагмента кода находится объект Application , на этот раз Excel, а затем ActiveSheet , который обеспечивает доступ к активному рабочему листу.После этого идет термин, который не так знаком, Range, что означает «определить таким образом диапазон ячеек». Код дает команду Range создать себя только с A1 в качестве определенного набора ячеек. Другими словами, первая строка кода определяет объект Range и запускает для него метод, чтобы выбрать его. Результат автоматически сохраняется в другом свойстве приложения Application , которое называется Selection .
Вторая строка кода устанавливает для свойства Value объекта Selection текст «Hello World», и это значение появляется в ячейке A1.
Простейший код VBA, который вы пишете, может просто получить доступ к объектам в приложении Office, с которым вы работаете, и задать свойства. Например, вы можете получить доступ к строкам в таблице в Word и изменить их форматирование в сценарии VBA.
Звучит просто, но может быть невероятно полезным; как только вы сможете написать этот код, вы сможете использовать всю мощь программирования для внесения тех же изменений в несколько таблиц или документов или внести их в соответствии с некоторой логикой или условием.Для компьютера внесение 1000 изменений ничем не отличается от внесения 10, поэтому здесь есть экономия на масштабе с более крупными документами и проблемами, и именно здесь VBA действительно может сиять и сэкономить ваше время.
Макросыи редактор Visual Basic
Теперь, когда вы знаете кое-что о том, как приложения Office предоставляют свои объектные модели, вы, вероятно, захотите попробовать вызывать методы объекта, устанавливать свойства объекта и реагировать на события объекта. Для этого вы должны написать свой код в месте и таким образом, чтобы Office мог его понять; обычно с помощью редактора Visual Basic.Хотя он установлен по умолчанию, многие пользователи даже не знают, что он доступен, пока он не будет включен на ленте.
Все приложения Office используют ленту. Одна вкладка на ленте — это вкладка Developer , где вы получаете доступ к редактору Visual Basic и другим инструментам разработчика. Поскольку Office не отображает вкладку Developer по умолчанию, необходимо включить ее, выполнив следующую процедуру:
Включение вкладки «Разработчик»
На вкладке Файл выберите Параметры , чтобы открыть диалоговое окно Параметры .
Выберите Настроить ленту в левой части диалогового окна.
Под Выберите команды из в левой части диалогового окна, выберите Популярные команды .
Под Настройте ленту в правой части диалогового окна, выберите Основные вкладки в раскрывающемся списке, а затем установите флажок Developer .
Выберите ОК .
Примечание
В Office 2007 вы открыли вкладку Developer , нажав кнопку Office, выбрав Options , а затем установив флажок Show Developer tab на ленте в категории Popular диалогового окна Options .
После включения вкладки Developer легко найти кнопки Visual Basic и Macros .
Рисунок 1.Кнопки на вкладке «Разработчик»
Проблемы безопасности
Чтобы защитить пользователей Office от вирусов и опасного кода макроса, вы не можете сохранить код макроса в стандартном документе Office, который использует стандартное расширение файла. Вместо этого вы должны сохранить код в файле со специальным расширением. Например, вы не можете сохранять макросы в стандартном документе Word с расширением .docx; вместо этого вы должны использовать специальный документ Word с поддержкой макросов с расширением .docm.
Когда вы открываете файл.docm, служба безопасности Office может по-прежнему препятствовать запуску макросов в документе, сообщая вам или не сообщая об этом. Изучите настройки и параметры в центре управления безопасностью всех приложений Office. Настройка по умолчанию отключает запуск макроса, но предупреждает вас, что макросы были отключены, и дает вам возможность снова включить их для этого документа.
Вы можете назначить определенные папки, в которых могут запускаться макросы, создав «Надежные расположения», «Надежные документы» или «Надежные издатели». Самый переносимый вариант — использовать Trusted Publishers, который работает с документами с цифровой подписью, которые вы распространяете.Для получения дополнительных сведений о параметрах безопасности в конкретном приложении Office откройте диалоговое окно Параметры , выберите Центр управления безопасностью , а затем выберите Параметры центра управления безопасностью .
Примечание
Некоторые приложения Office, например Outlook, по умолчанию сохраняют макросы в главном шаблоне на локальном компьютере. Хотя эта стратегия уменьшает проблемы локальной безопасности на вашем собственном компьютере при запуске собственных макросов, она требует стратегии развертывания, если вы хотите распространять свой макрос.
Запись макроса
Когда вы нажимаете кнопку Macro на вкладке Developer , открывается диалоговое окно Macros , которое дает вам доступ к подпрограммам или макросам VBA, к которым вы можете получить доступ из определенного документа или приложения. Кнопка Visual Basic открывает редактор Visual Basic, в котором вы можете создавать и редактировать код VBA.
Еще одна кнопка на вкладке Developer в Word и Excel — это кнопка Record Macro , которая автоматически генерирует код VBA, который может воспроизводить действия, которые вы выполняете в приложении. Record Macro — потрясающий инструмент, который вы можете использовать, чтобы узнать больше о VBA. Чтение сгенерированного кода может дать вам представление о VBA и обеспечить надежный мост между вашими знаниями Office как пользователя и вашими знаниями как программиста. Единственное предостережение заключается в том, что сгенерированный код может сбивать с толку, потому что редактор макросов должен делать некоторые предположения о ваших намерениях, и эти предположения не обязательно точны.
Для записи макроса
Откройте Excel в новой книге и выберите вкладку Developer на ленте.Выберите Record Macro и примите все настройки по умолчанию в диалоговом окне Record Macro , включая Macro1 в качестве имени макроса и This Workbook в качестве местоположения.
Выберите ОК , чтобы начать запись макроса. Обратите внимание, как текст кнопки меняется на Остановить запись . Нажмите эту кнопку в тот момент, когда вы завершите действия, которые хотите записать.
Выберите ячейку B1 и введите классическую первую строку программиста: Hello World.Прекратите печатать и посмотрите на кнопку Остановить запись ; он неактивен, потому что Excel ожидает, когда вы закончите вводить значение в ячейке.
Выберите ячейку B2, чтобы завершить действие в ячейке B1, а затем выберите Остановить запись .
Выберите макросы на вкладке Developer , выберите Macro1 , если он не выбран, а затем выберите Edit , чтобы просмотреть код из Macro1 в редакторе Visual Basic.
Рисунок 2. Код макроса в редакторе Visual Basic
Смотрим на код
Созданный вами макрос должен выглядеть примерно так, как показано ниже.
Субмакрос1 ()
'
'Macro1 Macro
'
'
Диапазон ("B1"). Выберите
ActiveCell.FormulaR1C1 = "Привет, мир"
Диапазон ("B2"). Выбрать
Конец подписки
Обратите внимание на сходство с предыдущим фрагментом кода, в котором выделен текст в ячейке A1, и на различия.В этом коде выбирается ячейка B1, а затем строка «Hello World» применяется к ячейке, которая была сделана активной. Кавычки вокруг текста указывают строковое значение, а не числовое значение.
Помните, как вы выбрали ячейку B2, чтобы снова отобразить кнопку Остановить запись ? Это действие также отображается как строка кода. Регистратор макросов записывает каждое нажатие клавиши.
Строки кода, начинающиеся с апострофа и окрашенные в зеленый цвет редактором, являются комментариями, которые объясняют код или напоминают вам и другим программистам о назначении кода.VBA игнорирует любую строку или часть строки, начинающуюся с одинарной кавычки. Написание четких и уместных комментариев в коде — важная тема, но это обсуждение выходит за рамки данной статьи. Последующие ссылки на этот код в статье не включают эти четыре строки комментариев.
Когда средство записи макросов генерирует код, он использует сложный алгоритм для определения методов и свойств, которые вы намеревались. Если вы не узнаете данное свойство, существует множество доступных ресурсов, которые могут вам помочь.Например, в записанном макросе средство записи макросов сгенерировало код, который ссылается на свойство FormulaR1C1 . Не знаете, что это значит?
Примечание
Имейте в виду, что Application объект подразумевается во всех макросах VBA. Код, который вы записали, работает с приложением . в начале каждой строки.
Использование справки разработчика
Выберите FormulaR1C1 в записанном макросе и нажмите F1. Справочная система выполняет быстрый поиск, определяет, что соответствующие темы находятся в разделе Excel Developer справки Excel, и перечисляет свойство FormulaR1C1 .Вы можете выбрать ссылку, чтобы узнать больше об этом свойстве, но прежде обратите внимание на ссылку Ссылка на объектную модель Excel в нижней части окна. Выберите ссылку, чтобы просмотреть длинный список объектов, которые Excel использует в своей объектной модели для описания рабочих листов и их компонентов.
Выберите любой из них, чтобы увидеть свойства и методы, применимые к этому конкретному объекту, а также перекрестные ссылки на различные связанные параметры. Во многих статьях справки также есть краткие примеры кода, которые могут вам помочь.Например, вы можете перейти по ссылкам в объекте Borders , чтобы узнать, как установить границу в VBA.
Рабочие листы (1) .Range ("A1"). Borders.LineStyle = xlDouble
Редактирование кода
Код границы отличается от записанного макроса. Одна вещь, которая может сбивать с толку объектную модель, заключается в том, что существует более одного способа обратиться к любому заданному объекту, ячейке A1 в этом примере.
Иногда лучший способ научиться программировать — это внести незначительные изменения в рабочий код и посмотреть, что произойдет в результате.Попробуй это сейчас. Откройте Macro1 в редакторе Visual Basic и измените код на следующий.
Субмакрос1 ()
Рабочие листы (1) .Range ("A1"). Value = "Wow!"
Рабочие листы (1) .Range ("A1"). Borders.LineStyle = xlDouble
Конец подписки
Наконечник
Как можно чаще используйте копирование и вставку при работе с кодом, чтобы избежать опечаток.
Вам не нужно сохранять код, чтобы опробовать его, поэтому вернитесь к документу Excel, выберите Macros на вкладке Developer , выберите Macro1 , а затем выберите Run .Ячейка A1 теперь содержит текст Wow! и имеет двойную рамку вокруг него.
Рисунок 3. Результаты вашего первого макроса
Вы просто объединили запись макроса, чтение документации по объектной модели и простое программирование, чтобы создать программу VBA, которая что-то делает. Поздравляю!
Не получилось? Читайте предложения по отладке в VBA.
Советы и хитрости программирования
Начать с примеров
Сообщество VBA очень велико; поиск в Интернете почти всегда может дать пример кода VBA, который делает что-то похожее на то, что вы хотите сделать.Если вы не можете найти хороший пример, попробуйте разбить задачу на более мелкие части и выполнить поиск по каждой из них, или попробуйте придумать более общую, но похожую проблему. Начав с примера, вы сэкономите часы времени.
Это не означает, что бесплатный и хорошо продуманный код находится в сети и ждет, когда вы придете с ним. Фактически, в некотором коде, который вы обнаружите, могут быть ошибки или ошибки. Идея состоит в том, что примеры, которые вы найдете в Интернете или в документации VBA, дадут вам фору. Помните, что изучение программирования требует времени и размышлений.Прежде чем вы броситесь использовать другое решение для решения вашей проблемы, спросите себя, является ли VBA правильным выбором для этой проблемы.
Сделайте задачу проще
Программирование может быстро усложняться. Очень важно, особенно для новичка, разбить проблему на минимально возможные логические единицы, а затем записать и протестировать каждую часть по отдельности. Если перед вами слишком много кода, и вы запутались или запутались, остановитесь и отложите проблему. Когда вы вернетесь к проблеме, скопируйте небольшой фрагмент проблемы в новый модуль, решите этот фрагмент, заставьте код работать и протестируйте его, чтобы убедиться, что он работает.Затем переходите к следующей части.
Ошибки и отладка
Есть два основных типа ошибок программирования: синтаксические ошибки, которые нарушают грамматические правила языка программирования, и ошибки времени выполнения, которые выглядят синтаксически корректными, но терпят неудачу, когда VBA пытается выполнить код.
Хотя их может быть сложно исправить, синтаксические ошибки легко обнаружить; редактор Visual Basic издает звуковой сигнал и мигает, если вы вводите синтаксическую ошибку в коде.
Например, строковые значения должны быть заключены в двойные кавычки в VBA.Чтобы узнать, что происходит при использовании одинарных кавычек, вернитесь в редактор Visual Basic и замените «Wow!» строка в примере кода с «Вау!» (то есть слово Wow заключено в одинарные кавычки). Если вы выберете следующую строку, редактор Visual Basic отреагирует. Ошибка «Ошибка компиляции: Ожидается: выражение» не так полезна, но строка, которая генерирует ошибку, становится красной, чтобы сообщить вам, что у вас есть синтаксическая ошибка в этой строке, и в результате эта программа не будет запущена.
Выберите ОК и снова измените текст на «Вау!».
Ошибки времени выполнения обнаружить труднее, потому что синтаксис программирования выглядит правильно, но код не работает, когда VBA пытается его выполнить.
Например, откройте редактор Visual Basic и измените имя свойства Value на ValueX в макросе, намеренно вводя ошибку времени выполнения, поскольку объект Range не имеет свойства с именем ValueX. Вернитесь к документу Excel, откройте диалоговое окно Macros и снова запустите Macro1. Вы должны увидеть окно сообщения Visual Basic, в котором объясняется ошибка времени выполнения с текстом: «Объект не поддерживает это свойство метода.»Хотя этот текст ясен, выберите Debug , чтобы узнать больше.
Когда вы возвращаетесь в редактор Visual Basic, он находится в специальном режиме отладки, в котором желтым цветом отображается строка кода, в которой произошел сбой. Как и ожидалось, выделена строка, содержащая свойство ValueX.
Вы можете вносить изменения в работающий код VBA, поэтому измените ValueX обратно на Value и нажмите маленькую зеленую кнопку воспроизведения под меню Debug . Программа должна снова запуститься в обычном режиме.
Хорошая идея — научиться более целенаправленно использовать отладчик для более длинных и сложных программ. Как минимум, узнайте, как устанавливать точки останова для остановки выполнения в точке, где вы хотите взглянуть на код, как добавлять часы, чтобы видеть значения различных переменных и свойств во время выполнения кода, и как пошагово по коду построчно. Все эти параметры доступны в меню Debug , и серьезные пользователи отладчика обычно запоминают соответствующие сочетания клавиш.
Скважина со справочными материалами
Чтобы открыть справочник разработчика, встроенный в справку Office, откройте справку из любого приложения Office, выбрав вопросительный знак на ленте или нажав клавишу F1. Затем справа от кнопки Search выберите стрелку раскрывающегося списка, чтобы отфильтровать содержимое. Выберите Справочник разработчика . Если вы не видите оглавление на левой панели, выберите маленький значок книги, чтобы открыть его, а затем разверните оттуда ссылку на объектную модель.
Рис. 5. Фильтрация в справке разработчика применяется ко всем приложениям Office
Время, потраченное на просмотр справочника по объектной модели, окупается. Поняв основы синтаксиса VBA и объектную модель приложения Office, с которым вы работаете, вы переходите от догадок к методическому программированию.
Конечно, Центр разработчиков Microsoft Office — отличный портал для статей, советов и информации сообщества.
Поиск в форумах и группах
Все программисты иногда застревают, даже прочитав каждую справочную статью, которую они могут найти, и теряют сон по ночам, думая о различных способах решения проблемы.К счастью, в Интернете появилось сообщество разработчиков, которые помогают друг другу решать проблемы программирования.
Любой поиск в Интернете по запросу «форум разработчиков офисных приложений» обнаруживает несколько групп обсуждения. Вы можете выполнить поиск по «офисному развитию» или описанию своей проблемы, чтобы найти форумы, сообщения в блогах и статьи.
Если вы сделали все возможное, чтобы решить проблему, не бойтесь задать свой вопрос на форуме разработчиков. На этих форумах приветствуются сообщения от новых программистов, и многие опытные разработчики рады помочь.
Ниже приведены несколько правил этикета, которым следует следовать при публикации сообщений на форуме разработчиков:
Перед тем, как публиковать сообщения, поищите на сайте ответы на часто задаваемые вопросы или рекомендации, которым участники хотят, чтобы вы следовали. Убедитесь, что вы публикуете контент, который соответствует этим правилам, и в правильном разделе форума.
Включите ясный и полный пример кода и рассмотрите возможность редактирования кода, чтобы прояснить его для других, если он является частью более длинного раздела кода.
Четко и кратко опишите вашу проблему и кратко опишите все шаги, которые вы предприняли для ее решения. Найдите время, чтобы написать свой пост как можно лучше, особенно если вы взволнованы или торопитесь. Представьте ситуацию так, чтобы читатели впервые прочитали постановку задачи.
Будьте вежливы и выразите признательность.
Дальнейшее программирование
Хотя эта статья короткая и дает лишь поверхностное представление о VBA и программировании, мы надеемся, что ее достаточно, чтобы вы начали.
В этом разделе вкратце обсуждаются еще несколько ключевых тем.
Переменные
В простых примерах этой статьи вы управляли объектами, которые приложение уже создало. Возможно, вы захотите создать свои собственные объекты для хранения значений или ссылок на другие объекты для временного использования в вашем приложении. Они называются переменными.
Чтобы использовать переменную в VBA, необходимо указать VBA, какой тип объекта представляет переменная, с помощью оператора Dim .Затем вы устанавливаете его значение и используете его для установки других переменных или свойств.
Dim MyStringVariable As String
MyStringVariable = "Вау!"
Рабочие листы (1) .Range ("A1"). Value = MyStringVariable
Разветвление и зацикливание
Простые программы в этой статье выполняются по одной строке сверху вниз. Настоящая сила в программировании исходит из опций, которые вы должны определить, какие строки кода выполнять, на основе одного или нескольких условий, которые вы укажете.Вы можете расширить эти возможности еще больше, если можете повторять операцию много раз. Например, следующий код расширяет Macro1.
Субмакрос1 ()
Если Worksheets (1) .Range ("A1"). Value = "Да!" потом
Dim i как целое число
Для i = от 2 до 10
Рабочие листы (1) .Range ("A" & i) .Value = "OK!" & I
Далее я
Еще
MsgBox «Поместите Да! В ячейку A1»
Конец, если
Конец подписки
Введите или вставьте код в редактор Visual Basic, а затем запустите его.Следуйте инструкциям в появившемся окне сообщения и измените текст в ячейке A1 из Wow! к Да! и запустите его еще раз, чтобы увидеть возможности зацикливания. Этот фрагмент кода демонстрирует переменные, ветвление и цикл. Внимательно прочтите его после того, как увидите его в действии, и попытайтесь определить, что происходит при выполнении каждой строки.
Все мои приложения Office: пример кода
Вот несколько сценариев, которые стоит попробовать; каждый решает реальную проблему Office.
Создать электронное письмо в Outlook
Sub MakeMessage ()
Тусклое сообщение OutlookMessage как Outlook.MailItem
Установите OutlookMessage = Application.CreateItem (olMailItem)
OutlookMessage.Subject = "Hello World!"
OutlookMessage.Display
Установите OutlookMessage = Nothing
Конец подписки
Имейте в виду, что есть ситуации, в которых вы можете автоматизировать электронную почту в Outlook; вы также можете использовать шаблоны.
Удалить пустые строки на листе Excel
Sub DeleteEmptyRows ()
SelectedRange = Selection.Rows.Count
ActiveCell.Offset (0, 0). Выбрать
Для i = 1 To SelectedRange
Если ActiveCell.Value = "" Тогда
Selection.EntireRow.Delete
Еще
ActiveCell.Offset (1, 0) .Select
Конец, если
Далее я
Конец подписки
Имейте в виду, что вы можете выбрать столбец ячеек и запустить этот макрос, чтобы удалить все строки в выбранном столбце, содержащие пустую ячейку.
Удалить пустые текстовые поля в PowerPoint
Sub RemoveEmptyTextBoxes ()
Dim SlideObj как слайд
Dim ShapeObj As Shape
Dim ShapeIndex As Integer
Для каждого SlideObj в ActivePresentation.Слайды
Для ShapeIndex = SlideObj.Shapes.Count To 1 Step -1
Установите ShapeObj = SlideObj.Shapes (ShapeIndex)
Если ShapeObj.Type = msoTextBox Тогда
Если Trim (ShapeObj.TextFrame.TextRange.Text) = "" Тогда
ShapeObj.Delete
Конец, если
Конец, если
Следующий ShapeIndex
Следующий SlideObj
Конец подписки
Имейте в виду, что этот код просматривает все слайды и удаляет все текстовые поля, в которых нет текста. Переменная count уменьшается, а не увеличивается, потому что каждый раз, когда код удаляет объект, он удаляет этот объект из коллекции, что уменьшает счетчик.
Скопируйте контакт из Outlook в Word
Sub CopyCurrentContact ()
Dim OutlookObj как объект
Dim InspectorObj как объект
Dim ItemObj как объект
Установите OutlookObj = CreateObject ("Outlook.Application")
Установите InspectorObj = OutlookObj.ActiveInspector
Установите ItemObj = InspectorObj.CurrentItem
Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & "from" & ItemObj.CompanyName)
Конец подписки
Имейте в виду, что этот код копирует текущий открытый контакт в Outlook в открытый документ Word.Этот код работает, только если в Outlook есть контакт, открытый для проверки.
Поддержка и отзывы
Есть вопросы или отзывы об Office VBA или этой документации? См. Раздел Поддержка и отзывы Office VBA, чтобы узнать, как получить поддержку и оставить отзыв.
16 Термины, которые необходимо знать для изучения VBA
Итак, вы создали свой первый (или несколько первых) макрос (ы) Excel, возможно, выполнив эти 7 простых шагов для создания макроса.К настоящему времени ваши коллеги уже смотрят на вас, как на волшебника.Это отличный знак того, что вы на правильном пути к изучению макросов и Visual Basic для приложений (VBA).
Однако…
Возможность создавать базовый макрос в Excel — это только начало в процессе становления действительно эффективного и продуктивного пользователя макросов и VBA. Если вы действительно хотите раскрыть мощь этих инструментов , вы должны изучить VBA из-за того, что, среди прочего, запись макроса иногда просто не «сокращает его».
Плохая новость (по крайней мере, для некоторых из вас) заключается в том, что использование VBA требует изучения программирования.
Хорошая новость в том, что программирование в Excel не так сложно, как может показаться на первый взгляд.
Если это звучит не так убедительно, подождите…
Чтобы помочь вам в процессе изучения Visual Basic для приложений, я создал это руководство по Excel VBA для начинающих, в котором я подробно объясняю 16 (на самом деле вы, вероятно, узнаете даже больше) основных терминов, которые вам необходимо знать. для изучения программирования на VBA .В частности, Я сосредотачиваюсь на основных терминах, которые вы постоянно будете встречать в процессе становления экспертом по VBA.
К тому времени, когда вы закончите читать это руководство для начинающих, вы поймете основы как минимум 16 основных терминов, которые вам необходимо знать для изучения Visual Basic для приложений. Ниже приводится схема этого руководства по Excel:
Это руководство по Excel VBA для начинающих сопровождается книгами Excel, содержащими данные и макросы, которые я использую в приведенных ниже примерах.Вы можете сразу же получить бесплатный доступ к этим примерам книг, нажав кнопку под .
Если некоторые (или все) приведенные выше термины кажутся вам совершенно странными, не волнуйтесь. До изучения VBA я изучал и работал в двух профессиях, которые печально известны использованием специализированного жаргона, совершенно непонятного для посторонних: юриспруденция и финансы. Короче говоря… Visual Basic для приложений все еще казался мне совершенно другим языком. Но потом кое-что понял:
VBA — действительно другой язык, и через некоторое время я понял, что его не так уж и сложно выучить.Это подводит меня к первому вопросу, который я рассмотрю в этом руководстве по Excel VBA для начинающих…
Что такое VBA?
Как вы, возможно, уже знаете, VBA означает Visual Basic для приложений.
VBA — это язык программирования , разработанный Microsoft и включенный в большинство продуктов, входящих в состав Microsoft Office.
Что именно это означает?
Вы можете думать о языке программирования так же, как о любом другом языке: английском, испанском, немецком, французском, итальянском, португальском, хинди, китайском, корейском и т. Д.У языка есть несколько функций, но в этом руководстве по Excel VBA для начинающих я сосредоточен на одном аспекте: общение.
Языки программирования немного отличаются тем, что вы обычно не используете их для общения с людьми. Вы используете язык программирования, например VBA, для связи с компьютером. В частности, вы передаете инструкции компьютеру.
Другими словами, Visual Basic для приложений — это язык, который позволяет нам с вами передавать инструкции в Excel .
Значит, выхода нет:
Чтобы автоматизировать задачи в Excel и раскрыть его возможности, вы должны изучить VBA. Однако, как и следовало ожидать, VBA отличается от обычных человеческих языков.
В общем, коды, которые вы можете использовать для связи с вашим компьютером, немного отличаются от тех, которые вы используете для общения с другими людьми. Одна из основных причин этого заключается в том, что, несмотря на недавние достижения, компьютеры не могут полностью справиться с некоторыми функциями человеческого общения.К ним относятся, например, выражение лица и тела человека.
Представьте, что вы изучаете новый человеческий язык (например, французский, итальянский или испанский). Один из предметов, который вам нужно изучить, — это его структура, и, вполне вероятно, вы встретите такие термины, как существительные, местоимения, глаголы, прилагательные и тому подобное. Если вы раньше не слышали эти термины или вы похожи на меня и забыли их точное значение, изучение нового языка может оказаться довольно сложной задачей.
Ну…
Языки программирования существенно не отличаются, поэтому для изучения такого языка, как Visual Basic для приложений, вам необходимо понимать его структуру.Поскольку эта структура не совсем такая же, как у человеческих языков, вы сталкиваетесь с некоторыми специальными (и разными) терминами, которые вам необходимо выучить.
и , здесь на помощь приходит это руководство по Excel VBA для начинающих. В следующих разделах я объясню вам некоторые из наиболее важных терминов, которые вам нужно знать, чтобы изучить программирование на VBA . К концу этого руководства вы поймете основные строительные блоки Visual Basic для приложений, которые позволят вам изучить этот язык программирования и намного быстрее научиться бегло говорить.
Вы можете до некоторой степени провести аналогию между некоторыми классами слов (существительные, глаголы, наречия и т. Д.) В английском языке и некоторыми компонентами VBA, чтобы помочь вам лучше понять эти элементы. В этом руководстве по Excel VBA для начинающих я в определенной степени использую аналогию между компонентами VBA и частями речи, но при необходимости я использую другие иллюстрации.
Что такое макрос? Разница между макросами и VBA?
Макросы Excel и Visual Basic для приложений — это не совсем то же самое, что и , хотя они тесно связаны и иногда люди используют их как взаимозаменяемые.
Как объяснялось выше, VBA — это язык программирования, который можно использовать в нескольких программах, входящих в состав Microsoft Office, таких как Excel, Power Point, Word и Access.
Макрос:
- Не язык программирования.
- (Обычно) Определяется как набор инструкций, которые вы используете для автоматизации приложения Microsoft Office (например, Excel).
Другими словами:
- Макрос — это последовательность инструкций, которым должен следовать Excel для достижения определенной цели .
- Visual Basic для приложений — это язык программирования, который можно использовать для создания макросов.
Возьмем, например, следующую инструкцию:
Полный набор инструкций эквивалентен макросу Excel. Это последовательность инструкций, которым следует следовать, чтобы достичь цели, которой, в данном случае, является наслаждение трапезой цукемэн.
Язык, на котором написаны инструкции на изображении выше, — английский.Это эквивалент Visual Basic для приложений.
Итак … как видите: макросы VBA и Excel очень близки, но, строго говоря, это не одно и то же.
Однако, как вы увидите ниже, нередко некоторые термины взаимозаменяемы со словом «макрос».
Что такое код VBA?
Здесь может возникнуть некоторая путаница, но, пожалуйста, потерпите меня…
При работе с VBA вы выполняете код VBA.Этот код VBA выполняет (определенные) действия / задачи. Вы можете сгенерировать код VBA одним из следующих двух способов:
- Путем записи определенных действий, которые вы выполняете в книге Excel, с помощью средства записи макросов.
- Путем написания кода VBA в редакторе Visual Basic (VBE).
Ниже приведен очень простой пример кода VBA. Комментарии вверху (зеленым шрифтом) объясняют, что делает фрагмент кода.
Теперь вы можете задаться вопросом… в чем разница между макросом и кодом VBA?
Я не вдавался в подробности (это не соответствует целям данного руководства по Excel VBA для начинающих).Для целей данного руководства существенной разницы нет. Фактически, в контексте нескольких приложений Microsoft Office термин «макрос» используется несколькими пользователями для обозначения кода VBA.
Некоторые пользователи Excel VBA различают код и макросы. С этой точки зрения:
- Термин «код VBA» (обычно) относится к набору команд VBA, которые вы создаете одним из следующих способов:
- Запись макроса; или
- Запись кода VBA в VBE.
- Термин «макрос» (обычно) относится к набору инструкций, которые Excel выполняет автоматически.
Теперь, когда определения макросов, кода VBA и VBA ясны (или, по крайней мере, яснее, чем они были в начале), давайте начнем рассматривать различные компоненты Visual Basic для приложений.
Что такое модуль?
В общих чертах, модуль эквивалентен контейнеру VBA. Другими словами, это , где Excel фактически хранит код VBA .
Если вы видели грузовое судно или порт, или если вы когда-либо участвовали в судоходстве, возможно, вы видели интермодальные контейнеры (например, те, что показаны на изображении ниже).Эти контейнеры используются, помимо прочего, для хранения товаров.
В Excel эквивалентом интермодальных контейнеров являются модули, а хранимые товары — это фрагменты кода VBA.
Вы можете проверить, какие модули хранятся в книге Excel, над которой вы сейчас работаете, в Project Explorer (который является одним из разделов редактора Visual Basic). На следующем снимке экрана показан пример Project Explorer, в котором есть только 1 стандартный модуль (называемый «Module1»).
Стандартные модулитакже называются просто модулями. Помимо стандартных, есть и другие типы модулей.
Модулисостоят из процедур, поэтому, как вы понимаете, следующий логичный вопрос…
Что такое процедуры и распорядки?
Процедура — это, по сути, часть компьютерной программы, которая выполняет конкретную задачу или действие .
Говоря более техническим языком, процедура — это блок операторов, который заключен в конкретный оператор объявления и объявление End.VBA поддерживает два типа процедур:
- Подпроцедуры, выполняющие действие в Excel. Оператор объявления, с которого начинается процедура Sub, называется «Sub».
Например, следующий фрагмент кода VBA (комментарии в верхней части изображения описывают его основное назначение) является процедурой Sub. Обратите внимание на оператор объявления открытия, соответствующее объявление End и то, как блок операторов заключен в эти два объявления.
- Функциональные процедуры, выполняющие вычисления и возвращающие значение.
Подпроцедуры не возвращают значение, но процедуры-функции могут выполнять определенные действия перед возвратом значения.
Практическое использование таких терминов, как подпроцедура, процедура, программа, процедура и макрос, может немного сбивать с толку. В некоторых случаях эти термины используются как синонимы .
Возможно, самое важное различие, которое вы должны уметь проводить, — это процедуры Sub и Function, как описано выше. Вы можете обратиться к этим руководствам по подпроцедурам и процедурам функций для получения дополнительной информации.
Я полагаю, что у вас может возникнуть несколько вопросов, связанных с (более техническим) определением процедуры, данным выше, поэтому давайте посмотрим на значение одного из его ключевых слов…
Что такое заявление?
Оператор — это инструкция . В некоторых контекстах можно выделить 2 основных типа операторов:
- Операторы объявления, как следует из их имени, используются для объявления чего-либо, например переменной или константы.
При определении того, что такое процедура Sub, я показал вам пример оператора объявления.В данном конкретном случае этот оператор объявления является открывающим оператором Sub, который объявляет процедуру Sub с именем Best_Excel_Tutorial.
- Исполняемые операторы — это операторы, которые указывают, что должно быть выполнено определенное действие.
Макрос Best_Excel_Tutorial, использованный в качестве примера выше, имеет несколько исполняемых операторов. Например, оператор «ActiveCell.Select» указывает, что Excel должен выбрать текущую активную ячейку.
Особым типом исполняемых операторов являются операторы присваивания.Операторы присваивания присваивают конкретное значение или выражение переменной или константе.
Что такое объекты?
Как вы видели выше, процедуры выполняют задачи или действия.
Вы можете спросить, какова цель этих задач? Другими словами, на какой Excel выполняет конкретное действие?
Ответ — объекты.
Учитывайте грамматику английского языка.
- В обычном английском: объект (обычно) что-то сделал с ним .
- В реальной жизни вы можете найти объекты где угодно, включая ноутбук, который вы используете для работы в Excel.
Лошади — еще один пример объектов.
На самом деле, поскольку я был большим поклонником лошадей, когда был ребенком, я использую их в целях объяснения в этом руководстве по Excel VBA для начинающих, и в этом руководстве есть еще несколько изображений лошадей.
В Visual Basic для приложений все не сильно отличается.Это связано с тем, что большая часть кода VBA работает с объектами (и манипулирует ими). В контексте Excel VBA вы можете работать более чем с 100 объектами.
Ниже приведены некоторые примеры объектов в Visual Basic для приложений:
Можете ли вы заметить 2 объекта в макросе Best_Excel_Tutorial, который использовался в качестве примера?
Если нет, не волнуйтесь; Я указываю на них на следующем снимке экрана.
Объекты ActiveCell и Selection, которые я выделил выше, являются одними из самых распространенных.
- ActiveCell относится к текущей активной ячейке в текущей активной книге Excel.
- Выделение относится к текущему выбранному объекту, который в приведенном выше примере является ячейкой.
Объекты определяются классами, поэтому следующий вопрос…
Что такое классы?
Как я упоминал выше, классы определяют объекты и, в частности, классы определяют следующие аспекты объекта:
- Переменные.
- Недвижимость.
- Процедуры.
- События.
Вследствие вышеизложенного вы можете:
- Думайте об объектах как об экземплярах классов; или
- (Аналогично) Думайте о классах как о схемах.
Например, предположим, что вы управляли компанией, производящей пленочные фотоаппараты. У этой компании был базовый чертеж или технический чертеж, например:
Этот чертеж определяет характеристики каждой из производимых пленочных фотоаппаратов, и, следовательно, эквивалентен классу VBA.Как только у компании есть план, она может производить настоящие камеры.
Фактически произведенные камеры эквивалентны объекту VBA.
Классы— это немного продвинутая тема Excel, поэтому вы вряд ли будете много работать с ними вначале. Но, на всякий случай, теперь вы знаете, что такое класс и чем он отличается от объекта и связан с ним.
Что такое коллекции?
В Visual Basic для приложений слово «коллекция» относится к коллекциям объектов.
На базовом уровне общее использование слова collection не слишком сильно отличается от использования, данного ему в VBA. Как и следовало ожидать, в очень общих чертах, коллекция — это группа объектов, точнее группа связанных объектов.
Следовательно, вы можете использовать коллекции для группировки и управления объектами, которые связаны между собой.
На базовом уровне концепция коллекций относительно проста, но, если вам нужна более графическая иллюстрация, ознакомьтесь со следующей статьей Dr.Коллекция Сьюза.
В контексте VBA:
- Коллекции — это объекты .
- Существует (также) класс коллекции.
Если коллекции группируют объекты, которые связаны между собой, вам может быть интересно…
Как объекты связаны друг с другом?
Объекты могут быть связаны друг с другом несколькими способами. Тем не менее, основным типом отношений является сдерживание .
Отношения содержания присутствуют, когда объекты помещаются в контейнерный объект.Это означает, что объекты могут содержать в себе другие объекты, такие как пластиковый контейнер (объект), в котором хранятся книги доктора Сьюза (другие объекты) на изображении выше.
Очень хороший пример отношений сдерживания — это набор объектов.
Другой важный тип отношений — иерархический, который в основном применим к классам. Иерархические отношения возникают, когда класс является производным от более фундаментального класса.
Что такое недвижимость?
Объекты имеют свойства.Это атрибуты, характеристики или качества, которые можно использовать для описания объекта . В этом руководстве по Excel я затрону тему свойств.
VBA позволяет выполнять оба следующих действия:
- Считывает текущее значение свойств объекта; и
- Изменить свойства объекта.
Возьмем, к примеру, эту лошадь:
Какие у него свойства? Как насчет цвета его волос или глаз? Размер ушей?
Вы уловили идею.
У объектов есть не только свойства, но и методы. Как и следовало ожидать, следующий вопрос, на который я отвечу, будет…
Что такое методы?
Чтобы понять, что это за методы, вернемся к грамматике английского языка.
Как я объяснял выше при определении термина «объект», объект что-то сделал с ним. Метод — это «что-то», которое делается с объектом . Другими словами: метод выражает действие, выполняемое с / над объектом.
С грамматической точки зрения метод (в VBA) примерно эквивалентен глаголу (в английском языке). Подробнее о методах я рассказываю здесь .
Давайте продолжим использовать лошадей, чтобы проиллюстрировать значение этих компонентов Visual Basic для приложений:
Какой пример метода (глагола) можно применить к лошади?
Как насчет верховой езды?
Как свойства и методы выглядят в Excel?
Давайте вернемся к макросу Best_Excel_Tutorial, который я использовал в качестве примера в этом конкретном руководстве для начинающих.Если вы запустите этот макрос, Excel сделает следующее:
- Типы «Это лучший учебник по Excel» в активной ячейке.
- Автоматически подбирает ширину столбца активной ячейки.
- Окрашивает активную ячейку в красный цвет.
- Изменяет цвет шрифта активной ячейки на синий.
Теперь, когда вы знаете, что такое свойство и что такое метод:
Сможете ли вы различить, какие из вышеперечисленных ссылаются на свойство, а какие на метод?
Чтобы ответить на этот вопрос, давайте еще раз взглянем на код VBA:
И давайте внимательнее посмотрим на соответствующие строки, чтобы определить, ссылаются ли они на свойство или метод:
- «ActiveCell.FormulaR1C1 = «Это лучший учебник по Excel» »указывает Excel написать« Это лучший учебник по Excel »в активной ячейке.
ActiveCell возвращает объект. Точнее, возвращает текущую активную ячейку.Так что же такое FormulaR1C1? Свойство или метод?
Имущество. Точнее, Formula R1C1 устанавливает формулу для ActiveCell.
- «Selection.Columns.AutoFit» указывает Excel автоматически подогнать столбец активной ячейки.
В этом случае объект представлен Selection.Столбцы, представляющие столбец текущей активной ячейки.Итак, какова оставшаяся часть заявления? AutoFit — это свойство или метод?
Если вы ответили методом, вы правы. AutoFit изменяет ширину соответствующего столбца для достижения наилучшего соответствия. Другими словами, он что-то делает (автоматически подгоняет) к объекту.
- Часть первого оператора With… End With, которая фактически устанавливает цвет заливки активной ячейки, — «.Color = 255».
Все отдельные операторы в этом операторе With… End With (включая «.Color = 255») относятся к Selection.Interior. Это внутренняя часть текущего выделения (в данном случае активной ячейки).Вы знаете, какой будет вопрос:
Цвет — это свойство или метод?
Поскольку Color устанавливает основной цвет внутренней части активной ячейки, ответ — свойство.
- Наконец, часть второго оператора With… End With, определяющая цвет шрифта, — «.Цвет = –4165632 ”.
Для целей данного руководства по Excel VBA для начинающих это практически тот же случай, что и выше. В этом случае делается ссылка на Selection.Font, который в этом примере является шрифтом текста в активной ячейке.И, поскольку вы уже знаете, что Color — это собственность, я больше не буду вас спрашивать 😉.
Что такое переменные и массивы?
В информатике переменная — это место хранения , которое вы объединяете с именем и используете для представления определенного значения.Это значение хранится в памяти компьютера.
Другими словами: вы используете переменные в качестве заполнителей для определенных значений. Вы можете думать о переменных как о конвертах.
Как можно использовать конверты для хранения информации?
Можно, например:
- Положите информацию в конверт. Это содержимое конверта или, в целях программирования, значение переменной.
- Напишите имя на конверте.Это имя конверта или переменной.
Теперь представим, что вам нужно сказать кому-нибудь, чтобы получить информацию, которая находится внутри определенного конверта. Вы можете описать необходимую информацию одним из следующих способов:
- Путем описания самой информации. В этом случае человек, который помогает вам, должен открыть каждый конверт, чтобы проверить их содержимое.
- Путем упоминания названия соответствующего конверта. В этом случае человеку, помогающему вам, не нужно открывать каждый конверт, чтобы узнать, где находится часть информации, которую он должен получить.
Можете себе представить, почему ссылка на название конверта, а не на саму информацию, может быть более эффективным вариантом?
Но вернемся к действительно важной теме:
лошадей!
Бьюсь об заклад, вы не ожидали этого 😛… но давайте представим, что у вас есть одна из лошадей на изображениях выше, и очень важная часть рациона вашей лошади — кубики сахара.
У лошади 5 разных смотрителей, и каждый день она должна съедать от 5 до 10 кубиков сахара.Чтобы гарантировать, что это так, вы устанавливаете следующее правило: каждый смотритель должен давать лошади 1-2 кубика сахара в день.
В начале каждого дня каждый смотритель должен сообщать, сколько кубиков сахара он дал лошади накануне. Этот отчет составляется путем заполнения следующей таблицы Excel.
Поскольку вы очень эффективный менеджер, вы хотите запрограммировать приложение VBA (назовем его «Horse_Sugar_Cubes»), которое выполняет следующие функции:
- Спрашивает каждого смотрителя, сколько кубиков сахара они дали лошади.
- Если кто-либо из смотрителей не выполнил правило, согласно которому он должен дать лошади 1 или 2 кубика сахара, выдает напоминание.
Прежде чем мы взглянем на реальный код VBA, посмотрим, как макрос Horse_Sugar_Cubes работает на практике:
Это руководство по Excel VBA для начинающих сопровождается книгами Excel, содержащими данные и макросы, которые я использую (включая макрос Horse_Sugar_Cubes). Вы можете сразу же получить бесплатный доступ к этим примерам книг, нажав кнопку под .
Приступим к настройке приложения Horse_Sugar_Cubes. Для этих целей вы можете использовать следующие две переменные:
- Переменная, в которой хранится количество кубиков сахара, отданных лошади конкретным смотрителем. Вы можете назвать эту переменную sugarCubes.
- Переменная, в которой хранится идентификационный номер смотрителя. Вы можете назвать эту переменную caretakerNumber.
Как создать эти переменные?
Чтобы создать переменную в Visual Basic для приложений, вы должны объявить ее.Когда вы объявляете переменную, вы определяете ее имя и характеристики, а также указываете компьютеру выделить место для хранения.
Вы объявляете переменную в VBA с помощью оператора Dim. Я объясняю тему объявления переменных в этом руководстве по Excel. На данный момент имейте в виду следующее:
- Вы можете объявлять переменные на разных уровнях. Уровень, на котором вы объявляете переменную, определяет, когда эта переменная применима.
Например, вы можете объявить переменную в верхней части модуля. Эта переменная известна как переменная уровня модуля и существует, пока модуль загружен. Кроме того, они доступны для использования в любой процедуре соответствующего модуля.
Вы также можете создать переменную с более ограниченным охватом, объявив переменную внутри процедуры. В этом случае эта переменная известна как переменная уровня процедуры. Переменные уровня процедуры могут использоваться только внутри соответствующей процедуры, в которой они были объявлены.
- Поскольку вы используете переменные для хранения разных типов данных, вы можете определять разные типы для переменной. Вы делаете это с помощью ключевого слова As.
Некоторые примеры типов, которые вы можете указать для переменной: Integer, Boolean, String и Range.
Давайте посмотрим, как на практике можно объявить переменные caretakerNumber и sugarCubes.
Я возвращаюсь к теме переменных далее в этом руководстве по Excel VBA, чтобы объяснить, как можно использовать переменные в макросе VBA, чтобы отслеживать, сколько кубиков сахара дается лошади каждый день.
В заключение позвольте мне сделать кратким представлением массивов . Я предоставляю более подробное введение в массивы в этом руководстве по VBA .
Переменные, содержащие одно значение, называются скалярными переменными . Вы используете скалярные переменные при работе с одним элементом.
Что вы делаете, если работаете с группой элементов, связанных друг с другом?
В этих случаях вы используете массивы. Массивы — это наборы проиндексированных элементов, которые имеют один и тот же тип данных и между ними существует логическая связь. .Функция практически такая же, как у переменной: сохранение значений. Основное отличие состоит в том, что массивы могут хранить несколько значений , тогда как скалярные переменные могут содержать только одно значение.
Когда вы используете массив, вы обращаетесь к различным элементам массива, используя общее имя, и различаете их по номеру (называемому нижним индексом или индексом). Например, если у вас была группа из 10 лошадей с номерами от 1 до 10, вы можете называть их лошадьми (1), лошадьми (2), лошадьми (3) и так далее до лошадей (10).
Давайте продолжим изучение основных компонентов VBA, которые появляются в приложении Horse_Sugar_Cubes, понимая…
Что такое состояние?
Условие — это утверждение или выражение, которое принимает значение как истинное или ложное. Затем, , в зависимости от того, было ли выражение истинно или ложно, Excel выполняет (или не выполняет) группу операторов . Другими словами: если условие выполняется (истинно), что-то происходит.
Можете ли вы придумать способ применения условного оператора в разрабатываемом вами приложении VBA, чтобы отслеживать, сколько кубиков сахара дают вашей лошади смотрители?
Подсказка: условные операторы часто используют структуру «если-то».
Если вы внимательно посмотрите на описание двух вещей, которые должно делать приложение Horse_Sugar_Cubes, вы заметите, что второй шаг следует за структурой «если-то». Точнее:
- Если кто-либо из смотрителей не соблюдает правило, согласно которому он должен дать лошади 1 или 2 кубика сахара…
- Затем макрос Horse_Sugar_Cubes выдает напоминание.
Если вы являетесь пользователем Excel, вы могли заметить, что условия не являются исключительными для программирования VBA. Например, несколько функций Excel, таких как функция ЕСЛИ, позволяют проверять, является ли условие истинным или нет, и на основе результата делать то или иное действие. Кроме того, вы можете использовать другие функции, такие как ISNUMBER, для выполнения логических тестов.
Существует несколько способов структурировать условные операторы в приложениях Visual Basic. В приложении Horse_Sugar_Cubes можно использовать оператор If… Then… Else.
Как это выглядит в редакторе Visual Basic?
Вы можете использовать следующий оператор If… Then для макроса Horse_Sugar_Cubes:
Давайте посмотрим на каждую строку в этом фрагменте кода:
- В первой строке указаны 2 условия, которые могут быть истинными или ложными.
Эта конкретная строка просит Excel проверить, является ли значение сахарных кубиков (количество кубиков сахара, которые конкретный смотритель дал лошади) меньше 1 или больше 2.Другими словами, именно здесь Excel подтверждает, выполнил ли конкретный смотритель правило, согласно которому он должен давать лошади 1 или 2 кубика сахара в день.
Если выполняется одно из этих двух условий, Excel выполняет оператор, который отображается во второй строке. Если ни одно из двух условий не выполняется (оба ложны), Excel не выполняет оператор во второй строке.
- Вторая строка сообщает Excel, что он должен делать, если выполняется одно из двух условий, установленных в первой строке.
В этом случае, если смотритель не дал лошади ни одного кубика сахара (менее 1) или дал лошади более 2 кубиков сахара в определенный день, Excel отображает сообщение в диалоговом окне, напоминающее этому смотрителю, что он «должен давайте лошади 1-2 кубика сахара в день ».
- Третья строка завершает блок If… Then… Else.
Теперь вы знаете, как создать переменные, в которых хранится количество кубиков сахара, выданных лошади каждым смотрителем, и идентификационный номер каждого смотрителя.Вы также знаете, как заставить Excel напоминать смотрителю о правиле, согласно которому они должны давать лошади 1 или 2 кубика сахара в день, если они этого не сделали.
Вам нужен только один дополнительный компонент VBA для завершения базовой структуры вашего макроса Horse_Sugar_Cubes:
Как заставить Excel спрашивать каждого из 5 смотрителей, сколько кубиков сахара он дал лошади?
Я помогу вам ответить на этот вопрос в следующем разделе.
Что такое петля?
Циклы — это утверждения, которые:
- Указываются один раз, но…
- Выполняются несколько раз.
Другими словами, цикл — это конкретный оператор, который заставляет группу инструкций выполняться несколько раз . Как и в условных операторах, существует несколько способов структурирования циклов.
Однако для приложения Horse_Sugar_Cubes можно использовать оператор For Each… Next . Этот оператор просит Excel повторно выполнить группу операторов для каждого из компонентов определенной группы.
На практике это выглядит примерно так.Это оператор For Each… Next макроса Horse_Sugar_Cubes, который я использую в качестве примера в этом руководстве по Excel VBA для начинающих.
Обратите внимание, что условное выражение, которое я объясняю в разделе выше, присутствует.
Однако для целей этого раздела более уместна общая структура оператора For Each… Next, поэтому давайте взглянем на нее.
- В начале оператор For Each… Next должен говорить «Для каждого элемента определенного типа в определенной группе».В приведенном выше примере эта строка выглядит следующим образом:
Слово element относится к конкретным элементам коллекции, через которые должен выполняться цикл. В случае, который я использую в качестве примера, элементы — это сахарные кубики.В этом конкретном случае sugarCubes определяется как объектная переменная Range. Если вы находитесь в ситуации, когда элемент не был объявлен ранее, вы объявляете его тип данных.
Последняя часть утверждения относится к группе, в которой находятся элементы.В данном случае это диапазон ячеек от C5 до C9. Это коллекция, в которой повторяются операторы внутри цикла.
Другими словами, Excel применяет набор инструкций внутри цикла к каждой из ячеек, выделенных на следующем снимке экрана.
- Тело простого оператора For Each… Next, такого как в макросе Horse_Sugar_Cubes, включает определенное количество инструкций, которые Excel применяет к каждому из элементов в группе (в соответствии с тем, что было указано в первой строке).
В примере, используемом в этом руководстве по Excel VBA для начинающих, тело операторов выглядит следующим образом:
Приведенная выше группа операторов является очень простым примером. Существуют более сложные структуры, включающие операторы (например, Continue For или Exit For), которые можно использовать для передачи управления различным частям кода VBA. - Последний оператор оператора For Each… Next имеет форму «Следующий элемент». В приведенном выше примере это выглядит следующим образом:
Этот оператор просто завершает определение цикла и сообщает Excel, что после выполнения инструкций внутри цикла он должен перейти к следующему элементу (в данном случае к следующему элементу). сахарные кубики).
Подводя итог, можно сказать, что открывающая и закрывающая строки оператора For Each… Next сообщают Excel, что он должен выполнить инструкции, которые находятся внутри цикла для каждой из 5 ячеек, где количество кубиков сахара, переданных лошади каждым смотрителем, равно быть записанным.
Пример макроса: Horse_Sugar_Cubes
Прежде чем я закончу это руководство по Excel VBA для начинающих, давайте в последний раз построчно рассмотрим полный код VBA, лежащий в основе макроса Horse_Sugar_Cubes, чтобы просмотреть некоторые важные термины, которые были рассмотрены в этом руководстве, и понять каждую из инструкций. за приложением.
Для удобства вот еще раз иллюстрация того, как макрос Horse_Sugar_Cubes работает на практике:
Давайте рассмотрим основные элементы этого макроса, сделав несколько общих комментариев, чтобы проиллюстрировать каждый из терминов, рассматриваемых в этом руководстве:
№1. Общие аспекты.
Приложение Horse_Sugar_Cubes написано на языке Visual Basic для приложений или VBA, языке программирования, который можно использовать для передачи инструкций в Excel .
Horse_Sugar_Cubes сам по себе является макросом , последовательностью инструкций для Excel, которые должны следовать . Код, показанный на скриншоте выше, является примером кода VBA. Термины «макрос», «код VBA», «подпроцедура», «подпрограмма» и «процедура» иногда используются как взаимозаменяемые.
Код VBA, лежащий в основе приложения Horse_Sugar_Cubes, хранится Excel в модуле , контейнере, в котором Excel хранит код VBA .
Макрос Horse_Sugar_Cubes имеет несколько операторов или инструкций .
№2. Sub Horse_Sugar_Cubes () и End Sub.
Первая строка кода на скриншоте выше объявляет подпроцедуру Horse_Sugar_Cubes. Подпроцедура — это серия операторов, которые находятся между операторами Sub и End Sub, а точнее, это часть компьютерной программы, которая выполняет действие .
Другой основной тип процедур в VBA — это Функциональные процедуры, которые выполняют вычисления и возвращают определенное значение .
Последняя строка кода на скриншоте выше завершает выполнение подпроцедуры Horse_Sugar_Cubes. Как только Excel выполнит эту строку, макрос перестает работать.
№ 3. Dim caretakerNumber как целое число и Dim sugarCubes как диапазон.
В Visual Basic для приложений переменные обычно объявляются с помощью оператора Dim. После этого вы можете определить название переменной и ее характеристики. Компьютер выделяет место для хранения переменной, а затем вы можете использовать объявленную переменную в качестве заполнителя для представления определенного значения .
В приведенном выше примере объявлены 2 переменные. caretakerNumber объявлен как целое число, а sugarCubes — как диапазон.
№4. caretakerNumber = 1.
Эта строка представляет собой оператор присваивания, который присваивает значение 1 переменной caretakerNumber. Как следствие этого назначения, каждый раз, когда выполняется макрос Horse_Sugar_Cubes, caretakerNumber устанавливается на начальное значение 1.
№ 5. Для каждого… Следующего утверждения.
A For Each… Next оператор просит Excel выполнить группу операторов повторно для каждого члена группы. Этот тип оператора является одним из простейших способов реализации цикла, оператора, который заставляет конкретную группу инструкций повторяться несколько раз .
В случае макроса Horse_Sugar_Cubes цикл просит Excel повторить соответствующий набор инструкций для каждого из 5 смотрителей лошади. Давайте посмотрим на тело оператора For Each… Next, чтобы понять, какой набор инструкций повторяется:
- сахарные кубики.Значение = InputBox («Количество кубиков сахара, отданных лошади смотрителем» & caretakerNumber).
Первая часть строки (sugarCubes.Value =) присваивает значение переменной sugarCubes.Вторая часть инструкции (InputBox («Количество кубиков сахара, отданных лошади смотрителем» и caretakerNumber)) дает указание Excel показать всплывающее окно ввода, в котором спрашивается, сколько кубиков сахара дает лошади каждый смотритель. Число, введенное в поле, записывается в соответствующую ячейку рабочего листа Excel и является значением, присвоенным переменной sugarCubes.
Поле ввода ссылается на каждого смотрителя по его идентификационному номеру (от 1 до 5) путем вызова значения переменной caretakerNumber (например, первый смотритель упоминается как смотритель 1 и т. Д.). Как следствие оператора, расположенного непосредственно над оператором For Each… Next (caretakerNumber = 1), значение переменной caretakerNumber в начале процесса всегда равно 1. Ниже я поясняю, какой оператор просит Excel обновить номер смотрителя для соответствующий смотритель.
- Условная выписка.
Условные операторы оценивают конкретное условие и, в зависимости от результата (истинный или ложный), Excel выполняет (или воздерживается от выполнения) определенные действия.Условный оператор в макросе Horse_Sugar_Cubes оценивает, дал ли смотритель менее 1 или более 2 кубиков сахара лошади (следовательно, не соблюдается правило, согласно которому они должны давать лошади 1 или 2 кубика сахара в день. ).Если выполняется какое-либо из двух условий (количество кубиков сахара, даваемых лошади, меньше 1 или больше 2), Excel отображает окно сообщения с напоминанием, в котором говорится: «Вы должны давать 1 или 2 кубика сахара в день, чтобы лошадь».
- caretakerNumber = caretakerNumber + 1. Этот оператор увеличивает значение переменной caretakerNumber на 1 для каждого последующего повторения оператора For Each… Next.
Следовательно, второй раз, когда набор инструкций повторяется макросом, caretakerNumber равно 2.В третий раз переменная имеет значение 3. Как и следовало ожидать, значения в четвертый и пятый раз равны 4 и 5 соответственно.
Заключение
Вы дошли до конца этого руководства по Excel VBA для начинающих.
К настоящему времени, основываясь на том, что вы узнали из этого руководства для начинающих, вы знаете значения как минимум 16 основных терминов, которые вам необходимо знать, чтобы изучить программирование на VBA . Вы также можете понять, как некоторые из этих терминов иногда используются взаимозаменяемо, и некоторые дискуссии относительно их использования.
Кроме того, вы видели, как эти концепции объединяются в макрос, и знаете, как некоторые из компонентов VBA, которые были объяснены в этом руководстве по Excel VBA для начинающих, могут быть реализованы на практике.
Я надеюсь, что это руководство по Excel для начинающих доказало, что наиболее важные термины, которые вам нужно знать для изучения программирования на VBA, не так уж сложны для понимания.
Вы, вероятно, встретите термины, которые были рассмотрены в этом конкретном руководстве для начинающих, много раз на своем пути к тому, чтобы стать экспертом по VBA, поэтому вы можете добавить этот пост в закладки и возвращаться по мере необходимости во время будущих исследований Visual Basic для приложений. .
Учебное пособие поExcel VBA — Максимальное руководство по Excel VBA
Добро пожаловать в окончательный учебник по Excel VBA (Visual Basic для приложений)! Вы пройдете путь от VBA Zero до VBA Hero . Это руководство по VBA направлено не только на то, чтобы научить вас писать макросы VBA в Excel –, это общее введение в VBA . Однако некоторые разделы, как вы заметите, действительно нацелены на Excel (например, раздел «Рабочие книги и рабочие листы»).
Учебное пособие по редактору Visual Basic
Чтобы начать программирование на VBA, вам необходимо иметь доступ к вкладке ленты разработчика в Excel, чтобы открыть среду разработчика VBA (VBE). Прочтите статью, чтобы узнать, как:
Вы узнаете:
- Включение ленты разработчика Excel Вкладка
- Прохождение VBE windows
- Ярлыки, как открыть окно VBA
Изучите редактор Visual Basic
Как записывать макросы
Запись макросов — отличный способ протестировать и научиться писать новый код.Просто запишите последовательность шагов и посмотрите, как выглядит выходной код, вместо того, чтобы искать его в Google.
Вы узнаете:
- Запишите свой первый макрос Excel
- Запустить записанный макрос
- Просмотрите сгенерированный код
Научитесь записывать макрос
Как отлаживать VBA
Код отладки — это процесс построчного выполнения кода, часто используемый для понимания процесса, а также для выявления и устранения ошибок времени выполнения макроса. Умение отлаживать код VBA в Excel VBE — ключевой навык.
Вы узнаете:
- Как выполнить Выполнить , Прервать или Сбросить ваш код
- Узнайте, что такое точки останова и как их использовать
- Посмотрите, как запустить код шаг за шагом и различные ярлыки отладки
Научитесь отлаживать VBA
Функции и процедуры VBA
Чтобы выполнить код VBA, вам необходимо начать с VBA Sub (процедура). С другой стороны, функции VBA позволяют обрабатывать и вводить данные, а также возвращать и выводить данные, которые можно использовать для других целей.
Вы узнаете:
- Создайте свой первый макрос VBA Hello World с помощью VBA Sub
- Изучите основы подпрограмм VBA, а также их отличия от функций VBA
- Поймите, как передавать аргументы в подфункцию
Изучите подпрограммы VBA, функции
Переменные VBA
Для обработки данных их нужно где-то хранить. В этом руководстве вы узнаете, как использовать оператор VBA Dim для объявления переменных VBA и всех типов данных, доступных в VBA (строки, числа и т. Д.).).
Вы узнаете:
- Доступные типы данных в VBA
- Как объявлять и определять переменные
- Константы и переменные
- Частные и общедоступные переменные
Выучить переменные VBA
Условия VBA — если… Иначе
Принимать решения сложно, но необходимо в программировании. Оператор VBA If… Then… Else является основным условным оператором для принятия простых логических решений в вашем коде VBA.
Вы узнаете:
- Выполняется оператор If… Else для выполнения базовых условий кода
- логические операторы, такие как
- Функция Iif
Изучите VBA, если условия
VBA Выбрать корпус
Оператор If в VBA отлично подходит для написания нескольких условий. Однако в некоторых случаях необходимо перечислить множество сценариев на основе значений конкретных переменных. Оператор VBA Select Case экономит много времени по сравнению с VBA If.
Вы узнаете:
- Оператор Switch… Case для выполнения нескольких условий на основе одной переменной
- Корпус Статмент
Learn VBA Select Case
Использование циклов VBA: For, ForEach
VBA Циклы For необходимы для многократного выполнения области кода, перечисления по таблицам или выполнения кода в простом цикле.
Вы узнаете:
- Оператор For… Next для выполнения итераций на основе переменной
- Оператор ForEach… Next выполняет итерацию коллекции
- For vs ForEach и когда следует использовать каждый из них
Изучите VBA для петель
Использование циклов VBA: делать пока, делать до
VBA Циклы For позволяют запускать цикл для определенного количества итераций.В случаях, когда циклы необходимо запускать до тех пор, пока не будет выполнено условие (До тех пор, пока не будет выполнено условие) или если они должны выполняться, пока выполняется условие (Выполнить пока), прочтите руководство.
Вы узнаете:
- До… Пока и До… До циклов
- Как выйти / продолжить цикл «Сделать… пока»
Циклы обучения «Пока / до»
Excel VBA Диапазон
Узнайте, как изменить значения ячеек в Excel, изменить формат диапазона Excel и т. Д. Перейдите к руководству, чтобы узнать все о том, как взаимодействовать в вашем макросе VBA с листом Excel.
Узнать диапазон VBA
Форматирование ячеек Excel
Из этого руководства вы узнаете, как форматировать ячейки Excel — изменять их размер, цвет фона, границы, стиль и многое другое.
Изучите формат ячеек VBA
Пользовательская форма VBA
Пользовательские формы позволяют создавать собственные всплывающие окна для взаимодействия пользователей, аналогично окнам сообщений.
Learn VBA UserForms
Excel VBA Tutorial — javatpoint
VBA означает Visual Basic, для приложений, и язык программирования, управляемый событиями, от Microsoft.Сейчас он преимущественно используется с приложениями Microsoft Office, такими как MS Excel, MS-Word и MS-Access.
Это руководство поможет вам изучить основы Excel VBA. Каждый из разделов содержит связанные темы с простыми примерами.
Что такое VBA
VBA означает Visual Basic для приложений . И управляемый событиями язык программирования от Microsoft с приложениями Microsoft Office, такими как MSExcel , MS-Word и MS-Access .
VBA позволяет автоматизировать различные действия в Excel, такие как создание отчетов, подготовка диаграмм и графиков, выполнение вычислений и т. Д. Это действие автоматизации также известно как Macro .
VBA помогает создавать индивидуальные приложения и решения для расширения возможностей этих приложений.
Преимущество этого средства состоит в том, что вам не нужно устанавливать визуальные основы на рабочем столе. И установка Office в конечном итоге поможет вам в достижении цели.Кроме того, вы можете создавать очень мощные инструменты в MS Excel, используя линейное программирование.
VBA можно использовать во всех офисных версиях, от MS-Office 97 до MS-Office 2013 и с любыми доступными последними версиями. Среди VBA наиболее популярен Excel VBA.
VBA — это язык высокого уровня. VBA — это подмножество Visual Basic 6.0. BASIC обозначает B для начинающих A ll-Purpose S ymbolic I nstruction C ode.
Почему именно VBA?
Некоторые моменты, которые вам понятны, зачем использовать VBA, например:
- VBA использует простые операторы на английском языке для написания инструкций.
- Создание пользовательского интерфейса представляет собой перетаскивание и выравнивание элементов управления графического пользовательского интерфейса в VBA.
- VBA очень прост в освоении и требует базовых навыков программирования.
- VBA расширяет функциональные возможности Excel, позволяя заставить Excel работать в соответствии с вашими потребностями.
Применение VBA
Вы думаете, зачем использовать VBA в Excel, поскольку сам MS-Excel предоставляет множество встроенных функций.
MS-Excel предоставляет только основные встроенные функции, которых может быть недостаточно для выполнения сложных вычислений. В таких условиях VBA становится наиболее прозрачным решением.
Например, . Используя встроенные формулы Excel, сложно рассчитать ежемесячный платеж по ссуде. Но легко запрограммировать VBA для такого рода вычислений.
Основы VBA
Во-первых, вам нужно знать основы, прежде чем начинать или писать какой-либо код. Ниже приведены некоторые основы:
Переменная: Переменные — это ячейки памяти. А для работы с VBA вам потребуется объявлять переменные.
Например: Предположим (2x + 5y), где x = 1 и y = 2. В данном выражении x и y являются переменными или им могут быть присвоены любые числа, то есть 3 и 4, соответственно.
Правила создания переменных
- Не используйте зарезервированные слова: Зарезервированные слова — это те слова, которые имеют особое значение в VBA, поэтому вы не можете использовать их в качестве имен переменных.
- Имя переменной не может содержать пробел: Вы не можете определить имя переменной с пробелом, например, последний номер. Вы можете использовать LastNumber или Last_Number .
- Используйте описательные имена: Используйте описательные имена, такие как цена, количество, промежуточная сумма и т. Д., Это упростит понимание вашего кода VBA.
Арифметические операторы: Мы используем правило (BODMAS) в скобках для деления, умножения, сложения и вычитания при работе с выражением, которое использует несколько различных арифметических операторов.
- (+) для добавления
- (-) для вычитания
- (*) для умножения
- (/) для подразделения
Логический оператор: Концепция логического оператора также применяется при работе с VBA, например.
- Если операторы
- И
- ИЛИ
- НЕ
- ИСТИНА
- ЛОЖЬ
Необходимое условие
Чтобы изучить VBA, вы должны установить MS Office и, в основном, MS Excel на вашем компьютере.
Аудитория
Наше руководство по VBA предназначено для начинающих, чтобы помочь им понять основы VBA.