Программирование на 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