- •Е. А. Сидорова, п. С. Челобанов основы программирования на vba омск 2011
- •1. Понятие и свойства алгоритма
- •1.1. Понятие алгоритма
- •1.2. Свойства и виды алгоритмов
- •1.3. Способы представления алгоритмов
- •2. Язык программирования vba
- •2.1. Языки программирования
- •2.2. Общие сведения о vba
- •2.3. Основные понятия языка программирования
- •2.4. Алфавит vba
- •2.5. Типы данных
- •2.6. Формы записи вещественных чисел в программе
- •2.7. Переменные
- •2.8. Константы
- •2.9. Встроенные функции
- •2.10. Выражения
- •2.11. Редактор Visual Basic
- •2.12. Правила записи и ввода программ на vba
- •2.13. Создание первой программы
- •3. Управление вводом и выводом данных
- •3.1. Оператор присваивания
- •3.2. Операторы ввода данных
- •3.3. Генерирование случайных чисел
- •3.4. Операторы вывода данных
- •4. Линейные вычислительные процессы
- •5. Разветвляющиеся вычислительные процессы
- •5.1. Алгоритм разветвляющегося процесса
- •5.2. Оператор условного перехода If
- •5.2.1. Однострочный (линейный) оператор If
- •If Условие Then Операторы_1 [ Else Операторы_2 ],
- •5.2.2. Блочная форма оператора If
- •5.3. Объединение условий с помощью логических операций
- •5.4. Оператор безусловного перехода GoTo
- •5.5. Оператор выбора Select Case
- •6. Символьные переменные
- •6.1. Общие понятия
- •6.2. Сравнение строк
- •6.3. Строковые функции
- •6.4. Оператор Mid
- •7. Введение в объектно-ориентированное программирование
- •7.1. Основные понятия
- •7.2. Создание пользовательского интерфейса
- •7.3. Установка свойств объектов и определение методов
- •7.4. Составление программного кода
- •7.5. Создание пользовательского приложения с использованием формы
- •7.5.1. Создание формы
- •7.5.2. Разработка программного кода
- •8. Циклические вычислительные процессы
- •8.1. Понятие цикла
- •8.2. Арифметический цикл
- •8.2.1. Цикл с разветвлением
- •8.2.2. Цикл со счетчиком. Вычисление максимума и минимума
- •8.2.3. Вложенные циклы
- •8.3. Вычисление сумм и произведений
- •8.4. Итерационные циклы
- •8.4.1. Операторы цикла Do … Loop
- •9. Модульное программирование.
- •9.1. Понятие процедуры
- •9.2. Параметры процедур – формальные и фактические
- •9.3. Разработка процедур-функций
- •9.4. Разработка процедур-подпрограмм
- •9.5. Срочный выход из процедур и циклов
- •10. Переменные с индексами. Одномерные массивы
- •10.1. Понятие массива
- •10.2. Ввод массива
- •10.2.1. Считывание массива с листа Excel
- •10.2.2. Заполнение массива случайными числами
- •10.3. Вывод массива
- •10.4. Решение задач с использованием массивов
- •644046, Г. Омск, пр. Маркса, 35
6.4. Оператор Mid
Формат записи:
Mid(строка, n, [k]) = фрагмент
Этот оператор заменяет в строке, начиная с позиции n, k символов на фрагмент. Оператор Mid в отличие от функции Mid записывается слева от знака равенства. Если k не указано, фрагмент берется целиком. Если длина фрагмента больше k, то берутся только первые k символов фрагмента, например:
X = "Добрый день"
Mid(X, 1, 6) = "Плохой" Результат: X = "Плохой день"
Пример С1. Ввести произвольный текст из двух – трех предложений. В этом тексте найти позицию первой точки, вывести весь текст после этой точки и указать его длину.
Текст программы:
Sub Пример_С1() 'Пример использования строковых функций
Worksheets("Лист1").Select 'Выбор рабочего листа "Лист1"
'Объявления переменных:
Dim vv_txt As String 'Введенный текст
Dim poz As Byte 'Позиция первой точки
Dim ost_txt As String 'Остаток текста после точки
Dim dlina As Byte 'Длина остатка текста
vv_txt = InputBox("Введите текст") 'Ввод текста
Cells(1, 1) = vv_txt 'Вывод введенного текста в ячейку А1
'для контроля работы программы
poz = InStr(vv_txt, ".") 'Поиск точки с начала текста
ost_txt = Mid(vv_txt, poz + 1) 'Выделение остатка текста
dlina = Len(ost_txt) 'Определение длины остатка текста
MsgBox ost_txt & Chr(13) & "Длина =" & dlina 'Вывод результата
End Sub
Пример С2. Преобразовать запись «Имя Отчество Фамилия» в запись «Фамилия И.О.».
Текст программы с подробными комментариями имеет вид:
Sub Пример_С2() 'Преобразование текста
Dim txt As String 'Введенный текст
Dim dl As Byte 'Длина введенного текста
Dim p1 As Byte 'Позиция первого пробела
Dim p2 As Byte 'Позиция второго пробела
Dim fam As String 'Фамилия
Dim ima As String 'Имя
Dim otc As String 'Отчество
Dim fio As String 'Результирующий текст
'Комментарии приведены для текста txt = "Петр Сергеевич Иванов"
txt = InputBox("Имя Отчество Фамилия", "Введите текст")
dl = Len(txt) 'Длина текста ( = 21)
p1 = InStr(txt, " ") 'Позиция первого пробела ( = 5)
p2 = InStr(p1 + 1, txt, " ") 'Позиция второго пробела ( = 15)
ima = Left(txt, p1 – 1) 'Имя ( = Петр)
otc = Mid(txt, p1 + 1, p2 – p1 – 1) 'Отчество ( = Сергеевич)
fam = Right(txt, dl – p2) 'Фамилия ( = Иванов)
fio = fam + " " + Left(ima, 1) + "." + Left(otc, 1) + "." 'Сборка текста
'Далее идет вывод результатов работы программы в окно Immediate
Debug.Print "Исходный текст: "; txt; " Длина текста = "; dl
Debug.Print "Позиция первого пробела = "; p1
Debug.Print "Позиция второго пробела = "; p2
Debug.Print "Имя "; ima
Debug.Print "Отчество "; otc
Debug.Print "Фамилия "; fam
Debug.Print "Результат "; fio
End Sub
7. Введение в объектно-ориентированное программирование
7.1. Основные понятия
Объектно-ориентированное программирование (ООП) в настоящее время приходит на смену традиционному процедурному программированию. VBA с некоторыми ограничениями относят к объектно-ориентированным языкам программирования, в основе которых лежат понятия «объект» (с характерными для него методами, свойствами и событиями), «класс», «инкапсуляция», «наследование» и «полиморфизм».
В частном случае в VBA объектом называется элемент пользовательского интерфейса. Каждый объект является экземпляром, т. е. представителем некоторого класса однотипных объектов. Обычно объект нужен для того, чтобы воспользоваться его методами, свойствами или событиями.
Класс определяет общие для всех его объектов методы и свойства.
Методы – это программные процедуры, определяющие взаимодействие объектов с внешней средой. Иначе говоря, метод – это именованный набор действий, которые может выполнять данный объект, например, осуществлять какие-либо операции, принимать и возвращать значения и др.
Свойства представляют собой характеристики (атрибуты), присущие объектам (например, заголовок, размер шрифта, цвет фона и др.). Через свойства реализуется возможность получения доступа к информации, которая хранится в объекте.
Событие – это распознаваемое объектом действие, для которого можно запрограммировать отклик.
Инкапсуляция – это скрытие информации. В ООП доступ к объекту возможен только через его методы и свойства. Внутренняя структура объекта скрыта от пользователя. Инкапсуляция позволяет изменять реализацию объектов любого класса без опасений, что это вызовет нежелательные побочные эффекты в программной системе.
Наследование – это возможность выделить свойства, методы и события одного объекта и приписать их другому объекту, иногда с их модификацией. Это означает, что новый класс должен содержать только коды и данные для новых или изменяющихся методов.
Полиморфизм – это способность объектов выбирать операцию на основе данных, принимаемых в сообщении. Каждый объект может реагировать по-своему на одно и то же сообщение. Например, команду печати Print черно-белый и цветной принтеры воспринимают по-разному.
Процесс разработки приложения в ООП применительно к организации взаимодействия программы с пользователем состоит из трех этапов:
создание пользовательского интерфейса;
установка свойств объектов и определение методов;
составление программного кода.
Рассмотрим каждый из них подробнее.
