- •Bведение
- •1. Основы языка Basic
- •1.1. Основные структуры
- •1.2. Операторы ввода, вывода, позиционирования
- •1.3. Числа
- •1.4. Строки
- •1.5. Операторы def, dim, пользовательский тип
- •1.6. Разветвление и альтернатива
- •1.7. Циклы
- •If k then print "пароль принят" else print "ошибка пароля"
- •Input "Введите произвольный текст : ", txt
- •Input X
- •1.8. Программные стэки
- •1.9. Массивы
- •If I and jb then
- •Input n
- •1.10. Функции, подпрограммы
- •1.11. Файлы
- •1.12. Сегментирование программы
- •Input n
- •1.13. Работа с графической информацией
- •If nu then gosub Move 'перемещение рисунка
- •1.14. Звуковое воспроизведение
- •2. Элементы vba
- •2.1. Типы переменных
- •2.2. Использование массивов
- •2.3. Разветвление и циклы
- •2.4. Работа с ячейками листа
- •If y X Then
- •If Check Then
- •2.5. Элементы управления
- •If X 0 Then
- •2.6. Пользовательские классы
- •If IsEmpty(Text2) Then Exit Sub
- •2.7. Построение графиков в excel
- •2.8. Построение графиков и таблиц в word
- •3. Ключи в word
- •4. Гипертекстовая разметка
- •4.1. Основные тэги html
- •4.2. Форматирование таблиц
- •4.3. Фреймы
- •5. Основы программирования в среде MathCad
- •5.1. Особенности языка MathCad
- •5.2. Некоторые вычислительные модели
- •5.2.1. Системы уравнений
- •5.2.1.1. Системы линейных уравнений
- •Iter(a, b, e) n Last (b)
- •5.2.1.2. Нелинейные уравнения и системы
- •5.2.2. Определенный интеграл
- •5.2.3. Функции на дискретном множестве
- •5.2.4. Обыкновенные дифференциальные уравнения
- •5.2.5. Минимизация функций
- •5.2.5.1. Функции одной переменной
- •5.2.5.2. Функции многих переменных
- •5.2.6. Pазностная модель и прогноз
- •1 Otherwise (коэффициенты непрерывной модели)
- •5.2.7. Сглаживание и осреднение рядов
- •Задания
- •Литература
If X 0 Then
MsgBox("Отрицательное основание"): END
Else
z = x ^ y
Label3.Caption = T & "x ^ y" & S & Str$(z)
End If
End Select .
Таким образом, введя в текстовые поля значения х и у и выбрав мыш-
кой в списке необходимую арифметическую операцию, в нижнем окне
получим необходимый результат.
2.6. Пользовательские классы
В некоторых случаях пользователю удобно создать свой объект со специфическими свойствами и методами, не имеющий аналогов среди готовых образцов. Все объекты, удовлетворяющие необходи-мым требованиям, объединяются в так называемый пользовательский класс. Этот класс может быть введен с помощью меню “Insert” (“Вставка”), пункт “Новый класс”. В редакторе VBA в меню “Свойс-тва” можно указать имя нового класса, которое будет определять объекты нового типа. Свойства объектов класса вводятся в области кода как переменные общего доступа (“Public”) в разделе “Option Explicit”. Методы объектов класса суть процедуры или функции, обра-батывающие некоторые свойства. В отличие от стандартных объектов новый конкретный объект класса должен быть создан с использовани-ем функции NEW и присвоен конкретному идентификатору операто-ром SET. “Обнуляется” объект присваиванием специфической уни-версальной константы Nothing.
В VBA имеется возможность создавать коллекции новых объ-ектов с помощью стандартного класса COLLECTION, имеющего одно свойство Count (количество элементов в коллекции) и три метода: Add (добавляет объект в коллекцию), Remove (удаляет объект из кол-
лекции), Item (возвращает объект коллекции с указанным номером).
Пример 1. Пусть нужно создать небольшой занумерованный список фамилий с телефонами.
Создадим класс с именем Tlist:
Option Explicit
Public Num As Integer ' порядковый номер в списке
Public Name As string ' имя представителя
Public Tel As long ' номер телефона
Public Sub Clr() ' метод очищает содержимое объекта
Num = 0 : Name = ”” : Tel = 0
End Sub
Public Function Inf() as string
Inf = Str(Num) + “:” + Name + “, Telef:” + Str(Tel)
End Function ' метод возвращает строку информации об объекте.
Определим переменные типа
Dim i As Integer ' счетчик в коллекции
Dim DataList As Tlist ' объект созданного класса
Dim Check As New Collection ' коллекция объектов класса.
На листе Excel поместим две кнопки: Cb1 (Caption “Добавить”) и Cb2 (Caption “Показать”), с кодами
Private Sub Cb1_Click() ' вводятся элементы коллекции
Set DataList = New Tlist ' создается объект
i = i+1
With DataList ' ввод данных
.Num = i : Name = InputBox(“Введите имя”)
.Tel = Val(InputBox(“Введите номер телефона”))
End With
Check.Add DataList ' добавление элемента коллекции
End Sub
Private Sub Cb2_Click() ' “показывает” объект
i = Val(InputBox(“Введите номер элемента в списке”))
Set DataList = Check.Item(i) ' выбор элемента коллекции
MsgBox DataList.Inf ' метод Inf выдает содержимое объекта
End Sub
Теперь при нажатии кнопки “Добавить” появляются окна ввода фамилии и телефона и автоматически присваивается номер в коллек-ции. При нажатии кнопки “Показать” и вводе номера в коллекции на экране появится информация об указанном объекте.
Пользовательские классы позволяют организовать динамическое распределение памяти явно, т. е. строить объекты, которые занимают память в зависимости от поступающей информации. Речь идет о конс-трукции, аналогичной указателям в языке Pascal, но более гибкой. Со-здаваемый объект формируется как пользовательский тип данных, имеющий информационное поле и одно или несколько полей ссылок. Таким образом, при определении класса позволено указывать неявную ссылку на создаваемый объект (т. е. делается ссылка не на сам объект, которого еще нет, а на место в памяти, где этот объект будет находить-ся). При поступлении информации неявная ссылка делается явной и динамическая память для этого объекта изменяется.
Пример 2. Пусть некоторое число человек, пересчитавшись по порядку, встали в круг (за последним идет снова первый) и, как в дет-ской “считалке”, требуется удалить из круга каждого k-го по счету.
Создадим пользовательский класс Circ со свойствами:
Option Explicit
Public Num As Long 'номер по порядку
Public Pre As Circ ' ссылка на предыдущего в круге
Public Nxt As Circ ' ссылка на следующего в круге
На листе Excel поместим текстовое окно Text1 для вывода содер-жимого круга, текстовое окно Text2 для ввода числа k (модуль пе-ресчета) и три кнопки: Cb1(“Initia”) – инициализация класса пере-менных, Cb2(“Add”) – добавление в круг нового человека, Cb3(“De-
lete”) – удаление из круга очередного k-го по счету, с кодами
Option Explicit
Dim first As New Circ ' первый в круге
Dim last As New Circ ' последний в круге
Dim cur As Circ ' текущий объект “считалки”
Dim count As Long ' счетчик
Private Sub Cb1_Click() ' инициализация
Set first.Nxt = last : first.Num = 1
Set first.Pre = last ; count = 2 ' формирование “круга”
Set last.Pre = first : last.Num = 2 ' из двух человек
Set last.Nxt = first : Text1.Text = “”
Set cur = Nothing ' пустой объект
End Sub
Private Sub Cb2_Click() ' добавление в круг
Dim ncell As New Circ
count = count + 1
ncell.Num = last.Num : last.Num = count
Set last.pre.Nxt = ncell : Set last.Pre = ncell
Display ' вывод информации в текстовое окно Text1
End Sub
Private Sub Cb3_Click() ' удаление из круга k-го по счету
Dim m As Long, k As Long