Ввод кода VBA Код VBA состоит из инструкций. После ввода инструкции редактор VBA выполняет следующие действия: вставляет пробелы между операторами и операндами; изменяет регистр символов ключевых слов, свойств, методов и переменных; проверяет инструкцию на наличие синтаксических ошибок.
Комментарии Комментарий – это часть программы, которая игнорируется компилятором. Комментариями в VBA считается часть строки, начинающаяся с апострофа. Используйте комментарии: для описания назначений переменных; для краткого описания назначения каждой процедуры и функции; для описания изменений, которые были внесены в процедуру или функцию; для указания функции или конструкции, использующейся нестандартным способом.
Типы данных Тип является характеристикой переменной, которая определяет: какие данные могут храниться в переменной; какие операции могут выполняться над переменной; размер ячейки памяти для переменной.
Типы данных ТипХранимые данныеОперации BooleanЛогические значения True и FalseЛогические – not, and, or ByteЦелые числа в диапазоне Арифметические – ^ * / \ mod + - Отношения = > >= <
Типы данных ТипХранимые данныеОперации DateЗначения даты и времени в диапазоне от 1 января 100 года до 31 декабря 9999 года Арифметические (вычитание) DateAdd DateDiff DatePart DateValue StringСтроки длиной до 2 млрд. символовКонкатенация – & Отношения VariantЗначения любого типаЗависит от реального типа данных
Работа с типом Variant Dim v1 As Variant, v2 As Variant v1 = "123" v2 = 45 MsgBox v1 + v2'168 MsgBox v1 & v2'12345 Dim v As Variant v = 46.7 MsgBox VarType(v)'5 MsgBox TypeName(v)'Double
Работа с типом Variant Чтобы не запоминать числа, соответствующие тому или иному типу, в VBA введены константы, имена которых запомнить намного проще – vbBoolean, vbByte, vbInteger, vbLong, vbSingle, vbDouble, vbCurrency, vbDate, vbString, vbArray. If VarType(v) = vbDouble Then... Dim v As Variant v = CVErr(0)
Коды ошибок, возникающих в формулах КонстантаНомерОшибка xlErrDiv02007 #ДЕЛ/0! xlErrNA2042 #Н/Д xlErrName2029 #ИМЯ? xlErrNull2000 #ПУСТО! xlErrNum2036 #ЧИСЛО! xlErrRef2023 #ССЫЛ! xlErrValue2015 #ЗНАЧ!
Переменные Под переменной в программировании понимается поименованная область памяти, в которой хранится некоторое значение, причём это значение может изменяться в ходе выполнения программы. Dim [As ] Dim n As Integer Dim i, j, k As Integer 'Только переменная k имеет тип Integer! Dim i As Integer, j As Integer, k As Integer 'Теперь все переменные имеют тип Integer Option Explicit
Константы Если некоторое значение используется несколько раз, лучше не вставлять его в несколько инструкций, а объявить в виде константы. Const [As ] = Const count As Integer = 255 Const tax = 0.13, expDate = #12/31/2012#
Массивы Массив – это переменная, состоящая из нескольких элементов одного типа, для доступа к которым используется один или несколько индексов. Dim ( To ) As Dim a (1 To 100) As Integer Dim b (1 To 10, 1 To 10) As Double a(3) = 7 b(5, 2) =
Динамические массивы Динамические массивы – это массивы, которые не имеют предопределённого количества элементов. Dim a() As Integer... ReDim a(1 To n)
Объектные переменные Объектная переменная – это переменная, представляющая собой объект VBA, например, диапазон или рабочий лист. Объектные переменные важны по следующим причинам: они упрощают программу; они ускоряют выполнение программы. Dim MyCell As Range Set MyCell = Worksheets("Лист1").Range("A1") MyCell.Value = 125 MyCell.Font.Bold = True MyCell.Font.Italic = True MyCell.Font.Size = 14 MyCell.Font.Name = Cambria
Условный оператор Условный оператор позволяет осуществлять выбор действий, которые надо выполнить, в зависимости от некоторого условия. If Then [Else ] End If
Условный оператор If k 0 Then s = s / k End If If k 0 Then s = s/ k If x > y Then s = s + x Else s = s + y End If
Условный оператор If Then Elseif Then... Elseif Then Else End If
Условный оператор Dim quantity As Integer Dim discount As Double If quantity > 100 Then discount = 0.25 ElseIf quantity > 75 Then discount = 0.2 Elseif quantity > 50 Then discount = 0.1 Else discount = 0 End If
Циклы Циклы позволяют многократно выполнять некоторую последовательность действий, используя логические выражения для определения момента прекращения выполнения цикла. Наиболее часто используемым является параметрический цикл. For = To [Step ] [Exit For] Next
Циклы Dim sum As Double, i As Integer sum = 0 For i = 1 to 100 sum = sum + sqr(i) Next i Dim sum As Double, i As Integer sum = 0 For i = 3 to 100 Step 3 sum = sum + sqr(i) Next i
Циклы Dim r As Long For r = 10 To 2 Step -2 Rows(r).Delete Next r Dim sum As Double, threshold As Double, i As Integer sum = 0 threshold = 100 For i = 1 to 100 sum = sum + sqr(i) If sum > threshold Exit For End If Next i
Циклы Dim r as Range, sum As Double, i As Integer, j As Integer sum = 0 For i = 1 To r.Rows.Count For j = 1 To r.Columns.Count sum = sum + r.Cells(i, j) Next j Next i Dim r as Range, k As Integer, i As Integer, j As Integer k = 0 For i = 1 To r.Rows.Count For j = 1 To r.Columns.Count If r.Cells(i, j) > 0 Then k = k + 1 Next j Next i
Работа с объектами и коллекциями Конструкция With – End With позволяет выполнить несколько операций над одним объектом. With End With
Работа с объектами и коллекциями With Selection.Font.Bold = True.Italic = True.Size = 14.Name = Cambria End With Selection.Font.Bold = True Selection.Font.Italic = True Selection.Font.Size = 14 Selection.Font.Name = Cambria
Работа с объектами и коллекциями Конструкция For Each – Next позволяет обработать все элементы какой-либо коллекции. For Each In [Exit For] Next
Работа с объектами и коллекциями Dim item As Worksheet For Each item In ActiveWorkbook.Worksheets MsgBox item.Name Next item Dim book As Workbook For Each book In Workbooks If book.Name ActiveWorkbook.Name _ Then book.Close Next book
Работа с объектами и коллекциями Dim cell As Range For Each cell In Selection If cell.Value < 0 Then cell.Select Exit For End If Next cell