Презентация к лекции № 6

Download Report

Transcript Презентация к лекции № 6

Ввод кода VBA
Код VBA состоит из инструкций.
После ввода инструкции редактор
VBA выполняет следующие действия:
 вставляет пробелы между
операторами и операндами;
 изменяет регистр символов
ключевых слов, свойств, методов и
переменных;
 проверяет инструкцию на наличие
синтаксических ошибок.
Комментарии
Комментарий – это часть программы, которая
игнорируется компилятором.
Комментариями в VBA считается часть строки,
начинающаяся с апострофа.
Используйте комментарии:
 для описания назначений переменных;
 для краткого описания назначения каждой
процедуры и функции;
 для описания изменений, которые были
внесены в процедуру или функцию;
 для указания функции или конструкции,
использующейся нестандартным способом.
Типы данных
Тип является характеристикой
переменной, которая определяет:
 какие данные могут храниться в
переменной;
 какие операции могут
выполняться над переменной;
 размер ячейки памяти для
переменной.
Типы данных
Тип
Boolean
Byte
Integer
Long
Хранимые данные
Логические значения True и False
Целые числа в диапазоне 0..255
Целые числа в диапазоне -32768..32767
Целые числа в диапазоне
-2147483648..2147483647
Single
Вещественные числа,
от -3.402823E38 до -1.401298E-45,
от 1.401298E-45 до 3.402823E38
Double
Вещественные числа,
от -1.79769313486231E308
до -4.94065645841247E-324,
от 4.94065645841247E-324
до 1.79769313486232E308
Currency Вещественные числа в диапазоне
от -922,337,203,685,477.5808
до 922,337,203,685,477.5807
Операции
Логические – not, and, or
Арифметические
–
^
*
/
\
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
MsgBox v1 & v2
'168
'12345
Dim v As Variant
v = 46.7
MsgBox VarType(v)
MsgBox TypeName(v)
'5
'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)
Коды ошибок,
возникающих в формулах
Константа
Номер
xlErrDiv0
2007
Ошибка
#ДЕЛ/0!
xlErrNA
2042
#Н/Д
xlErrName
2029
#ИМЯ?
xlErrNull
2000
#ПУСТО!
xlErrNum
2036
#ЧИСЛО!
xlErrRef
2023
#ССЫЛ!
xlErrValue
2015
#ЗНАЧ!
Переменные
Под переменной в программировании понимается
поименованная область памяти, в которой хранится
некоторое значение, причём это значение может
изменяться в ходе выполнения программы.
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) = -3.568
Динамические массивы
Динамические массивы – это массивы,
которые
не
имеют
предопределённого
количества элементов.
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
<инструкции1>
[Else
<инструкции2>]
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 <условие1> Then
<инструкции1>
Elseif <условие2> Then
<инструкции2>
...
Elseif <условиеn> Then
<инструкцииn>
Else
<инструкцииn+1>
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 =
Selection.Font.Italic
Selection.Font.Size =
Selection.Font.Name =
True
= True
14
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