Программирование на Visual Basic for Application (VBA)

advertisement
Программирование на Visual
Basic for Application (VBA)
Загрузка редактора VBA
• Сервис → Макрос→ Редактор Visual
Basic;
• Alt+ F11;
• Кнопка «Редактор Visual Basic» на
панели инструментов «Visual Basic»
Окно редактора VBA
Грамматика языка
программирования VBA
Язык программирования VBA использует
свой алфавит, включающий буквы
латинского алфавита и кириллицу;
цифры от 0 до 9, символ
подчеркивания. В состав алфавита
также входят пробелы для отделения
слов друг от друга и знаки операций (+ * / ^ = > < ( ) [ ] { } ‘ & @ ), в том числе
составные ( >=, <=, <>(знак «не равно»).
Правила формирования имен
переменных, констант, процедур
• первым символом имени должна быть
буква, имя должно быть содержательным;
• остальные символы – буквы и цифры;
• в имени нельзя использовать точку;
• число символов в имени не должно быть
больше 255;
• имя не должно быть ключевым символом
языка Visual Basic.
Примеры правильных имен:
strMyName, strФамилия
Примеры неправильных имен:
2Week, Second.Week
Форматы операторов VBA
Переменная = Значение
• Объект.Свойство = Значение
• Объект.Метод [Параметр1] [,Параметр2]…]
• Процедура([Параметр1] [,Параметр2]…] )
Примеры операторов
• а=x^2 ‘присвоение переменной а значения x2
• Sheets(“Лист1”).Select ‘ оператор выделения
рабочего листа, где Sheets(“Лист1”) - объект,
Select - метод
• Sheets(“Лист1”).Range(“A1”).Value =
Sheets(“Выпуск продукции”).Range(“D5”)
‘оператор, присваивающий ячейке Лист1!А1
значение из ячейки Выпуск продукции!D5,
Value – свойство
• MsgBox ("Привет" ) ‘выдача в специальное
текстовое окно слова "Привет".
Основные объекты, входящие в
приложение
Объект
Application
Что определяет
приложение
Workbook(“имя книги”)
книга
Sheets(“имя листа”)
Cells
лист
все ячейки выбранного листа
Range(“адрес диапазона”) диапазон ячеек в формате А1
Cells(№
строки,
№ ячейку по номеру строки и
столбца)
номеру столбца
ActiveCell
Offset(К строк, М
столбцов)
Selection
активную ячейку
смещение относительно
выбранной ячейки
выбранный объект
Основные свойства объектов внутри
листа
Свойство
(Properties)
Value
значение ячейки
Font.Name
имя шрифта (например”Arial Cyr”)
Font.ColorIndex
цвет букв (1-чёрный, 2- белый, 3красный, 4 –зелёный)
размер букв
Font.Size
Значение свойства
Interior.ColorIndex цвет фона (5-синий, 6- желтый, 7малиновый, 8 –голубой)
NumberFormat
формат числа (Например "0.00" означает 2
знака после запятой)
Основные методы, применяемые к
объектам внутри листа
Метод
Пояснение
Select
позволяет выбрать указанный
ячеек, ячейку;
диапазон: лист, блок
Copy
копирует содержимое выбранного диапазона в буфер
обмена
Paste
вставляет содержимое буфера обмена в выбранный
диапазон
Clear
позволяет очистить указанный диапазон(содержимое
и форматирование)
ClearContents
позволяет очистить содержимое указанного
диапазона
Show
вызывает экранную форму (Например F5.Show
вызывает форму с именем F5)
Hide
скрывает экранную форму (например F5. Hide)
Примеры доступа к диапазону ячеек
• Sheets(“Лист1”).Range(“A7”)=34 ‘вывод в ячейку A7 листа 1 числа
34
• Range(“A7”)=34 ‘вывод в ячейку A7 числа 34 текущего листа
• Sheets(1).Cells(7, 1).Value=“привет” ‘вывод в ячейку A7 листа 1
слова “привет”
• Cells(7, 1).Value=“привет” ‘вывод в ячейку A7 текущего листа слова
“привет”
• Range(ActiveCell, ActiveCell.Offset(6, 0)).Select ‘ выбирает диапазон
начиная с активной ячейки до ячейки расположенной на 6 строк
ниже.
• Selection.Copy ‘ копирует содержимое выделенного диапазона в
буфер обмена.
• Range(“A7:А12”).Select ‘ выбирает диапазон, начиная с ячейки A7
до ячейки А12
• Selection. Paste ‘ вставляет содержимое выделенного диапазона из
буфера обмена.
• Sheets("Результат").Select ‘ выбирает лист "Результат".
• Cells.Select ‘ выбирает все ячейки выбранного листа.
• Selection.ClearContents ‘ очищает содержимое листа
Основные объекты редактора форм
Объект
Пояснение
UserForm1
Экранная форма
CommandButton1 Кнопка
Textbox1
Текстовое поле
Label1
Метка
Imagel1
Рисунок
Основные свойства объектов
редактора форм
Свойство
(Properties)
Значение свойства
Caption
заголовок
Name
имя
Picture
вид рисунка(способ создания)
Enabled
доступность( False - не доступен, True – доступен)
Visible
видимость ( False - не виден, True – виден)
Value
значение текстового окна (ячейки на листе)
Text
значение текстового окна
Font
имя шрифта
ForeColor
цвет букв
BackColor
цвет фона
Основные события, происходящие с
объектами редактора форм
Событие
Пояснение
Click
щелчёк по объекту
DblClick
Двойной щелчёк по объекту
Activate
Открытие формы
QeryClose
Закрытие формы
Chance
Изменение содержимого текстового окна
Числовые типы данных
Тип
перемен
ной
Integer
Объем
Суф
занимаемой
фикс
памяти
%
Название и диапазон изменения
2 байта
Целое число принимает значения от –
32768 до +32767
Single
!
4 байта
Число с плавающей запятой одинарной
точности от 1.401298Е-35 до 3.4022823Е38
по модулю
Long
&
4 байта
Целое число двойной точности от 2147483648 до +2147483647
8 байт
Число с плавающей запятой двойной
точности от 31,79769313486232х10308 до
4,94065645841247х10-324 по модулю
1 байт
Целое число принимает значения от 0 до
+255
Double
Byte
#
Другие типы данных
Тип
Объем
Суф
переменн
занимаемой
фикс
ой
памяти
Boolean
String
$
Variant
Date
Currency
@
Название и диапазон изменения
2 байта
Логическая переменная (принимает
значения: True (истина) или False (ложь))
1 байт на
каждый
символ
Строковая переменная (приблизительно
до 65500 (16 разрядный код), до 2х1032
(32 разрядный код))
≥ 16 байт
Любая переменная
8 байт
Дата от 1 января 100 г. до 31 декабря
9999 г.
8 байт
Числа в денежном формате
Объявление переменной в
программе
Dim ИмяПеременной1 [As Тип],
ИмяПеременной2 [As Тип] , ….
где: Dim - ключевое слово, которое сообщает
программе имя переменной и резервирует
область памяти для хранения ее значения,
ИмяПеременной - идентификатор,
определяющий допустимое имя; As ключевое слово для определения типа.
Примеры объявления переменных
• Dim Cost As Integer ‘переменная типа
целое число
• Dim tovar As String ‘текстовая
переменная, длиной 256 символов
• Stroka As String*20 ‘текстовая
переменная, длиной 20 символов.
Линейные алгоритмы. Оператор
присваивания
Синтаксис оператора выглядит так:
Result=5
Такая запись означает, что в ячейку памяти с
идентификатором Result будет положено
число 5, Знак «=» означает присвоение.
Читается так: переменной Result присвоить
значение 5.
Например, в результате выполнения фрагмента
такой фрагмент программы:
X=1: X=X+5
Значение переменной X будет равно 6.
Математические операции
A^B
Возведение A в степень B
-A
Перемена знака A
A*B
Умножение A на B
A/B
Деление A на B
A\B
Целочисленное деление A на B
A Mod B
Деление по модулю A на B
A+B
Сложение A с B
A-B
Вычитание B из A
Операции сравнения
>
больше
>=
Больше или равно
<
меньше
<=
меньше или равно
=
равно
<>
не равно
Математические функции
Sin(A)
Синус числа A
Cos(A)
Косинус числа A
Tan(A)
Тангенс числа A
Atn(A)
Арктангенс числа A
Int(A)
Наибольшее число, не превышающее число A
Round(A,n)
Числа A округлённое до n знаков после запятой
Exp(A)
Показательная функция числа A (eA)
Log(A)
Натуральный логарифм числа A
CInt(A)
Целое число, ближайшее к A
Sqr(A)
Квадратный корень из числа A
Abs(A)
Абсолютное значение числа A
Rnd(A)
Случайное число
Логические операции
AND
и – логическое умножение
OR
или - логическое сложение
NOT
не - логическое отрицание
Текстовая операция & и текстовые
функции
& или +
Len(S)
InStr(S,T)
Left(S,K)
Right(S,K)
сцепление строк или конкатенация
Val(S)
Str(A)
преобразование строки S в число
преобразование числа А в строку сим
волов
Mid(S,P,[K])
выделение подстроки с позиции P
длиной K
определение длины строки S
поиск подстроки T в строке S
выделение подстроки слева длиной K
выделение подстроки справа длиной K
Задача
Создать проект
программы для
нахождения площади
треугольника по
S  (p  ba)(p  bc)(p  ac)p
формуле Герона.
Здесь pba  bc  ac
полупериметр, а ba, p 
2
bc и ас стороны
треугольника
Интерфейс проекта «Формула
Герона»
Изменённые свойства объектов
проекта «Формула Герона»
Объект
Свойство(Properties)
Новое значение
UserForm1(форма)
Caption (Заголовок)
формула Герона
CommandButton1
(Кнопка)
Caption (Заголовок)
Расчёт
Caption (Имя)
Com1
Textbox1
Name
ТBA
Textbox2
Name
ТBC
Textbox3
Name
ТAC
Textbox4
Name
tss
Label1
Caption
ba
Label2
Caption
bc
Label3
Caption
ac
Label4
Caption
Площадь треугольника
Imagel(рисунок)
Picture
Bitmap(вставлен
треугольника)
рисунок
Текст программы
Private Sub Com1_Click()
Dim ba, bc, ac, ss, pr As Single
bc = Val(TBC.Text)
ac = Val(TAC.Text)
ba = Val(TBA.Text)
pr = (bc + ba + ac)
ss = Sqr((pr - bc) * (pr - ac) * (pr - ba))
tss.Text = Format(ss, "#.## cm^2")
End Sub
Задача 1
Алгоритм, представленный блок-схемой,
выдаст ошибку при следующих значениях
переменной X:
X=-5 X=1 X=5 X=-2
Начало
Y=X+5
Z=3X+6
Y=Y/Z
Конец
Задача 2
Установите порядок выполнения
операций так, чтобы при начальных
значениях A=1,B=1, C=1
результирующим стало С=25.
1) B=B+A+1
2) A=A+1
3) C=B+1
4) C=C*5
Решение задачи 2
1) A=A+1
2) B=B+A+1
3) C=B+1
4) C=C*5
Задача 3
Какие виды операторов
содержит приведенный фрагмент блоксхемы?
Блок1
Блок2
Блок3
Задача 4
Результатом выполнения алгоритма,
приведенного ниже, будут
следующие величины:
A=15
B=12
A=A-B
B=B+A
X=A*B
Y=A+B
Вывод X,Y
Download