Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «Тихоокеанский государственный университет»
Программирование на VBA в MS Excel
Методические указания к выполнению лабораторных работ № 1–4 по информатике
для студентов дневной формы обучения
Хабаровск Издательство ТОГУ
2010
УДК 511.3
Программирование на VBA в MS Excel : методические указания к выполнению лабораторных работ № 1–4 по информатике для студентов дневной формы обучения / cост. Н. О. Бегункова, Н. Д. Белова, Т. А. Бочарова. – Хабаровск : Изд-во Тихоокеан. гос. ун-та, 2010. – 44 с.
Методические указания составлены на кафедре «Информатика». Включают 4 лабораторные работы, содержащие задания на создание макросов в MS Excel и простых проектов в среде программирования VBA с использованием пользовательских форм. Каждая лабораторная работа содержит основные сведения, примеры, снабженные комментариями, варианты индивидуальных заданий.
Печатается в соответствии с решениями кафедры «Информатика» и методического совета факультета математического моделирования и процессов управления.
© Тихоокеанский государственный университет, 2010
ОБЩИЕ СВЕДЕНИЯ
ПО VISUAL BASIC FOR APPLICATIONS В MS EXCEL
При работе с приложениями Microsoft Office часто возникает задача их автоматизации. Одним из ее решений является использование VBA.
VBA (Visual Basic for Applications) – это язык программирования, поддер-
живаемый всеми приложениями пакета Microsoft Office, в том числе VBA является основным средством разработки в MS Excel.
VBA относительно прост и удобен в освоении и позволяет быстро получить ощутимые результаты – конструировать профессиональные приложения для решения практически любых задач в среде Microsoft Windows.
VBA относится к языкам объектно-ориентированного программирования. Каждое приложение Microsoft Office имеет свой уникальный набор объектов с их собственными свойствами и методами.
MS Excel имеет более 100 объектов, среди которых чаще всего используют-
ся следующие: Application (Приложение); Workbook (Рабочая книга); WorkSheet (Рабочий лист); Range (Диапазон ячеек); UserForm (Пользовательская форма).
Интегрированная среда разработки VBA представлена приложением, называемым редактор Visual Basic. Редактор VB активизируется командой Сервис → Макрос → Редактор Visual Basic или нажатием комбинации клавиш
Alt + F11.
Окно редактора VB включает следующие основные компоненты (рис. 1): строка меню, панель инструментов, окно проекта, окно свойств, окно редактирования кода, окно конструктора форм.
Программа не является самостоятельным структурным элементом в иерархии объектов языка VBA, поэтому редактор VB распознает по именам не про-
граммы, а процедуры, модули и проекты:
•процедура – отдельная единица программного кода VBA, которую можно вызвать по имени для выполнения, либо она может выполняться самостоятельно. Любая процедура содержит один или несколько операторов;
•модуль – именованная единица, состоящая из одной или нескольких процедур или раздела объявления, в котором объявляются переменные, константы, пользовательские типы данных, а также устанавливаются параметры компилятора;
•проект включает в себя все модули, формы и связанные с приложением объекты, относящиеся к конкретной рабочей книге, причем проект сохраняется вместе с самой книгой.
Наименьшей единицей VBA-кода является оператор. Он предназначен для определения переменной, установки параметров или выполнения какого-либо действия в программе.
3
Рис. 1. Окно редактора VB
Для выполнения программного кода в редакторе VB используется команда
Run → Run Sub / UserForm, либо кнопка «Run Sub / UserForm» на панели ин-
струментов, либо функциональная клавиша F5.
Кроме того, для правильной работы рабочих книг, содержащих разработанные пользователем программы на VBA, необходимо изменить уровень безопасности на «Средний», воспользовавшись командой Сервис → Макрос → Безопасность.
4
СОЗДАНИЕ И ВЫПОЛНЕНИЕ МАКРОСОВ
Основные сведения
Макрос – это записанная последовательность заданных пользователем команд и действий, хранящаяся в форме программы на языке VBA и сохранённая под уникальным именем, которую может выполнить Excel.
При записи макроса запоминаются все действия пользователя, будь то нажатие клавиши или выбор определенной команды меню, которые автоматически преобразуются в программный код на языке VBA.
Пример 1
Создадим простой макрос, который изменяет шрифт, цвет заливки и направление текста в ячейке. Для этого выполним следующие действия:
1.Откроем новую книгу в MS Excel.
2.В ячейку А1 введем название института, в котором вы учитесь, а в ячейку В1 – название группы.
3.Установим курсор в ячейке А1.
4.Нажмем кнопку «Записать макрос» на панели Visual Basic (Вид → Пане-
ли инструментов → Visual Basic) или воспользуемся командой меню Сер-
вис → Макрос → Начать запись.
5.В диалоговом окне Запись макроса (рис. 2) введем имя макроса «Оформление_Ячейки» (имя макроса должно начинаться с буквы и может содержать до 255 символов: буквы, цифры и знаки подчёркивания, а пробелы не допускаются) и сочетание клавиш для дальнейшего
вызова макроса – Ctrl+о, выберем место сохранения – «Эта книга» и
нажмем кнопку «ОК». |
Рис. 2. Диалоговое окно Запись макроса |
6.Выполним команду Формат → Ячейки. В диалоговом окне Формат ячеек перейдем на вкладку Шрифт и
установим название шрифта Times New Roman, размер – 18 пунктов, начертание – «полужирный».
7.Перейдем на вкладку Вид и выберем цвет заливки ячейки – зеленый.
8.Далее активизируем вкладку Выравнивание и ориентацию текста изменим на 90 градусов.
9.Нажмем кнопку «ОК».
5
10.Нажмем кнопку «Остановить запись» или выполним команду Сервис → Макрос → Остановить запись.
Теперь воспользуемся созданным нами макросом для изменения формата ячейки В1:
1.Активизируем ячейку В1.
2.Воспользуемся комбинацией клавиш Ctrl+о либо выполним команду Сервис → Макрос → Макросы и, выбрав в появившемся диалоговом окне
макрос |
«Оформление_Ячейки» |
||
(рис. 3), нажмем кнопку «Выпол- |
|||
нить». |
|||
Чтобы просмотреть полученный |
|||
при записи макроса код или, если не- |
|||
обходимо, отредактировать его, не- |
|||
обходимо выполнить следующие дей- |
|||
ствия: |
|||
1. Открыть |
диалоговое |
окно |
|
Макрос (рис. 3) через команду |
|||
Сервис → Макрос → Макросы. |
Рис. 3. Диалоговое окно Макрос |
2.Выделить имя нужного макроса и
нажать кнопку «Изменить». Откроется окно редактора VB (рис. 4). Отредактируем код созданного в примере 1 макроса, изменив начертание
шрифта (FontStyle) на «курсив» и цвет заливки ячейки на синий (ColorIndex =5). Текст кода макроса примет вид:
Sub Оформление_Ячейки()
‘
‘Оформление_Ячейки Макрос
‘Макрос записан 10.05.2009 (Natalya)
‘Сочетание клавиш: Ctrl+о
‘
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False End With
With Selection.Font
.Name = «Times New Roman»
.FontStyle = «курсив»
.Size = 18
6
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic End With
With Selection.Interior
.ColorIndex = 5
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic End With
End Sub
Рис. 4. Окно редактора VB
Применим отредактированный нами макрос к ячейке В1.
Существуют несколько способов запуска макроса на выполнение:
СпособU 1.U Запуск макроса через команду Сервис → Макрос → Макросы.
СпособU 2.U Назначение комбинации клавиш для вызова макроса. СпособU 3.U Назначение макроса командной кнопке.
Для того чтобы создать командную кнопку, с помощью которой будет выполняться макрос, необходимо:
7
1.Открыть панель инструментов Форма через меню Вид → Панели инст-
рументов → Формы (рис. 5).
2.Нажав на инструмент Кнопка панели инструментов Формы, поместить указатель мыши в то место, где будет располагаться командная кнопка, и, не отпуская левую кнопку мыши, придать кнопке нужный размер.
3.В появившемся диалоговом окне
Назначить макрос объекту (рис. 6)
выбрать нужный макрос и нажать кнопку «ОК».
4. Выделить |
надпись |
Кнопка1 на |
Рис. 5. Панель инструментов Формы |
|
командной |
кнопке |
и |
ввести |
|
соответствующее название для |
||||
данной кнопки. |
5.Щёлкнуть вне кнопки, чтобы
снять с неё выделение. |
|||
СпособU |
4 |
||
Назначение макроса графиче- |
|||
скому изображению. |
|||
Назначить макрос графиче- |
|||
скому изображению можно сле- |
|||
дующим образом: |
|||
1. Используя панель Рисование, |
|||
нарисовать на листе автофи- |
|||
гуру или выбрать изображение |
Рис. 6. Окно Назначить макрос объекту |
||
для вставки на рабочий лист. |
2.Придать полученному изображению соответствующие размеры.
3.Нажав на изображении правую кнопку мыши, в открывшемся контекстном меню выбрать команду Назначить макрос.
4.В появившемся диалоговом окне Назначить макрос объекту выбрать нужный макрос и нажать кнопку «ОК».
5.Щёлкнуть вне графического изображения, чтобы снять с него выделение. СпособU 5
Назначение макроса кнопке на панели инструментов
Чтобы воспользоваться возможностью назначить макрос кнопке на панели инструментов, необходимы следующие действия:
8
Запускает макрос «Оформление_Ячейки»
Рис. 8. Назначение макроса объектам
«Налог», «К выдаче», а второй –
1.Выполнить команду Сервис → Настройка.
2.В диалоговом окне Настройка перейти на вкладку Команды и в списке Категории выбрать
Макросы, а в списке Команды – Настраиваемая кнопка (рис. 7).
3.Перенести команду Настраиваемая кнопка на какую-либо панель инструментов.
4.Нажав правой кнопкой мыши на вновь добавленную кнопку, в появившемся контекстном меню вы-
брать пункт Выбрать значок для
кнопки и в открывшемся списке Рис. 7. Диалоговое окно Настройка значков указать любой из них.
5.Снова открыв то же контекстное меню, выбрать пункт Назначить макрос.
6.В открывшемся диалоговом окне Назначить макрос выделить нужный макрос и нажать кнопку «ОК».
7.Закрыть диалоговое окно Настройка.
Для примера назначим макрос «Оформление_Ячейки» из примера 1 командной кнопке, графическому изображению и кнопке на панели инструментов (рис. 8). Нажав кнопкой на данные объ-
екты, мы выполним созданный макрос.
Пример 2
Разработаем в Excel таблицу расчета заработной платы (ФИО, начислено, налог, к выдаче) и создадим два макроса.
Первый макрос будет отвечать за расчет значений в графах «Налог» и «К выдаче», а также итоговых сумм по полям «Начислено», за оформление таблицы.
Для решения поставленной задачи выполним следующие действия:
1.Откроем новую книгу Excel и сформируем таблицу, заполнив шапку таблицы и поля «ФИО» и «Начислено» данными (рис. 9).
2.Создадим первый макрос, который будет вычислять значения в графах «Начислено», «Налог» и «К выдаче». Для чего, предварительно сделав активной ячейку С2, нажмем кнопку «Записать макрос» на панели инстру-
9
ментов Visual Basic, зададим имя макроса «Расчет_зарплаты» и выполним следующую последовательность действий:
•в ячейку С2 введем формулу «=B2*$C$8», а в ячейку D2 – формулу
«=B2-C2»;
•выделим диапазон ячеек (С2:D2) и, используя маркер заполнения, скопируем их в четыре нижние ячейки;
•в ячейку В7 введем фор-
мулу «=СУММ(B2:B6)» и
скопируем ее в ячейки Рис. 9. Таблица с исходными данными
С7 и D7;
• остановим запись макроса. Код макроса представлен ниже:
Sub Расчет_зарплаты()
‘
‘Расчет_зарплаты Макрос
‘Макрос записан 10.05.2009 (Natalya)
ActiveCell.FormulaR1C1 = «=RC[-1]*R8C3» Range(«D2»).Select
ActiveCell.FormulaR1C1 = «=RC[-2]-RC[-1]» Range(«C2:D2»).Select
Selection.AutoFill Destination:=Range(«C2:D6»), Type:=xlFillDefault Range(«C2:D6»).Select
Range(«B7»).Select
ActiveCell.FormulaR1C1 = «=SUM(R[-5]C:R[-1]C)»
Selection.AutoFill Destination:=Range(«B7:D7»), Type:=xlFillDefault Range(«B7:D7»).Select
Range(«D8»).Select End Sub
3.Создадим второй макрос, который будет отвечать за оформление таблицы. Для этого, предварительно сделав активной ячейку А1, нажмем кнопку «Записать макрос», зададим имя макроса «Формат_таблицы» и выполним следующую последовательность действий:
•выделим диапазон ячеек (А1:D1) и через Формат → Ячейки в диалоговом окне на вкладке Шрифт выберем начертание – «полужирный», а на вкладке Выравнивание в категории «Выравнивание по горизонтали» – «по центру»;
10
•для ячейки А7 на вкладке Шрифт диалогового окна Формат ячеек выберем начертание – «полужирный»;
•выделим диапазон ячеек (А2:А8) и через Формат → Ячейки в диалоговом окне на вкладке Выравнивание в категории «Выравнивание по горизонтали» выберем – «по левому краю», в категории «Выравнивание по вертикали» – «по центру», а в категории «Отображение» установим флажок «переносить по словам»;
•выделим диапазон ячеек (В2:D7) и через Формат → Ячейки в диалоговом окне на вкладке Выравнивание в категории «Выравнивание по горизонтали» выберем – «по правому краю», а на вкладке Число – денежный формат с двумя десятичными знаками;
•выполним те же действия с ячейкой С8, только укажем процентный формат числа;
•выделим диапазон ячеек (А1:D8) и на вкладке Граница диалогового окна Формат ячеек включим внешние и внутренние границы;
•если необходимо, изменим ширину столбцов.
Код макроса представлен ниже:
Sub Формат_таблицы()
‘
‘Формат_таблицы Макрос
‘Макрос записан 10.05.2009 (Natalya)
Range(«A1:D1»).Select With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False End With
With Selection.Font
.Name = «Arial Cyr»
.FontStyle = «полужирный»
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic End With
Range(«A7»).Select With Selection.Font
11
.Name = «Arial Cyr»
.FontStyle = «полужирный»
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic End With Range(«A2:A8»).Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False End With Range(«B2:D7»).Select
Selection.NumberFormat = «#,##0.00$» With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False End With Range(«C8»).Select
Selection.NumberFormat = «0.00%» With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False End With Range(«A1:D8»).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
12
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
Range(«D8»).Select End Sub
4.Для создания командной кнопки воспользуемся инструментом Кнопка панели инструментов Формы, а в появившемся диалоговом окне Назначить макрос объекту выберем макрос «Расчет_зарплаты», надпись на кнопке изменим на «Рассчитать».
5.Для создания кнопки на панели инструментов воспользуемся командой Сервис → Настройка и назначим макрос «Формат_таблицы» выбранной кнопке.
Изменим макрос «Формат_таблицы» так, чтобы к ячейкам шапки таблицы применялся шрифт «Courier New» размером 11 пт. Для этого:
1.В диалоговом окне Макрос (Сервис → Макрос → Макросы) выберем
«Формат_таблицы» и, нажав кнопку «Изменить», зайдем в редактор VB.
2.Далее найдем строчки, соответствующие диапазону шапки таблицы, и в них изменим значения свойств шрифта (Font): для свойства .Name установим значение «Courier New», а для свойства .Size – значение, равное 11. Фрагмент кода с внесенными изменениями представлен на рис. 10.
Закроем окно редактора, активизируем ячейку А1 и запустим макрос «Формат_таблицы» (рис. 11).
13
Соседние файлы в папке Лабораторный практикум
- #
- #
- #
- #
- #
- #
- #
УПРАВЛЕНИЕ ОБРАЗОВАНИЯ
АДМИНИСТРАЦИИ МУНИЦИПАЛЬНОГО ОБРАЗОВАНИЯ
ГОРОДСКОГО ОКРУГА «ВОРКУТА»
МУНИЦИПАЛЬНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ «ЛИЦЕЙ №1»
ЛАБОРАТОРНЫЕ РАБОТЫ ПО ИНФОРМАТИКЕ
Методические указания по выполнению лабораторных работ VBA
Составитель Яменко Ольга Петровна, учитель информатики
Воркута 2012
В методических указаниях рассмотрены основы работы с VBA.
Методические указания предназначены как для обучающихся основного общего (полного) образования., так и для студентов очно-заочной и заочной форм обучения всех специальностей.
Содержание:
Лабораторная работа №1. «Программирование линейного алгоритма в среде VBA»
Лабораторная работа №2. «Программирование разветвляющегося алгоритма в среде VBA»
Лабораторная работа №3 «Циклы. Одномерный массив»
Лабораторная работа №3 «Циклы. Одномерный массив»
Лабораторная работа №4 «Вложенные циклы. Двумерный массив»
Лабораторная работа №5 «Обработка строковых данных»
Начало процедуры
Лабораторная работа №6 «Создание форм в VBA»
Dim St As String
Лабораторная работа №1. «Программирование линейного алгоритма в среде VBA»
Цель работы: ознакомиться со средой VBA. Овладеть навыками программирования в VBA.
Задание 1. Программирование линейного алгоритма.
Пример1 : Написать программу вычисления функции f(x)=x2+1 в диалоговом режиме.
В программе нам понадобятся две переменные – x и f. Для ввода значения х будем использовать функцию ввода InputBox, а для вывода значения f – оператор вывода MsgBox. Переменные х и у опишем как переменные вещественного типа, т.е. Single.
Чтобы попасть в VBA необходимо выполнить команду СервизМакросРедактор Visual Basic или нажать клавиши <Alt>+<F11>. Появиться окно VBA. Для вставки модуля выполним команду ВставкаМодуля (рис.7.).
В открывшемся окне модуля наберите следующую строку Sub PR1() и нажмите клавишу <Enter>. Таким образом у вас будет создан каркас процедуры:
Sub Pr1()
End Sub
Теперь необходимо наполнить этот каркас операторами.
Во-первых, опишем наши переменные x и f – Dim x as Single, f as Single
Во-вторых, огранизуем ввод переменной х – x = InputBox(“Введите значение х”)
В-третьих, запишем оператор для вычисления f
f = x^2+1
В-четвертых, выведем значение переменной f – MsgBox «f=» & Format(f, «###.#0»). Функцию Format использовали для того, чтобы вывести значение функции с 2-мя знаками после запятой. Итак, процедура должна иметь следующий вид:
Sub Pr1()
Dim x As Single, f As Single
x = InputBox(«Введите значение х»)
f = x ^ 2 + 1
MsgBox «f=» & Format(f, «###.#0»)
End Sub
Для запуска программы на выполнение нажмите клавишу <F5>. Для запуска программы с листа Excel необходимо выполнить следующие действия:
Зайти на лист Excel.
Выполнить команду ВидПанели инструментовЭлементы управления (рис.8.).
Щелкнуть на элементе управления кнопка и нарисуйте кнопку на листе Excel
Вызовите контекстное меню для нарисованной кнопки (щелчок правой кнопкой мыши) и выполните команду Свойства. Откроется окно свойств кнопки (Рис.3.). Используя свойства BackColor, Font, ForeColor выберите закраску фона кнопки и шрифт для надписи на кнопке.
В окне свойства Caption введите текст надписи на кнопке – Диалоговый режим.
Выполните двойной щелчок на кнопке. Откроется окно процедуры и каркас заготовки процедуры для кнопки
Private Sub CommandButton1_Click()
End Sub
Внутри каркаса напишите операторы, которые должны будут выполняться для при щелчке на этой кнопке. В нашем случае щелчок на кнопке, должен вызывать процедуру вычисления функции. Для вызова процедуры достаточно указать её имя. Итак, процедура для кнопки будет иметь следующий вид:
Private Sub CommandButton1_Click()
Pr1
End Sub
Зайдите на лист Excel и отключите режим конструктора на панели элементов управления («отожмите» кнопку конструктора)
Щелкните на кнопке для запуска процедуры расчета функции.
Пример 2. Написать программу вычисления функции f(x)=x2+1 с использованием ячеек Excel.
Любая ячейка или группа ячеек является объектом Range, который в свою очередь, является производным от объекта Worksheet. Например, для обращения к значению ячейки А1 на втором листе Excel, необходимо использовать следующую конструкцию : Worksheets(2).Range(“A1”)
Итак, оформим программу вычисления функции, причем значение переменной х будем считывать из ячейки листа Excel и значение переменной f, так же будем помещать в ячейку.
В ячейку A1 введите – х=, а в ячейку A2 – f(x)=
В ячейку B1 введите любое числовое значение переменной х
Зайдите в редактор VBA , откройте первый модуль, установите курсор под оператором End Sub
Наберите оператор начала процедуры для второго примера – Sub Pr2() и нажмите <Enter>
Опишите переменные x и f
Переменной х присвоим значение содержимого ячейки B1. Для этого запишите следующую конструкцию – x=Range(“B1”)
Напишите оператор вычисления функции (см. пример 1)
Поместим значение переменной f в ячейку B2 – Range(“B2”)=f
Оформите вызов программы Pr2 c листа Excel (с помощью кнопки, см. пример 1)
Задание 2.
Напишите программу вычисления функции из лабораторной №4 для одного значения х.
Задание 3.
Напишите программу вычисления заработной платы для отдельного сотрудника. Исходные данные – ФИО, оклад и северные вводить в диалоговом режиме, а расчетный лист сотрудника оформите на втором листе Excel в виде таблицы
Лабораторная работа №2. «Программирование разветвляющегося алгоритма в среде VBA»
Цель работы: овладеть навыками программирования разветвляющихся алгоритмов. Освоить структуру операторов If…Then и Select…Case
Оператор If…Then…Else
Синтаксис этого оператора следующий:
If условие Then [инструкции] [Else инструкции_else]
Допускается также использование блоковой формы синтаксиса:
If условие Then
[инструкции]
[Else
[инструкции_else]]
End If
Простую однострочную форму рекомендуется использовать для коротких, простых проверок. Однако блочная форма обычно проще для чтения, обработки и отладки.
Однострочная форма допускает выполнение нескольких инструкций в результате проверки одного условия If…Then, но все инструкции должны находиться на одной строке и разделяться двоеточием, как в следующем примере:
If A > 10 Then A = A + 1 : B = B + A : C = C + B
Допускаются вложенные блоки инструкций If; то есть блоки If, содержащиеся в других блоках.
Пример 1: Выбрать максимальное из двух введенных чисел. Рассмотрим 2 примера программы-в первой используется строчная форма записи условного оператора, во-второй – блочная
Строчная форма записи |
Блочная форма записи |
Sub pr1() Dim x As Integer, y As Integer y = Range(«A1») x = Range(«A2») If y > x Then Range(«A3») = y Else Range(«a3») = x End Sub |
Sub pr1() Dim x As Integer, y As Integer y = Range(«A1») x = Range(«A2») If y > x Then Range(«A3») = y Else Range(«a3») = x End If End Sub |
Пример2: Вычислить площадь треугольника, если таковой существует.
Sub pr1()
Dim x As Integer, y As Integer, z As Integer
x = Range(«A1»)
y = Range(«A2»)
z = Range(«A3»)
If (x + y) > z And (x + z) > y And (y + z) > x Then
p = (x + y + z) / 2
s = Sqr((p — a) * (p — b) * (p — c))
Range(«a4») = s
Else
Range(«a4») = «Треугольник с такими сторонами не существует»
End If
End Sub
Оператор Select … Case
Если приходится проверять одно и то же значение в сравнении с различными выражениями, то самым подходящим обычно оказывается оператор Select…Case. Синтаксис этого оператора следующий:
Select Case значение
Case критерий1
(операторы, выполняемые, когда значение удовлетворяет критерий1)
Case критерий2
(операторы, выполняемые, когда значение удовлетворяет критерий2)
…’дополнительные операторы Case
Case Else ‘необязательный
(операторы, выполняемые, когда значение не удовлетворяет ни одному из приведенных критериев)
End Select
В каждом предложении Case допускается использование нескольких выражений или диапазонов. Например, допустима следующая строка:
Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber
Пример 3
Sub pr()
Dim x as Integer
X= InputBox(“Введите число”)
Select Case x
Case 1 To 5
MsgBox «Между 1 и 5»
Case 6, 7, 8
MsgBox «Между 6 и 8»
Case x > 8 And x < 11
MsgBox «Больше 8»
Case Else
MsgBox «Вне интервала 1 — 10»
End Select
End Sub
A |
B |
C |
D |
Решение квадратного уравнения ax2+bx+c=0 |
1 |
3 |
а |
b |
c |
4 |
9 |
1 |
1 |
5 |
7 |
D |
корней нет |
8 |
-35 |
9 |
Задание 1. Запрограммировать в VBA вычисление функции f(x) из лабораторной работы №6. В программе использовать обращение к ячейкам. Вызов программы организовать с листа Excel.
Задание 2. Написать программу решения квадратного уравнения ах2+bx+c=0 с помощью условного оператора Select…Case. В программе рассмотреть три случая: D=0,D>0,D<0. В программе использовать обращение к ячейкам и операторы ввода/вывода. Вызов программы организовать с листа Excel. Пример оформления задачи на рисунке 10
Лабораторная работа №3 «Циклы. Одномерный массив»
Цель работы: овладеть навыками применения циклического процесса при обработке одномерных массивов и табулирования функции.
Наиболее часто используемыми циклами являются следующие:
For… Next – заданное число раз
For счетчик = начало To конец [Step шаг]
[инструкции]
Next [счетчик]
Синтаксис инструкции For…Next содержит следующие элементы:
Счетчик — числовая переменная, используемая в качестве счетчика цикла.
Начало — начальное значение переменной счетчик.
Конец — конечное значение переменной счетчик.
Шаг — значение, на которое изменяется счетчик при каждом выполнении тела цикла. Если это значение не задано, по умолчанию шаг равен единице.
Инструкции — одна или несколько инструкций между For и Next, которые выполняются указанное число раз.
Do While…Loop – пока или до тех пор, пока некоторое условие имеет значение True
Do While условие
[инструкции]
Loop
Синтаксис инструкции Do… Loop содержит следующие элементы:
Условие — числовое выражение или строковое выражение, которое имеет значение True или False.
Инструкции -одна или несколько инструкций, выполнение которых повторяется, пока условие имеет значение True .
Пример 1. Посчитать количество отрицательных элементов в массиве
Операторы программы |
Описание действий |
Dim x(10) as Integer, I as Integer |
Задаем размерность массива Х (10 элементов) и тип массива и переменной I |
For I=1 to 10 |
Начало цикла для считывания массива |
x(i)=Cells(I,”a”) |
i-ому элементу массива Х присвоить значение ячейки расположенной на пересечении I-ой строки и столбца “A” |
if x(i)<0 then k=k+1 |
Проверяем является ли I-ый элемент массива отрицательным. Если элемент оказался отрицательным увеличиваем счетчик отрицательных элементов (k) на единицу. |
Range(“B1”)=k |
Ячейке “B1” присвоить значение переменной k |
Пример 2. Указать индекс первого нулевого элемента в массиве.
Операторы программы |
Описание действий |
Dim x(10) as Integer, I as Integer |
Задаем размерность массива Х (10 элементов) и тип массива и переменной I |
For i=1 to 10 |
Начало цикла для считывания массива |
x(i)=Cells(I,”a”) |
i-ому элементу массива Х присвоить значение ячейки расположенной на пересечении I-ой строки и столбца “A” |
I=1 |
Присваиваем счетчику элементов массива (переменная i) начальное значение 1 |
Do while x(i)>0 |
Начало цикла Do. До тех пор пока i-ый элемент массива больше 0 |
I=i+1 |
Увеличиваем счетчик на 1 (т.е. переходим к следующему элементу) |
Range(“C1”)=i |
В ячейку С1 выводим значение переменной i |
Задание 1. Сформировать указанный массив и вывести результат на лист Excel.
1 |
Сформировать элементы массива по правилу xi= cos(2i)-1.Определить максимальный элемент массива и его порядковый номер |
2 |
Сформировать элементы массива по правилу xi= isin(1-i). Посчитать сумму положительных элементов массива. |
3 |
Сформировать элементы массива по правилу xi=(2+i)cos(i2). Найти среднее арифметическое элементов массива. |
4 |
Сформировать элементы массива по правилу хi=sin(i)-cos(i). Вывести положительные элементы массива в один столбец, а отрицательные в другой |
5 |
Сформировать элементы массива по правилу хi=sin(2i)-cos(i). Определить количество элементов массива кратных 3 и переписать их в отдельный массив. |
6 |
Сформировать элементы массива по правилу хi=sin2 (i)-cos(i). Переписать в массив Y элементы -3< хi<3 и посчитать их количество. |
7 |
Сформировать элементы массива по правилу хi=sin(i)-cos2 (i). Посчитать сумму элементов, стоящих в массиве на четных местах |
8 |
Сформировать элементы массива по правилу хi=cos(i)-sin(i). Поменять местами максимальный и минимальный элементы массива |
9 |
Сформировать элементы массива по правилу хi=isin(i)-cos(i). Найти сумму максимального и минимального элементов |
10 |
Сформировать элементы массива по правилу хi=sin(i)-icos(i). Заменить все отрицательные элементы массива на 0 |
11 |
Сформировать элементы массива по правилу хi=sin3 (i)-cos(3i). Определить минимальный элемент массива и его порядковый номер. |
12 |
Сформировать элементы массива по правилу хi=sin(2i)-cos3 (i). Посчитать сумму отрицательных элементов массива. |
13 |
Сформировать элементы массива по правилу хi=sin(i)+2cos(i). Найти отклонение каждого элемента массива от среднего значения |
14 |
Сформировать элементы массива по правилу хi=sin(i)+cos 3(i). Определить количество четных элементов массива переписать их в отдельный массив. |
15 |
Сформировать элементы массива по правилу хi=3sin(i)+cos3(i). Переписать в массив Y элементы массива Х меньшие 2 или большие 5 и посчитать их количество. |
16 |
Сформировать элементы массива по правилу хi=sin3(i)+2cos(i). Посчитать сумму элементов, стоящих в массиве на нечетных местах |
17 |
Сформировать элементы массива по правилу хi=sin3(3i)-cos(3-i). Поменять местами максимальный и первый, и минимальный и последний элемент |
18 |
Сформировать элементы массива по правилу хi=sin(1-i)-cos(i3). Найти сумму элементов, больших среднего значения |
19 |
Сформировать элементы массива по правилу хi=sin(i)cos(i). Заменить все положительные элементы массива на 0 |
20 |
Сформировать элементы массива по правилу хi=sin3(3i)+cos(i). Записать в массив сначала положительные элементы , а затем отрицательные |
Задание 2. Упорядочить элементы массива по возрастанию.
Задание 3. Для функции из лабораторной работы №4 написать программу в редакторе VBA.
Лабораторная работа №4 «Вложенные циклы. Двумерный массив»
Цель работы: овладеть навыками применения циклического процесса при обработке двумерных массивов.
Пример 1. Посчитать кол-во нулевых элементов каждой строки массива А. Результат записать в вектор В .
Элементы массива А задать с помощью функции случайных чисел.
Операторы программы |
Описание действий |
Sub Pr1() |
Начало процедуры |
Dim a(5, 5) As Single, b(5) As Byte |
Описание двумерного массива А и вектора B |
Dim i As Byte, j As Byte |
Описание переменных i,j |
Range(«a1») = «Массив А» |
В ячейку А1 помещаем заголовок “Массив А” |
Range(«g1») = «Отрицательные эл-ты» |
В ячейку G1 помещаем заголовок “ Отрицательные эл-ты ” |
Определение формата для ячеек
Range(«A2:G6»).Select |
Выбираем ячейки А2:G6 |
Selection.NumberFormat = «0» |
Задаем выбранным ячейкам формат – целые числа |
Блок формирования и вывода значений элементов матрицы А
a(i, j) = Int((-5 * Rnd) + 4) |
Формирование элементов массива a(i,j) |
Cells(i + 1, j) = a(i, j) |
Вывод значений на лист Excel |
Подсчет нулевых элементов матрицы А
If a(i, j) = 0 Then b(i) = b(i) + 1 |
Вывод элементов вектора В на лист Excel
Задание 1. С помощью справочной системы VBA ознакомиться с инструкцией Randomize. Разобрать пример из справки.
Задание 2. Сформировать массив произвольной размерности, используя счетчик случайных чисел и результат вывести на лист Excel.
1 |
Подсчитать сумму элементов каждого столбца матрицы. Результат записать в одномерный массив. Указать номер столбца с максимальной суммой элементов |
2 |
Посчитать сумму отрицательных элементов, лежащих на главной диагонали и сумму положительных элементов, лежащих на побочной диалонали. Вывести эти элементы в разные столбцы. |
3 |
Найти минимальный элемент в матрице и записать его на место первого элемента |
4 |
Поменять местами элементы, лежащие на главной диагонали и на побочной |
5 |
Посчитать сумму положительных элементов, лежащих выше главной диагонали |
6 |
Посчитать сумму отрицательных элементов, лежащих ниже главной диагонали |
7 |
Записать вместо элементов, лежащих на побочной диагонали на элементы первого столбца |
8 |
К положительным элементам главной диагонали прибавить значение минимального элемента матрицы А |
10 |
Сформировать одномерный массив В, элементами которого будут являться минимальные элементы каждой строки матрицы А |
11 |
Исключить из массива строку, содержащую хотя бы один нулевой элемент |
12 |
Сформировать одномерный массив В, в котором сначала будут записаны положительные элементы массива А, а затем отрицательные |
13 |
Посчитать сумму отрицательных элементов, лежащих ниже побочной диагонали |
14 |
Поменять местами элементы побочной диагонали и последней строки |
15 |
Поменять местами второй столбец и столбец с максимальной суммой элементов |
16 |
Сформировать одномерный массив, элементами которого будут являться положительные элементы, лежащие под главной диагональю. |
17 |
Сформировать одномерный массив, элементами которого будут являться отрицательные элементы, лежащие под главной диагональю. |
18 |
Вычеркнуть из матрицы столбец, содержащий максимальное число отрицательных элементов. |
19 |
Поменять местами столбцы с минимальной и максимальной суммой элементов |
20 |
Записать в массив В четные элементы массива А |
Лабораторная работа №5 «Обработка строковых данных»
Цель работы: овладеть навыками обработки строковых данных в среде VBA
При обработке строк , в случае удаления или добавления каких-либо символов, удобнее всего использовать циклы типа Do…Loop. Если же длина строки в процессе обработки не меняется, то можно использовать цикл For…Next.
При обработке строк используются следующие функции: InStr, Mid, Len и другие (см. лекции).
Пример 1. Посчитать количество слов, начинающихся на указанную букву
В этой программе нам понадобятся переменная строкового типа, в которой будет храниться исходное предложение (st), переменная целого типа, которая будет отвечать за количество слов (k), и счетчик для цикла (i).
Операторы программы |
Описание действий |
Sub lab15() |
Начало процедуры |
Dim st As String, k as Integer, i As Byte |
Описание переменных |
st = Range(«a1») |
Считываем значение из ячейки А1 в переменную st |
S=InputBox(“На какую букву искать слова”) |
Вводим букву, на которую будем искать слова |
If Mid(st, 1, 1) = s Then k = 1 |
Сравниваем первый символ предложения с заданным символом. |
For i=2 to len(st) |
Цикл, начиная со второго по последний символ |
If Mid(st, i, 2) = » «+s Or Mid(st, i, 1) = «,»+ s Then k = k + 1 End If |
Будем считать, что слова в предложении разделены пробелом или запятой. Тогда , если в предложении необходимо посчитать кол-во слов на букву “с” будем искать в предложении сочетания “ c” или “,c” |
Range(“a2”)=”Кол-во слов начинающихся на букву ” & s & “ равно “ & k |
Вывод ответа в ячейку А2 |
Задание1. Ознакомиться с функциями обработки строк в справке VBA
Задание2. Написать программу в VBA. Исходные и расчетные данные выводить на лист Excel. Запуск программ организовать с листа Excel.
1 |
Ввести предложение и слово. Определить вхождение этого слова в предложение. Определить количество слов в предложении. |
2 |
Определить длину предложения. Поставить в конце предложения точку, если ее нет. |
3 |
В заданном предложении указать слово , в котором доля гласных ‘a’, ‘е’, ‘и’ максимальна. Выделить подстроку между первой и второй точкой. |
4 |
Вставить после каждой буквы ‘a’ звездочку и посчитать количество вставленных символов. Определить самое длинное слово в предложении. |
5 |
Проверить, имеется ли баланс открывающих и закрывающих скобок. В заданном тексте удалить пробелы и посчитать количество удаленных символов. |
6 |
Проверить, имеется ли баланс открывающих и закрывающих скобок. В заданном тексте удалить пробелы и посчитать количество удаленных символов. |
7 |
Определить длину введенного слова. Вставить звездочки в начале и в конце слова. Из предложения S1 в переменную S скопировать четыре символа, начиная с первого пробела. |
8 |
Вставить в конце предложения восклицательный знак. Напечатайте каждое слово предложения с новой строки, центрируя их по правому краю. |
9 |
Определить длину введенного предложения. Вставить восклицательный знак в начале и в конце предложения. Посчитать количество пробелов в предложении. |
10 |
Ввести предложение и определить длину первого слова. Распечатать каждое слово предложения с новой строки. Заменить все запятые в предложении на пробелы. |
11 |
Вставить после каждого пробела звездочку. Для каждого слова заданного предложения указать долю согласных букв – “ Н”, ”П”, ”Р”. Определить слово, в котором доля согласных максимальна. |
12 |
Распечатать каждое слово предложения с новой строки. В заданном предложении удалить лишние пробелы, оставляя только по одному пробелу между символами. |
13 |
Ввести предложение, определить длину каждого слова и распечатать каждое слово с новой строки. В тексте предложения заменить пробелы на запятые. Если в тексте встречается несколько пробелов подряд, то вместо них поставить одну запятую. |
14 |
В заданном предложении указать слово, в котором доля гласных ‘a’, ‘е’, ‘и’ максимальна. Выделить подстроку между второй и третьей точкой. |
15 |
Проверить, имеется ли баланс открывающих и закрывающих скобок. В заданном тексте удалить пробелы и посчитать количество удаленных символов. |
16 |
Определить длину введенного предложения. Вставить восклицательный знак в начале и в конце предложения. Посчитать количество пробелов в предложении. |
17 |
Определить длину введенного слова. Вставить звездочки в начале и в конце слова. Из предложения S1 в переменную S скопировать четыре символа, начиная с первого пробела. |
18 |
Удалить из текста пробелы и подсчитать длину сформированного текста. Из заданного текста предложения выбрать и напечатать только те символы, которые встречаются в нем только один раз ( в том порядке, в котором они встречаются в тексте). |
19 |
Поменяйте местами первое и последнее слова в предложении. Ввести предложение и слово. Определить есть ли в предложении это слово |
20 |
Удалить из предложения все запятые. Определить длину второго слова в предложении. |
Лабораторная работа №6 «Создание форм в VBA»
Цель работы: освоить приемы создания прикладных программ.
Наша программа-пример должна будет открывать на экране новое окно с показанной в нем цитатой, а также датой и временем (сообщением). Окно будет оставаться на экране до тех пор, пока пользователь не щелкнет на кнопке ОК.
Программа будет состоять из следующих элементов:
форма (UserForm), т.к. программа имеет одно окно;
два элемента управления для формы (надпись для сообщения и кнопка для команды OK);
программный код для двух процедур(одной – для надписи, в которую нужно поместить сообщение, а другой – для выхода из программы, когда пользователь щелкнет на кнопке OK).
Обе наши процедуры можно разместить в окне программного кода, ассоциированом с формой. Так как эти процедуры отвечают на события, которые происходят с формой.
Создание новой формы.
Для создания новой формы, которая будет служить окном программы, из меню редактора VBA выберите InsertUserForm.
Новая пользовательская форма представляет собой серую панель. Можно изменять её размеры, перетаскивая маленькие белые квадратики, примыкающие к правому и нижнему краям формы. Окно нашей программы должно быть немного шире и немного меньше по высоте (рис.11).
Добавим в форму пару элементов управления. Начнем с элемента управления надписью, который просто отображает текст. Во время выполнения программы элемент управления надписью отображает текст, который пользователь видит, но изменить не может. Но программа это сделать может и ей придется это сделать, так как она будет отображать дату и время, которые зависят от того, когда программа выполняется.
Чтобы поместить надпись в новую пользовательскую форму, выполните следующее:
Убедитесь, что форма активна, щелкнув на ней;
Щелкните на пиктограмме с буквой А в панели элементов управления;
Каждой новой надписи VBA автоматически приписывает заголовок, поэтому в прямоугольной рамке, ограничивающий наш элемент управления надписью будет текст Label1. Это не тот текст, который нам нужен. Чтобы удалить автоматически созданный текст надписи, придется обратиться в окно свойств.
Окно свойств.
Каждый элемент управления имеет список свойств. Они определяют внешний вид и поведение элемента управления при выполнении программы. VBA дает возможность менять свойства элементов управления без печатания программного кода.
Для управления свойствами предназначено окно свойств. Как видно из рис.12., в окне свойств представлен список всех свойств выделенного в данный момент элемента управления. Чтобы изменить нужное нам свойство, просто найдите его в левом столбце и измените значение этого свойства в правом.
Для надписи в нашей программе нужно изменить лишь два свойства – Name (Имя) и Caption (Заголовок) . Замените имя элемента управления с Label1 на lblNow. Чтобы сделать это, найдите свойство Name в списке свойств. Двойным щелчком в правом столбце строки этого свойства выберите его, а затем впечатайте новое имя.
Затем опуститесь по списку ниже и найдите свойство Caption. Здесь просто удалите значение свойства, так как ваша программа сама обеспечит текст для надписи во время выполнения.
Кнопка команды
Элемент управления кнопкой команды отличается от надписи тем, что предполагает определенные действия со стороны пользователя программы. Когда кто-нибудь щелкает на кнопке, её изображение на экране меняется так, что она выглядит нажатой, а программа в ответ выполняет какие-нибудь действия.
Чтобы поместить такую кнопку в форму выполните следующее:
Щелкните в окне формы, чтобы сделать его активным снова;
Щелкните на той пиктограмме в панели элементов управления, на которой изображена кнопка;
Начав немного левее середины формы и нажав левую кнопку мыши, перетащите указатель по диагонали вниз, чтобы создать кнопку.
Для установления нужных значений свойств, выполните следующие шаги:
Измените значение свойства Name на OKButton
Измените значение свойства Caption на OK. Этот текст увидит пользователь на кнопке во время выполнения вашей программы.
Добавление программного кода
Чтобы напечатать связанный с формой или одним из её элементов управления программный код, вам нужно вместо окна формы открыть окно программного кода этой формы. Для этого выделите форму или элемент управления в ней. Затем воспользуйтесь одним из следующих способов:
Выбрать ViewCode из меню.
Нажать <F7>.
Щелкнуть на форме правой кнопкой мыши и в появившемся контектном меню выбрать View Code.
В появившемся при этом окне программного кода должна уже присутствовать заготовка процедуры. Первой строкой созданного для вас программного кода будет
Private Sub OKButton_Click()
В любой VBA-процедуре первая строка программного кода определяет тип процедуры ( в данном случае это процедура типа Sub, т.е. подпрограмма) и имя процедуры. Для процедуры VBA предлагает имя OKButton_Click, которое представляет собой комбинацию имени кнопки и типа события.
Последней строкой автоматически генерируемого программного кода является
End Sub
Такой строкой должны заканчиваться все процедуры типа Sub. Эта строка сообщает VBA о том, что выполнение процедуры пора завершить.
Текстовый курсор будет мигать между этими двумя созданными VBA строками. Напечатав лишь одну дополнительную строку программного кода, мы дадим возможность программе завершить работу. Вот её программный код:
Unload Me
Оператор Unload убирает указанный объект из памяти. Здесь это объект с именем Me, имеющим в VBA специальный смысл. В данном случае оно означает форму и весь её программный код.
Вторая процедура должна отображать на экране сообщение. В окне программного кода, которое должно было остаться активным, выполните следующие шаги:
В текстовом поле слева вверху окна программного кода, в котором до сих пор должно быть написано OKButton, щелкните на стрелке в правом конце поля. В результате откроется сисок объектов, имеющих отношение к форме (рис.13.);
Из раскрывающего списка выберите UserForm.
VBA создаст новую процедуру для события Click (щелчок). Эта процедура будет вызвана, если пользователь вашей программы щелкнет кнопкой мыши в любом месте формы, где нет элементов управления. Нам пока эта процедура не нужна.
Теперь щелкните на стрелке в конце текстового поля, находящегося справа, чтобы открыть список процедур, в котором будут перечислены все события, которые VBA распознает в связи с объектом UserForm;
Выберите Activate – самый первый пункт в списке. VBA создаст заготовку процедуры UserForm_Activate.
Можете удалить пустую процедуру UserForm_Click, выделив весь её текст и нажав клавишу <Del>.
Внутри заготовки процедуры наберите следующие три строки:
первая строка
Dim St As String
Создает переменную с именем St и определяет её как строковую.
Вторая строка
St=”Сегодня:”
Сохраняет текст “Сегодня” в созданной переменной St.
Третья строка
LblNow.Caption = St & Format(Now, “dddddd, hh ч. mm мин.”)
Содержит программный код, который непосредственно отображает нужное сообщение в форме. Эта строка начинается с идентификации элемента управления с именем lblNow как объекта с которым идет работа. После имени идет точка, означающая, что далее идет свойство объекта lblNow – в данном случае это свойство Caption. Оставшаяся часть строки определяет сообщение, которое должно появиться на экране в виде надписи.
Теперь программа готова к запуску. Чтобы запустить программы из редактора VBA, выполните следующее:
Щелкните либо в окне форме, либо в окне программного кода, чтобы соответствующее окно стало активным;
Нажмите <F5>.
Описанные методы работают только в редакторе VBA. Чтобы вывести форму на экран из VBA-приложения, нужно с помощью редактора Visual Basic создать процедуру типа Sub, которая вызывает форму, а затем выполнить эту процедуру в приложении. Для этого сделайте следующее:
В редакторе VBA выберите InsertModule, чтобы создать модуль и открвть окно его программного кода.
Напечатайте следующие строки программного кода:
Sub ShowSt()
UserForm1.Show
End Sub
Если ваша форма названа не UserForm1, а как-то иначе, замените это имя во второй строке на правильное.
Задание 1
Написать программу в VBA c использованием форм. На форме должны присутствовать окна для ввода данных и вывода данных, кнопки ОК и Отмена. Вызов программы организовать с листа Excel. Организовать проверку на правильность ввода данных. Вычисленное значение выводить с точностью до двух знаков после запятой.
1 |
Ввести длины сторон треугольника и вычислить площадь треугольника, если таковой существует. |
2 |
Ввести величины диагоналей и вычислить длину стороны ромба. |
3 |
Вычислить площадь пирамиды. |
4 |
Вычислить площадь цилиндра. |
5 |
Вычислить площадь трапеции. |
6 |
Зная длины двух сторон треугольника и угол между ними, вычислить длину третьей стороны |
7 |
Вычислить объем пирамиды. |
8 |
Вычислить объем цилиндра. |
9 |
Создать калькулятор для вычисления деления и возведения в степень. |
10 |
Создайте калькулятор для вычисления логарифма по любому основанию. |
11 |
Вычислить площадь круга. |
13 |
Вычислить длину вектора. |
14 |
Найти корни квадратного уравнения. |
15 |
Вычислить определитель матрицы А(2,2). |
16 |
Вычислить скалярное произведение двух векторов. |
17 |
Вычислить высоту цилиндра, зная радиус основания и объем. |
18 |
Создать калькулятор вычисления sin, cos, tg |
19 |
Создать калькулятор вычисления arcsin, arcсos. |
20 |
Вычислить диаметр основания цилиндра, зная высоту и объем. |
Рис.7. Окно VBA
кнопка
конструктор
Рис.8. Элементы управления
Рис.9. Окно свойств
Рис.10. Оформление решения
Панель элементов управления
Кнопка включения панели инструментов
Рис.11. Новая форма
Рис.12. Окно свойств
Свойство – Name (Имя)
Это имя будет использовано при создании программного кода
Свойство – Caption (Заголовок)
Рис.13. Окно программного кода
Список объектов, имеющих отношение к форме
Список событий, связанный с выбранным объектом
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ, МОЛОДЕЖИ И СПОРТА УКРАИНЫ
ДОНЕЦКИЙ ПОЛИТЕХНИЧЕСКИЙ ТЕХНИКУМ
МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ
ПО ИЗУЧЕНИЮ ТЕМЫ «VBA в EXCEL»
В КУРСЕ «ОФИСНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ»
для студентов специальности 5.05010301
«Разработка программного обеспечения»
Методические рекомендации по изучению темы «VBA в EXCEL» в курсе «Офисное программное обеспечение» для студентов дневного отделения специальности 5.05010301 «Разработка программного обеспечения»
Федосеенко Н.А. – преподаватель первой категории ПК информатики и программирования ДПТ
Приводятся общие сведения о встроенных объектах Excel VBA, их свойствах и методах, справочную информацию об операторах, типах данных, командах и стандартных функциях языка, указания по выполнению лабораторных работ, тестовые задания для самостоятельной работы студентов, контрольные вопросы.
Для студентов и преподавателей Донецкого политехнического техникума.
Рецензент: председатель цикловой комиссии информатики и программирования, преподаватель высшей категории ДПТ Величко П.И.
Методические указания рассмотрены на заседании предметной комиссии информатики и программирования Донецкого политехнического техникума.
Протокол № ______от __________________
ВВЕДЕНИЕ
В результате изучения дисциплины «Офисное программное обеспечение» студент должен знать современное состояние и направление развития компьютерной техники и программных средств, владеть основами автоматизации экономических и управленческих задач, знать основы создания информационных систем и использования новых информационных технологий переработки информации. Важная роль отводится алгоритмизации и программированию.
В настоящих методических указаниях рассматриваются вопросы технологии программирования на языке VBA (Visual Basic for Applications) в среде табличного процессора Microsoft Excel. Этот язык является подмножеством современного объектно-ориентированного языка программирования Microsoft Visual Basic, позволяющего создавать событийно-управляемые приложения и предоставляющего широкие возможности визуального программирования. VBA является также базовым языком макрокоманд для других программных средств фирмы Microsoft: Access, PowerPoint и др. Овладение студентами основами программирования позволит им в полной мере использовать мощные возможности табличного процессора, автоматизировать обработку больших массивов числовой и текстовой информации, создавать гибкие программы со сложной логикой, разрабатывать дружественный интерфейс пользователя.
Настоящее руководство содержит общие сведения о языке VBA, указания к выполнению лабораторных работ, варианты заданий и приложения. Приложения содержат описание объектов Excel VBA, операторов, типов данных, команд и функций работы с числами и строковыми выражениями.
Изложенный материал может быть использован на лекциях, лабораторных работах и в самостоятельной работе студентов в течение изучения предмета «Офисное программное обеспечение».
ОБЩИЕ СВЕДЕНИЯ
Целью программирования на языке VBA является создание макросов, облегчающих работу в среде Excel или написание собственных специализированных функций, предназначенных для решения конкретных задач пользователя.
Макрос — это программа, выполняющая действия с электронными таблицами, группой ячеек, одной конкретной ячейкой или фрагментом текстового документа. Результатом работы макроса обычно является изменение содержания или вида ячеек электронной таблицы, текста.
Программирование на языке VBA основывается на четырех основных понятиях: объект, переменная, оператор и команда.
Объектами в Excel является все то, с чем работает пользователь электронной таблицы — рабочие книги, электронные таблицы, ячейки и т.д. Каждый объект обладает рядом признаков, описывающих объект или характеризующих состояние объекта. Эти признаки называются свойствами объекта. Например, одним из свойств рабочего листа электронной таблицы является имя листа. К свойствам ячейки относятся содержимое ячейки, формула и различные параметры форматирования ячейки.
Объекты могут содержать другие объекты. Книга Excel содержит рабочие листы. В свою очередь, рабочие листы содержат ячейки. В целом, все объекты Excel образуют строгую иерархию. На рис. 1 приведена структура объекта ActiveCell («Текущая ячейка»).
При обращении к какому-либо свойству конкретного объекта используется следующий синтаксис:
..
Например, чтобы прочитать формулу, содержащуюся в текущей ячейке, нужно написать ActiveCell.Formula. Здесь ActiveCell — объект, a Formula — его свойство.
Некоторые объекты являются составной частью других объектов. Так, объект Interior («Заливка») может относиться к текущей ячейке, диапазону ячеек или к ячейке электронной таблицы, находящейся на другом листе рабочей книги. Чтобы уточнить, какую именно заливку
мы имеем в виду, необходимо указать принадлежность объекта Interior. Принадлежность объекта указывается соответствующей приставкой перед именем объекта:
…
Например, цвет заливки текущей ячейки обозначается следующим образом: ActiveCell.Interior.Color. Наиболее употребительные объекты Excel и их свойства приведены в приложении А.
Рисунок 1 — Структура объекта ActiveCell
Кроме свойств, у объектов есть ряд методов. Метод — это действие, применяемое к объекту. Например, одним из методов для объекта Range (Диапазон) является ClearContents (Очистить содержимое). Этот метод позволяет очистить содержимое диапазона. При обращении к какому-либо методу конкретного объекта используется следующий синтаксис:
..
Например: Range(«Al:A10»).ClearContents.
Язык Visual Basic for Applications позволяет разрабатывать событийно-управляемые приложения. Событие — действие, распознаваемое объектом (формой или элементом управления). Событийно-управляемое приложение выполняет код VBA в ответ на события. С каждой формой и элементом управления связан стандартный набор событий. Если происходит одно из этих событий и в соответствующей процедуре обработки события имеется код, VBA вызывает этот код. Например, большинство объектов распознает событие Click — если пользователь щелкнет командную кнопку или на поле формы, выполняется код, внесенный в процедуру события Click, соответственно, кнопки и формы.
Событие может быть вызвано пользователем (например, нажатие клавиши), системой (например, событие таймера) или программным кодом.
Переменные — это место для временного хранения значений. Переменные находятся в оперативной памяти компьютера и существуют только во время работы программы. Когда программа завершается, переменные из памяти удаляются. В переменных могут храниться как простые данные (например, числа или текстовые строки), так и объекты. Типы данных приведены в приложении С.
Переменные характеризуются своим именем. Имя переменной должно всегда начинаться с буквы или знака подчеркивания, может содержать знаки подчеркивания и быть длиной до 255 символов. Имена переменных не должны содержать внутри себя пробелы.
Операторы производят действия с объектами и переменными. Операторы делятся на арифметические, логические, текстовые и операторы сравнения. Полный список операторов приводится в приложении В.
Лабораторная работа
Тема: «Создание программных модулей VBA для обработки табличных данных MS Excel «.
Цель работы: научиться обрабатывать табличные данные в среде VBA.
Подготовительная часть
Дать краткую характеристику следующим понятиям:
-
Описать объекты, их свойства, методы и события: Cells, Range, Sheets, ListBox
-
Реализовать пример программы на VBA и предоставить преподавателю в электронном виде.
Практическая часть.
Задание: Создать проект, формы пользователя и программные модули для обработки данных, организованных в таблице Excel соответствующей варианту задания (варианты заданий приведены в файле «Задания»).
Задание № 1 Ввод данных в таблицу.
Создать книгу Excel под названием ЛР_VBA.
На листе 1 создать структуру таблицы согласно своему варианту (номер по журналу).
Реализовать ввод данных в таблицу, разработав для этого форму в VBA.
Задание № 2 Создание главного меню.
Создать главное меню, активирующееся при открытии книги. На этой форме расположить кнопку ВВОД, открывающую соответствующую форму для ввода данных.
Задание № 3 Выполнение расчетов.
Создать форму и программный модуль для выполнения расчетов, соответствующих своему варианту.
На главном меню создать кнопку для вызова формы произведения расчетов.
Подготовительная часть
Рассмотрим пример решения следующей задачи:
Создать проект, формы пользователя и программные модули для обработки сессии студентов:
1 Создать таблицу следующей структуры:
– индекс группы;
– фамилия студента;
– оценки по пяти экзаменам;
– стипендия;
2 Добавить в таблицу произвольное количество строк;
3 Рассчитать стипендию студентам по результатам сессии, причем отличникам стипендию увеличить на 100%, сдавшим без троек – увеличить на 30%, а при наличии хотя бы одной двойки стипендию не начислять;
4 Создать на 2-ом листе книги ведомость для выдачи стипендии студентам;
5 Сортировать данные в таблице по выбранной колонке;
6 Изменить показатели студента с заданной фамилией;
7 Удалить из таблицы данные о студентах, имеющих более двух двоек.
Пример таблицы:
Индекс группы |
ФИО студента |
Экзамен 1 |
Экзамен 2 |
Экзамен 3 |
Экзамен 4 |
Экзамен 5 |
Стипендия |
УТР02Б |
Петров |
5 |
4 |
5 |
4 |
2 |
0 |
УТР02А |
Иванов |
4 |
5 |
3 |
3 |
3 |
100 |
УТР02А |
Климова |
5 |
4 |
5 |
4 |
3 |
100 |
УТР02А |
Морозова |
3 |
3 |
3 |
3 |
3 |
100 |
УТР02А |
Абрамова |
4 |
4 |
5 |
3 |
3 |
100 |
УТР02А |
Сидоров |
4 |
4 |
3 |
3 |
4 |
100 |
УТР02Б |
Жуковская |
4 |
3 |
5 |
4 |
4 |
100 |
УТР02А |
Ющенко |
3 |
3 |
3 |
3 |
3 |
100 |
УТР02Б |
Жукова |
5 |
5 |
5 |
5 |
5 |
200 |
Для решения данной задачи предлагается следующий проект:
Программный модуль «ВВОД» (вызывается и в режиме «ДОБАВИТЬ»):
Dim i As Double
Private Sub UserForm_Activate()
‘ Подсчет количества строк в таблице и вывод на форму в поле txtN
i = 1
Do While Cells(i, 1) » «
i = i + 1
Loop
txtN.Enabled = True
txtN.Text = CStr(i — 2)
txtN.Enabled = False
End Sub
Программный модуль «СОРТИРОВКА»:
Программный модуль «КОРРЕКТИРОВКА»:
МодульKOR
Программный модуль «КОРРЕКТИРОВКА» (продолжение):
Модуль KOR1
Программный модуль «УДАЛЕНИЕ»:
Варианты индивидуальных заданий к лабораторной работе:
Вариант 1
1. Создать таблицу, которая содержит сведения о месячной заработной плате рабочих завода.
Структура таблицы:
— табельный номер;
— фамилия рабочего;
— наименование цеха;
— размер заработной платы в месяц.
2. Предусмотреть режим добавления в таблицу произвольного количества строк.
3. Вычислить:
-
общую сумму выплаты за месяц по заданному цеху
-
среднемесячный заработок этого цеха.
4. Создать на 2 листе книги ведомость для начисления заработной платы рабочих заданного цеха.
5. Сортировать данные в таблице по заданному столбцу.
6.Увеличить размер заработной платы у рабочего с заданной фамилией на X% (значение Х задано).
7. Удалить из таблицы 2 записи. Номера записей задать.
Вариант 2
1. Создать таблицу, которая содержит сведения о количестве изделий, собранных сборщиками цеха за неделю.
Структура таблицы:
— фамилия сборщика;
— количество изделий, собранных им ежедневно в течение шестидневной недели, то есть – в понедельник, вторник, и т.д.
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Определить:
-
общее количество деталей, собранных сборщиками цеха;
-
фамилия сборщика, который собрал наибольшее число изделий, и определить день, когда он достиг наивысшей производительности труда.
4. Создать на 2 листе книги таблицу, которая содержит следующую информацию: фамилию сборщика и общее количество детали, собранное им за неделю.
5. Сортировать данные в таблице по заданному столбцу.
6. Увеличить в Х раз (значение Х задано) количество деталей, собранных в заданный день недели.
7. Удалить из таблицы запись о сборщике с заданной фамилией.
Вариант 3
1. Создать таблицу, которая содержит сведения о количестве изделий категории А, B, С, собранных рабочим за месяц.
Структура таблицы:
— фамилия сборщика;
— наименование цеха;
— количество изделий (по категориям), собранных рабочим за месяц;
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Рассчитать:
-
общее количество изделий каждой категории;
-
общее количество изделий, собранных всеми рабочими заданного цеха;
-
средний размер заработной платы работников заданного цеха.
4. Создать на 2 листе книги ведомость для начисления заработной платы рабочих заданного цеха.
5. Сортировать данные в таблице по заданному столбцу.
6. Уменьшить количество изделий заданной категории на Х% (значение Х — задано).
7. Удалить из таблицы записи, в которых количество изделий заданной категории менее Y штук (значение Y — задано).
Вариант 4
1. Создать таблицу, которая содержит сведения о телефонных абонентах.
Структура таблицы:
— фамилия абонента;
— номер телефона;
— год установки телефона;
— наличие задолженности в оплате.
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Определить:
-
общее количество телефонов, установленных начиная с заданного года по нынешний год.
-
по заданной фамилии абонента номер его телефона.
4. Создать на 2 листе книги таблицу, которая содержит фамилии задолжников и их телефоны.
5. Сортировать данные в таблице по заданному столбцу.
6. Изменить номер телефона у абонента с заданной фамилией
7. Удалить из таблицы запись, которая содержит заданный номер телефона.
Вариант 5
1. Создать таблицу, которая содержит сведения об ассортименте игрушек в магазине.
Структура таблицы:
— название игрушки;
— цена;
— количество;
— возрастные границы, например, 2-5, то есть от 2 до 5 лет.
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Определить стоимость самой дорогой игрушки и ее наименование. По вводимым значениям A, B и X выдавать название игрушки, которое по стоимости не превышает X и подходит ребенку от A до B лет.
4. Создать на 2 листе книги таблицу, которая содержит следующую информацию: наименования игрушек, которые подходят детям от X до Y лет и их цены.
5. Сортировать данные в таблице по заданному столбцу.
6. Увеличить цену игрушки для заданной возрастной группы на Z% (значение Z – задано).
7. Удалить из таблицы запись об игрушке с заданным названием.
Вариант 6
1. Создать таблицу, которая содержит сведения о сдаче студентами первого курса сессии.
Структура таблицы:
— группа;
— фамилия студента;
— оценка по 5 экзаменам
— признак участия в общественной работе: «Да»/»Нет».
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Определить общее число активистов в списке.
4. Создать на 2 листе книги таблицу, содержащую ведомость начисления стипендии студентам заданной группы. Рассчитать размер стипендии по следующему принципу. Студенту, получившему все оценки «5» и активно участвующему в общественной работе, назначается повышенная стипендия – доплата 50%. Студенту, получившему «4» и «5», назначается обычная стипендия – ее необходимо задать. Студенту, получившему одну оценку «3», но активно занимающемуся общественной работой, также назначается обычная стипендия. Остальным студентам стипендия не назначается. Предусмотреть ввод размера обычной стипендии.
5. Сортировать данные в таблице по заданному столбцу.
6. Изменить признак участия в общественной жизни студентов с оценками «55555» на противоположный.
7. Удалить из таблицы записи о студентах, которые имеют хотя бы одну двойку.
Вариант 7
1. Создать таблицу, которая содержит информацию о личной коллекции книголюба.
Структура таблицы:
— шифр книги;
— название книги;
— фамилия автора;
— год издания;
— место расположения (номер стеллажа, номер шкафа, номер полки);
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Определить:
-
общее количество книг в коллекции, а также число книг заданного года издания.
-
по заданному автору и названию книги информацию о местонахождении книги.
4. Создать на 2 листе книги таблицу, которая содержит информацию о книге заданного автора, которая находится в коллекции.
5. Сортировать данные в таблице по заданному столбцу.
6. Изменить место расположения книг самого позднего года издания.
7. Удалить из таблицы записи о книгах, изданных до заданного года.
Вариант 8
1. Создать таблицу, которая содержит сведения о сдаче сессии студентами.
Структура таблицы:
— группа;
— фамилия студента;
— результаты экзаменов по 5 предметам (например, 55445);
— результаты зачетов по 5 предметам (например, ЗЗНЗЗ, где «З» – зачет, а «Н» — незачет).
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Вычислить средний балл, полученный каждым студентом заданной группы, и средний балл этой группы, по каждому предмету. Определить общее количество задолженностей (по экзаменам и зачетам в сумме) каждого студента заданной группы и общее число студентов-должников той же группы.
4. Создать на 2 листе книги таблицу, которая содержит сведения о неуспевающих студентах: группу, фамилию и количество задолженностей.
5. Сортировать данные в таблице по заданному столбцу.
6. Изменить результат экзамена по заданному предмету студенту с заданной фамилией.
7. Удалить из таблицы записи о студентах, которые имеют три задолженности.
Вариант 9
1. Создать таблицу, которая содержит сведения о рейсах Аэрофлота.
Структура таблицы:
— номер рейса;
— пункт назначения;
— дата вылета;
— время вылета;
— время прибытия;
— количество свободных мест в самолете.
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Определить:
-
номера рейсов и время отправления самолетов в заданный город;
-
по заданному городу и дате отправления количество свободных мест на рейсы;
-
общее количество рейсов за сутки в заданный город.
4. Создать на 2 листе книги таблицу, которая содержит номера рейсов, дату и время отправления самолетов в заданный город.
5. Сортировать данные в таблице по заданному столбцу.
6. Изменить время вылета и время прибытия у заданного рейса.
Вариант 10
1. Создать таблицу, которая содержит сведения об ассортименте обуви в магазине.
Структура таблицы:
— артикул обуви (артикул начинается с буквы Д – для дамской обуви, М, – для мужской, П – для детской обуви, например, Д0321);;
— наименование;
— размер;
— количество пар обуви;
— стоимость.
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Определить:
-
стоимость обуви заданного артикула, и какие размеры имеются в наличии;
-
общее количество пар детской обуви, имеющейся в магазине, и ее суммарную стоимость.
4. Создать на 2 листе книги таблицу, которая содержит информацию о всех моделях обуви заданного вида.
5. Сортировать данные в таблице по заданному столбцу.
6. Увеличить стоимость обуви с заданным наименованием на Х% (значение Х задано).
Вариант 11
1. Создать 2 таблицы, содержащие сведения о десяти нападающих хоккейных команд «Динамо» и «Шахтер».
Структура таблиц:
— фамилия хоккеиста;
— число заброшенных им шайб;
— число сделанных им голевых передач;
— заработанное штрафное время.
2. Предусмотреть возможность добавления в таблицы произвольного количества строк.
3. Вычислить:
-
общее число шайб, забитых хоккеистами каждой команды
-
суммарное штрафное время каждой команды
4. Создать на 2 листе книги таблицу, которая содержит фамилию шести лучших игроков из обеих команд (по 3 игрока из каждой команды), и сумму очков каждого игрока (голы + передача).
5. Сортировать данные в таблице по заданному столбцу.
6. Для хоккеистов «Динамо» уменьшить количество забитых шайб на заданное число, если это число больше 0.
Вариант 12
1. Создать таблицу, которая содержит сведения о том, какую из пяти дисциплин желает слушать студент.
Структура таблицы:
— фамилия студента;
— группа;
-наименование пяти дисциплин (выбираемая дисциплина замечается символом «1» иначе – пробел;
— средний балл успеваемости.
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Определить:
-
количество слушателей каждой дисциплины.
-
число слушателей заданной дисциплины, у которых средний балл превышает заданный.
4. Создать на 2 листе книги таблицу, которая содержит фамилию, группу и средний балл всех слушателей заданной дисциплины. Если число их превысит заданное, то отобрать студентов, которые имеют более высокий средний балл успеваемости.
5. Сортировать данные в таблице по заданному столбцу.
6. Изменить сведения для студента с заданной фамилией.
7. Удалить информацию о студентах со средним баллом ниже заданного.
ПРИЛОЖЕНИЕ А
ОБЪЕКТЫ EXCEL VBA
Объект/ Перевод/ Принадлежность |
Свойство / Перевод |
Описание объекта или свойства |
1 |
2 |
3 |
ActiveCell / Текущая активная ячейка |
Address / Адрес |
Адрес ячейки, строка вида «АР |
Row/ Строка |
Номер строки ячейки. Например, для ячейки ВЗ — число 3 |
|
Column / Колонка |
Номер колонки ячейки (число). Например, для ячейки ВЗ -число 2 |
|
Value / Значение |
Данное, содержащееся в ячейке. Это свойство является свойством по умолчанию, т.е. если для ActiveCell не указывать никаких свойств, то будет считаться, что происходит обращение к свойству Value |
|
NumberFormat / Формат числа |
Строка, содержащая формат числа (см. меню Формат/ Ячейки/Число/(все форматы)) |
|
Horizontal Alignment / Выравнивание по горизонтали |
Может быть одним из: xlHAlignCenter — по центру; xHAlignJustiry — по ширине; xlHAlignLeft — по левому краю; xlHAlignRight — по правому краю; xlHAlignCenterAcrossSelection — по центру выделения; xlHAlignFill — с заполнением; xlHAlignGeneral — по значению |
|
Vertical Alingrnent / Выравнивание по вертикали |
Может быть одним из: xlVAlignBottom — по нижнему краю; xlVAHgnCenter — по центру; xlVAlignJustify — по высоте; xlVAlignTop — по верхнему краю |
|
Formula / Формула |
Строка, содержащая формулу (например, = А1 + В1) |
|
Orientation / Ориентация |
Направление размещения текста в ячейке: целое число от -90 до 90 (угол в градусах) |
|
Font / Шрифт / ActiveCell, Selection, Cells, Range |
Шрифт объекта с наименованием, размером и другими свойствами. Не может использоваться без указания принадлежности. |
|
Name/ Наименование |
Наименование шрифта (Arial, Times New Roman и т.д.) |
|
Size/ Размер |
Размер шрифта в пунктах (8,10,14…) |
|
Italic / Курсив |
Установка наклона, логическая величина: True — есть, False — нет |
|
Bold/ Полужирный |
Установка полужирного шрифта, логическая величина: True — есть, False — нет |
|
Underline / Подчеркивание |
Установка подчеркивания, логическая величина: True — есть, False — нет |
|
Color / Цвет |
Код цвета шрифта, целое число от 0 до 16777215 |
|
Interior / Заливка / ActiveCell, Selection, Cells, Range |
Заливка объекта. Не может использоваться без указания принадлежности |
|
Pattern / Узор |
Может быть одним из: xlPatternAutomatic, xlPatternChecker, xlPatternCrissCross, xlPatternDown, xlPatternGrayl6, xlPatternGray25, xlPattemGraySO, xlPaternGray75, xlPatternGrayS, xlPatternGrid, xlPatternHorizontal, xlPattemLightDown, xlPatternLightHorizontal, xlPatternLightUp xlPattemLightVertical, xlPatternNone, xlPatternSemiGray75 и др. |
|
Color / Цвет |
Код цвета шрифта, целое число от 0 до 16777215 |
|
PattemColor / Цвет шаблона |
Код цвета шаблона, целое число от 0 до 167772 15 |
Продолжение прил. А
1 |
2 |
3 |
Borders / Границы/ Active-Cell, Selection, Cells, Range |
Общие характеристики всех четырех границ. Не может использоваться без указания принадлежности |
|
Color / Цвет |
Код цвета границ, целое число от 0 до 16777215 |
|
LineStyle / Вид линии |
Характеризует вид линии границ, может быть одним из: xlContinuous — сплошная, xlDash — штрих, xlDashDot — штрих-пунктирная, xlDashDotDot — штрих-пунктир-пунктир, xlDot — пунктирная, xlDouble — двойная или xlLineStyleNone — нет линии |
|
Weight/ Толщина |
Толщина линии, может быть одним из: xlHairline — еле заметная, xlThick — тонкая, xlMedium — средняя, xlThin — толстая |
|
Borders (Код_границы) / Одна из четырех границ / Active-Cell, Selection, Cells, Range |
Те же свойства, как у объекта Borders |
Конкретная граница из четырех: Borders(xlEdgeTop) — верхняя, Borders(xlEdgeBottom) — нижняя, Borders(xlEdgeLeft) — левая, Borders(xlEdgeRight) — правая. Не может использоваться без указания принадлежности |
Cells(№ строки, № колонки)/ Ячейка |
Те же свойства, как у объекта ActiveCell |
Обращение к ячейке по номеру строки и колонки. Например, ячейке с адресом ВЗ соответствует Cells(3, 2). Если префикс принадлежности не указан, объект Cells считается относящимся к ActiveSheet |
Кап§е(«Адрес ячейки или диапазона») / Диапазон / ActiveSheet, Selection |
Те же свойства, как у объекта ActiveCell |
Обращение к ячейке или диапазону по адресу. Например, Range(«B3») -обращение к ячейке ВЗ; Range(«Al :С2») — к диапазону ячеек А1:С2. Если префикс принадлежности не указан, объект Range считается относящимся к ActiveSheet |
Selection / Выбранный диапазон ячеек/ ActiveSheet |
Те же свойства, как у объекта ActiveCell |
Группа ячеек, выделенных пользователем |
Rows. Count / Количество строк |
Количество строк в выбранном диапазоне ячеек |
|
Columns.Count / Количество колонок |
Количество колонок в выбранном диапазоне ячеек |
ПРИЛОЖЕНИЕ В
ОПЕРАТОРЫ VBA
Знак |
Действие |
Тип |
Приоритет |
л |
возведение в степень |
арифметические |
1 |
— |
изменение знака |
2 |
|
* |
умножение |
3 |
|
/ |
деление |
3 |
|
целочисленное деление |
4 |
||
Mod |
остаток от деления |
5 |
|
+ |
сложение |
6 |
|
— |
вычитание |
6 |
|
& |
слияние строк (конкатенация) |
строковый |
7 |
= |
равно |
сравнения |
8 |
|
не равно |
9 |
|
меньше |
10 |
||
больше |
11 |
||
меньше либо равно |
12 |
||
= |
больше либо равно |
13 |
|
Like |
подобно |
14 |
|
Is |
в точности такой, как |
15 |
|
Not |
НЕ |
логические |
16 |
And |
И |
17 |
|
Or |
ИЛИ |
18 |
Примечание:
Тип данных |
Размер области памяти в байтах |
Описание |
Integer |
2 |
Целые числа |
Long |
4 |
Длинные целые числа |
Single |
4 |
Числа с плавающей точкой одинарной точности |
Double |
8 |
Числа с плавающей точкой двойной точности |
Currency |
8 |
Числа с фиксированной точкой |
Byte 1 |
1 |
Целые числа от 0 до 255 |
String |
1 байт на 1 символ |
Текстовая информация |
Date |
8 |
Даты и время |
Boolean |
2 |
Логические значения True и False |
Object |
4 |
Ссылка на объект |
Variant |
16 байтов + 1 байт на 1 символ |
Любые из перечисленных типов данных. Является типом по умолчанию |
Во время вычисления сложных выражений вначале выполняются операторы с меньшими номерами приоритета, затем с большими. Например, в выражении А1Л3 + 10 вначале выполнится возведение в степень, а затем к полученному результату добавится 10. Если операторы имеют одинаковый приоритет, действия выполняются слева направо.
ПРИЛОЖЕНИЕ С
ТИПЫ ДАННЫХ VBA
ПРИЛОЖЕНИЕ D
КОМАНДЫ VBA
Описательные команды
1. Определение переменных
Синтаксис:
Dim As [, As ]
Описание:
Определение имен и типов переменных, использующихся в макросах. Типы данных приведены в приложении С.
Примеры:
-
Dim A As String
-
Dim I As Byte, J As Boolean, Диапазон_ячеек As Variant
2. Начало и конец макроса типа подпрограммы
Синтаксис:
Public Sub ([])
…
End Sub
Описание:
Установка начала и окончания блока команд, составляющих макрос. Public Sub… указывает начало, a End Sub — конец блока. Все команды, находящиеся между Public Sub… и End Sub составляют собственно макрос и называются телом подпрограммы.
Примеры:
1) Public Sub Проверка_данных()
Dim A As Double
…
End Sub
2) Public Sub Упорядочивание(Диапазон)
Dim I As Long, J As Long, К I As Long
…
End Sub
3. Начало и конец макроса типа функции
Синтаксис:
Public Function ([])
…
End Function
Описание:
Установка начала и окончания блока команд, составляющих функцию. Public Function… указывает начало, a End Function — конец блока. Все команды, находящиеся между Public Function… и End Function составляют процедуру вычисления функции и называются телом процедуры-функции.
4. Начало и конец блока объектных команд
Синтаксис:
With
…
End With
Описание:
Установка начала и окончания блока команд, работающих с одним и тем же объектом. With … указывает начало, a End With — конец блока. Команды со свойствами, в начале которых стоит знак «.», находящиеся между With … и End With, считаются относящимися к объекту, имя которого указано после служебного слова With.
Примеры:
1) With Range(«Al :C1 «).Font
.Name = «Times New Roman»
.Size =10
End With
Исполнительные команды
1. Присваивание
Синтаксис:
=
Описание: Вычисление значения и помещение результата в переменную или свойство объекта.
Примеры:
-
ActiveCell.Font.Size = 14
2. Выполнение действий по условию («Если»)
Синтаксис:
1) If Then
[]
[Else
]
End If
-
If Then [] [Else Действия, если ложь]
-
If Then
[]
Elself Then
[]
…
Elself Then
[]
[Else
]
End If
Описание:
Если условие истинно, выполняются действия после служебного слова Then. Если ложно — действия после служебного слова Else.
Примеры:
1) If А 100 Then
В= 100
Else
В = 0
С=1
End If
2) If Cells(l, 3) = «+» Then Cells(3, 3) = 21
3. Выполнение действий по значению
Синтаксис:
Select Case
Case
=
[Case
= ]
[Case Else
не совпадает ни с одним значением]
End Select
Описание:
Вначале вычисляется выражение, находящееся после Select Case. Полученное значение последовательно сравнивается со всеми значениями в предложениях Case. Если получено равенство, выполняются действия после соответствующего предложения Case.
Примеры:
1) Select Case A
Casel
В = «А равно 1»
Case 2
В = «А равно 2»
Case Else
В = «Переменная А не равна 1 или 2»
End Select
2) Select Case Range(«B 1»)
Case «»
Range(«Bl») = 0
Case Is 100
Range («Bl»)= 100
Case Is
Range(«Bl») = 0
End Select
4. Циклические вычисления по счетчику
Синтаксис:
For = То [Step ]
…
Next
Описание:
Повторение действий указанное количество раз. Переменной, являющейся счетчиком, присваивается начальное значение. Затем на каждом шаге (в каждом цикле) вычисления значение переменной увеличивается на величину шага. Если шаг не указан, он считается равным 1. Вычисления заканчиваются, если значение счетчика становится больше конечного значения.
Примеры:
1) For I = 1 То 100
А = А+1 Nextl
2) For R = 2 То 20 Step 2
X=X^R
S=S+X
NextR
5. Циклические вычисления по условию
Синтаксис:
1) Do While
…
Loop
2) Do ШШ
…
Loop
3) Do
…
Loop While Условие
4) Do
…
Loop Until
Описание:
Повторение вычислений до тех пор, пока не выполнится некоторое условие. Формы Do…Loop (1-й и 3-й варианты синтаксиса) со служебным словом While повторяют вычисления, если — истина. Как только оно становится ложным, вычисления прекращаются. Формы Do…Loop со служебным словом Until (2-й и 4-й варианты синтаксиса) повторяют вычисления, если ложно. Если оно становится истинным, вычисления прекращаются. В первом и во втором случае проверяется до начала выполнения цикла, в третьем и четвертом — после. Поэтому команды в циклах третьего и четвертого типа всегда исполняются хотя бы один раз.
Примеры:
1) Do While Count
А = А+1 Loop
2) Do
S = S + Cells(I, J)
Loop Until S 100
ПРИЛОЖЕНИЕ Е
ФУНКЦИИ РАБОТЫ С ЧИСЛАМИ
Abs Модуль числа
Atn Арктангенс
Cos Косинус
Ехр Степень числа е
Hex Шестнадцатиричный формат числа
Int/Fix Целая часть числа
Log Натуральный логарифм
Oct Восьмеричный формат числа
Rnd Генерация случайного числа
Sgn Получение знака числа
Sin Синус
Sqr Квадратный корень числа
Тап Тангенс
Описание функций работы с числами:
Abs (число)
Возвращает абсолютное значение числа, указанного в качестве аргумента функции. Например, обе функции Abs(-l) и Abs(1) возвращают значение 1.
Atn (число)
Возвращает значение в радианах арктангенса для числа, указанного в качестве аргумента функции. Результат находится в диапазоне от —71/2 до тс/2.
Cos (число)
Возвращает значение косинуса для числа, указанного в качестве аргумента функции. Результат находится в диапазоне от-1 до 1.
Ехр (число)
Возвращает степень числа е (основание натурального логарифма) для числа, указанного в качестве аргумента функции. Константа е приближенно равна 2,718282.
Hex (число)
Возвращает шестнадцатиричный формат числа, указанного в качестве аргумента функции.
Int (число)
Fix (число)
Обе функции возвращают целую часть числа, указанного в качестве аргумента. Если аргумент — положительное число, то результат в обоих случаях одинаковый. Например, функции Int (8.9) и Fix (8.9) возвращают значение 8, Различие между функциями проявляется в случае отрицательного аргумента. Функция Int возвращает первое отрицательное целое число, меньшее или равное значению аргумента, в то время, как функция Fix возвращает первое отрицательное целое число, большее или равное значению аргумента. Например, Int преобразует -8.4 в значение -9, a Fix преобразует -8.4 в значение -8.
Log (число)
Возвращает натуральный логарифм для числа, указанного в качестве аргумента функции. Натуральный логарифм есть логарифм по основанию е. Константа е приближенно равна 2,718282.
Oct (число)
Возвращает восьмеричный формат числа, указанного в качестве аргумента функции.
Rnd
Возвращает случайное число в диапазоне от 0 до 1.
Sgn (число)
Возвращает знак числа, указанного в качестве аргумента функции. Результат равен 0, если аргументом является число 0, равен 1 в случае положительного значения аргумента и равен -1 в случае отрицательного значения аргумента.
Sin (число)
Возвращает значение синуса для числа, указанного в качестве аргумента функции. Результат находится в диапазоне от -1 до 1.
Sqr (число)
Возвращает значение корня квадратного из числа, указанного в качестве аргумента функции. Значение аргумента должно быть больше или равно 0.
Tan (число)
Возвращает значение тангенса для числа, указанного в качестве аргумента функции.
ПРИЛОЖЕНИЕ F
ОСНОВНЫЕ ФУНКЦИИ ОБРАБОТКИ СТРОК
Asc Код первого символа в строке
Chr Выдает символ по коду
CStr Преобразование числа в строку
InStr Возвращает позицию первого вхождения подстроки
LCase Преобразование всех символов строки в строчные
Left Выделяет символы с левой стороны строки
Len Длина строки
Ltrim/Rtrim/Trim Удаляет пробелы в строке
Mid Выделяет из строки подстроку
Right Выделяет символы с правой стороны строки
UCase Преобразование всех символов строки в прописные
Val Преобразует строку в число
Описание функций обработки строк:
Asc (строка)
Возвращает числовой код первого символа строки. Например, обе функции Asc («А») и Asc («Apple») возвращают число 65.
Chr (число)
Возвращает символ, соответствующий числовому коду, указанному в качестве аргумента. Например, Chr (65) возвращает символ «А».
CStr (число)
Преобразует число, указанное в качестве аргумента, в строку. Например, CStr (-459.65) возвращает «-459.65».
InStr (начало, строка!, строка2)
Возвращает позицию первого вхождения подстроки (аргумент «строка2») в исходную строку (аргумент «строка1»). Аргумент «начало» задает начальную позицию для поиска. Пример:
Dim SearchString, Posl, Pos2
SearchString = «XXpXXpXXPXXP»
Posl = InStr (1, SearchString, «P»)
Pos2 = InStr (1, SearchString, «W»)
В данном примере переменная Posl принимает значение 9 (позиция первого вхождения символа «Р» в исходную строку), переменная Pos2 принимает значение 0 (исходная строка не содержит символ «W»).
LCase (строка)
Преобразует все символы строки в строчные. Пример:
Dim SearchString, ResultString
SearchString = «Hello World»
ResultString = LCase (SearchString)
В данном примере переменная ResultString принимает значение «hello world».
Left (строка, число)
Возвращает подстроку, выбранную из исходной строки, начиная с первого символа слева. Аргумент «число» задает количество выбираемых символов. Пример:
Dim SearchString, ResultString
SearchString = «Hello World»
ResultString = Left (SearchString, 5)
В данном примере переменная ResultString принимает значение «Hello».
Len (строка)
Возвращает длину строки. Пример:
Dim SearchString, Result
SearchString = «Hello World»
Result = Len (SearchString)
В данном примере переменная Result принимает значение 11.
Ltrim (строка)
Rtrim (строка)
Trim (строка)
Функция Ltrim удаляет начальные пробелы в строке, Rtrim удаляет завершающие пробелы в строке, Trim удаляет и начальные, и завершающие пробелы.
Mid (строка, начало, [длина])
Возвращает подстроку, выбранную из строки, начиная с позиции, заданной аргументом «начало». Аргумент «длина» (является необязательным параметром) задает количество выбираемых символов. Если аргумент «длина» не задан, то происходит выбор всех символов, начиная с заданной позиции, до конца строки. Пример:
Dim SearchString, Result 1, Result2
SearchString = «Пушкин Александр Сергеевич»
Resultl = Mid (SearchString, 8, 9)
Result2 = Mid (SearchString,
В данном примере переменная Resultl принимает значение «Александр», переменная Result2 принимает значение «Александр Сергеевич».
Right (строка, число)
Возвращает подстроку, выбранную из исходной строки, начиная с первого символа справа. Аргумент «число» задает количество выбираемых символов. Пример:
Dim SearchString, ResultString
SearchString = «Hello World»
ResultString = Right (SearchString, 5)
В данном примере переменная ResultString принимает значение «World».
UCase (строка)
Преобразует все символы строки в прописные. Пример:
Dim SearchString, ResultString
SearchString = «hello world»
ResultString = UCase (SearchString)
В данном примере переменная ResultString принимает значение «HELLO WORLD».
Val (строка)
Преобразует строку в число. Например, функция Val («2457») возвращает значение 2457, Val («2 45 7») возвращает значение 2457, Val («24 и 57») возвращает значение 24.