Процедуры VBA

Процедуры VBA

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

Sub Первый_макрос()
'
' Первый_макрос Макрос
' Это мой первый макрос!!!
'
' Сочетание клавиш: Ctrl+Ц
'
    Sheets("Лист1").Select
    Sheets.Add
    Range("C4").Select
    Selection.FormulaR1C1 = "Привет VBA"
    With Selection.Font
        .Name = "Calibri"
        .FontStyle = "полужирный"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .Color = 255
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
End Sub

Объявление процедуры VBA начинается с ключевого слова Sub. Далее идёт название процедуры. В нашем случае — это "Первый_макрос". Дальше скобки, в которых могут задаваться аргументы. Процедура заканчивается ключевым словом "End Sub". Всё, что находится внутри процедуры — это команды на языке VBA, которые выполняют определенные действия. Обращаю ваше внимание на первые строчки, перед которыми стоит одиночный апостроф. Это комментарии, они ни на что не влияют (здесь можете писать что угодно, на работу процедуры это никак не повлияет).

Таким образом, если вы хотите закомментировать какой-то блок кода, то необходимо ставить "’". Если вы поставите "’" — это закомментирует только одну строку. А что делать, если нужно закомментировать много строк (ставить одиночный апостроф перед каждой строкой сильно напрягает). Для начала нужно вывести панель редактирования (цифра 1 на рисунке). Затем нужно выделить блок кода, который нужно закомментировать и нажать на кнопку под цифрой 2:

Процедуры VBA 1

Давайте разберем то, что VBA нам вывел:

Sheets("Лист1").Select

Как не трудно догадаться из названия Sheets — это листы Excel. Sheets представляют собой коллекцию (или грубо говоря массив). В скобках данной коллекции можно указывать элементы, при чем можно указывать, как по названию листа, так и по его порядковому номеру. Метод Select делает данный лист активным (или по-другому — это выбор данного листа).

Возникает вопрос: нам же нужно было только вставить лист, зачем он выделил первый лист? Макрорекодер — это просто переводчик наших действий на язык VBA. То, что он вывел — это результат наших действий. Если бы мы вставили лист каким-то другим способом, то этой бы строки не было. Если убрать данную строку, то лист также вставится нормально. Давайте закомментируем данную строчку.

Команда Sheets.Add создаёт новый лист (добавляет лист в коллекцию Sheets). Обращаю ваше внимание вот на какой момент: каждую книгу Excel можно защитить. Также можно поставить запрет на добавление листов. Если такой запрет стоит, то данная команда не выполнится, и будет возвращена ошибка. Как обрабатывать ошибки в VBA, я напишу в одной из следующих статей. Подпишитесь на обновления, чтобы не пропустить.

Range("C4").Select — данная команда выделяет ячейку "C4" на новом листе.
Selection — это объект, который соответствует выделенному диапазону (на данный момент у нас выделена только одна ячейка).
Selection.FormulaR1C1 = "Привет VBA" — в нашу ячейку записывает "Привет VBA". Метод FormulaR1C1 — это метод, который использует макрорекодер при занесении значения в ячейку. В данном случае можно просто написать

Selection = "Привет VBA".

Конструкция With Selection.Font означает, что сейчас будут сделаны какие-то действия со шрифтом в выделенной области. Более подробно об операторе With будет рассказано в одной из следующих статей.

В данной статье вы узнали о структуре простейшей процедуры на VBA.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *