- •1.Программирование в vba. Объекты Application, Workbook, Worksheet и Range
- •2.Редактор Visual Basic
- •2.1.Запуск программы
- •2.1.1.Панель инструментов Стандарт
- •2.2.Отладка программ
- •2.2.1.Ошибки при написании программ
- •2.2.1.1.Ошибки компиляции
- •2.2.1.2.Ошибки выполнения
- •2.2.2.Инструкция Option Explicit
- •2.2.3.Пошаговое выполнение программ
- •2.2.4.Точка останова (Toggle Breakpoint)
- •2.2.5.Отслеживание значений свойств и переменных
- •3.Объекты Application, Workbook, Worksheet и Range. Встроенные функции Dir, MkDir, MsgBox, InputBox
- •3.1.Программа СлучайныеЧисла
- •3.2.Программа УдалениеКниги
- •3.3.Программа СлучайныеЧислаОформление
- •4.Переменные
- •4.1.Объектные переменные
- •4.2.Пользовательский тип данных
- •5.Массивы
- •5.1.1.Функция Erase
- •5.1.2.Функции lBound и uBound
- •6.Подпрограммы. Функции. Область видимости переменных, подпрограмм и функций.
- •6.1.Вызов подпрограммы
- •6.2.Передача данных при вызове программы
- •6.2.1.Передача по ссылке и по значению
- •6.3.Функции
- •6.4.Область видимости переменных
- •6.4.1.Переменные уровня процедуры
- •6.4.2.Переменные уровня модуля
- •6.4.3.Переменные уровня проекта
- •6.4.4.Сохраняемые переменные
- •6.4.5.Область видимости подпрограмм и функций
- •6.4.6.Сохраняемые подпрограммы и функции
- •7.Управляющие структуры: If-Then-Else, Select Case, For-Next, While-Wend, Do-Loop, For-Each-Next
- •8.Инструкция With
- •9.Встроенные функции vba
- •9.1.Математические функции
- •9.2.Функции проверки типов
- •9.3.Функции преобразования форматов
- •9.4.Функции обработки строк
- •9.5.Функции времени и даты
- •10.Обработка ошибок: инструкция On Error
- •11.Пользовательский интерфейс
- •11.1.Создание формы (UserForm) и добавление кнопок (СоmmandButton)
- •11.2.Вывод формы на экран (запуск формы)
- •11.3.Поле (TextBox) и надпись (Label).
- •11.4.Список (ListBox) и поле со списком (ComboBox)
- •11.4.1.Список (ListBox)
- •11.4.2.Определение выбранных элементов списка
- •11.4.3.Поле со списком (ComboBox)
- •11.4.4.Определение выбранного элемента
- •11.4.5.Создание взаимосвязанных элементов управления
- •11.5.Флажок (CheckBox)
- •11.6.Выключатель (ToggleButton)
- •11.7.Переключатель (OptionButton)
- •11.8.Счетчик (SpinButton)
- •11.9.Создание нестандартных меню и панелей инструментов.
- •11.9.1.Пример создания/удаления панели инструментов
- •11.9.2.Пример создания/удаления меню
- •12.События объектов Workbook и Worksheet
- •12.1.События объекта Workbook
- •12.2.События объекта Worksheet
- •Домашнее задание №1
- •Домашнее задание №2 и №3. Типовые варианты.
- •Вариант 1. Домашнее задание №2
- •Списочный состав института
- •Домашнее задание №3
- •Вариант 2. Домашнее задание №2
- •Списочный состав института
- •Домашнее задание №3
- •Вариант 3. Домашнее задание №2
- •Домашнее задание №3
- •Вариант 4. Домашнее задание №2
- •Домашнее задание №3
- •Вариант 5. Домашнее задание №2
- •Домашнее задание №3
8.Инструкция With
Как мы уже говорили, данная инструкция избавляет нас от утомительной обязанности использовать большое количество повторений имени одного и того же объекта. С инструкцией With мы уже сталкивались при написании программ , связанных с оформлением таблиц. В следующем примере обратите внимание на использование вложенных операторов With:
Sub Пример_с_With()
With ActiveWorkbook.Worksheets(1)
.Select
.Unprotect
With .Range("A1")
MsgBox .Value
.Value = 200
.RowHeight =60
.ColumnWidth = 20
.Font.Size = 20
.Interior.ColorIndex = 3
End With
End With
End Sub
Задание:
Наберите текст этой программы в Модуль6 и протестируйте её.
Перепишите это программу без использования оператора With, назвав её Пример_без_With. Протестируйте её выполнение.
9.Встроенные функции vba
Как вы знаете, в VBA имеется большой набор встроенных функций, которые раздвигают горизонты решаемых задач, делают возможным разработку приложений для любых сфер деятельности.
В Модуль7 наберите следующие программы и протестируйте их.
9.1.Математические функции
Пример использования функции Sin:
Sub ФункцияSin()
Dim Num1
Dim Num2
Num1 = Число
Num2 = Sin(Num1)
MsgBox "Sin ( " & Num1 & " ) = " & Num2, "Синус числа"
End Sub
Function Число()
Число = InputBox("Введите число:", "Синус числа")
End Function
9.2.Функции проверки типов
Незаменимую роль в выявлении и перехвате ошибок играют функции проверки типов. Например, в предыдущем примере, если пользователь забудет ввести число, или щелкнет по кнопке Cancel или вместо числа введет символьную строку, возникнет аварийный останов.
Первые две ситуации (ввод пустого значения) можно «отловить», воспользовавшись функцией IsEmpty, которая проверяет, является ли переменная пустой или ей присвоено значение:
If IsEmpty(Num1) = False Then Exit Sub10
Для выявления символьной строки воспользуемся функцией IsNumeric. С внесенными изменениями программа ФункцияSin примет вид:
Sub ФункцияSin()
Dim Num1
Dim Num2
Num1 = Число
If IsEmpty(Num1) = False Then Exit Sub
If IsNumeric(Num1) = False Then
MsgBox "Некорректный ввод исходного значения!", _
vbExclamation, "Синус числа"
Exit Sub
End If
Num2 = Sin(Num1)
MsgBox "Sin ( " & Num1 & " ) = " & Num2
End Sub
Задание:
Модифицируйте программу ОбратноеЧисло таким образом, чтобы она работала корректно (т.е. были исключены ошибки выполнения: деление на ноль, ввод пустого значения или символьной строки).
9.3.Функции преобразования форматов
Позволяют конвертировать один тип данных в другой. Это актуально, когда наблюдается несоответствие типов между используемым и требуемым значениями, например, аргументом встроенной функции должно быть число, а передаваемое в неё значение является строкой и т.д.
Полный перечень функций преобразования типов вы найдете в справочной системе, здесь же рассмотрим некоторые из них:
Sub ФункцияCInt()
'Переводит число в целочисленный формат:
Dim MyDouble, MyInt
MyDouble = 2345.5678
MyInt = CInt(MyDouble)
MsgBox "Число " & MyDouble & _
" в целочисленном формате запишется как " & MyInt, _
vbInfomation, "Целочисленный формат"
End Sub
Следующие две программы выполните в пошаговом режиме, предварительно открыв окно локальных переменных и наблюдая за их значениями:
Sub ФункцииStr_CStr()
Dim MyString1 As String
Dim MyString2 As String
MyString1 = Str(459)
MyString2 = CStr(459)
MyString1 = Str(-459.65)
MyString2 = CStr(-459.65)
MyString1 = Str(459.001)
MyString2 = CStr(459.001)
End Sub
Sub ФункцияVal()
Dim MyValue
MyValue = Val("2345")
MyValue = Val(" 2 34 5")
MyValue = Val("23 and 45")
End Sub
