- •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. Сглаживание и осреднение рядов
- •Задания
- •Литература
2.3. Разветвление и циклы
Вместе со стандартными операторами IF ... THEN ... ELSE ...
END IF, FOR ... NEXT, WHILE ... WEND, DO ... LOOP, SELECT CASE в VBA есть еще цикл по перебору элементов группы или массива типа FOR EACH ... IN ... NEXT, как в следующем примере.
Пример 1. Элементам списка присваиваем случайный номер оче-реди: DIM x AS VARIANT, Names AS VARIANT, m AS INTEGER
Names =Array("Smith","Васин","Korn","Логинов","Самохин")
FOR EACH x IN Names
m = INT(1000*RND)
MsgBox(x & " имеет очередь " & m)
NEXT
В некоторых случаях оператор MsgBox полезно использовать как функцию выбора. В статусе функции MsgBox имеет своим аттри-бутом названия кнопок, выводимых на экран для реакции пользовате-ля, типа "Yes" - "да", "No" - "нет", "YesNo" - две кнопочки "Да" и "Нет", "YesNoCancel" - три кнопки "да", "нет", " отменить" и т.д. Это позволяет непосредственно реагировать на происходящие события.
Пример 2. Пусть требуется найти подходящее натуральное число,
для которого значение синуса по абсолютной величине меньше 10-4
(см. п. 1.7, пример 1).
DIM n AS LONG, m AS INTEGER, s AS SINGLE
CONST eps AS SINGLE = 0.0001
DO : m = 0 : DO : m = m + 1 : n = n + 1: s = sin(n)
LOOP UNTIL (m = 500) OR (ABS(s) < eps)
MsgBox "sin(n) = " & s & "при n = " & n
LOOP UNTIL MsgBox("Продолжать?", vbYesNo) = vbNO
Здесь после каждого внутреннего цикла программа спрашивает, про-должать ли итерации, при нажатии кнопки "Yes" итерации продолжат-
ся, "No" - процесс прекратится.
2.4. Работа с ячейками листа
Все объекты VBA имеют два типа взаимодействия: свойства и методы (они отделяются от объекта точкой). Свойства можно прог-раммно менять, использовать в условных операторах, присваивать пе-ременным и т.д. Методы побуждают ЭВМ к действиям в отношении указанных объектов, либо их взаимодействия с другими объектами. Часто некоторые свойства являются подобъектами (объектами следу-ющего уровня) и сами обладают свойствами. Например, объект Appli-cation обладает свойством иметь Command Bars (пульт управления), который в свою очередь может быть добавлен к рабочему листу или к форме (метод Add - добавить), имеет свойство быть видимым или не-видимым (Visible), может быть позиционирован на экране (Position), может иметь кнопки. Те, в свою очередь, могут иметь свое имя (Na-me), название (Caption), могут запускать какую-либо программу и т. д. Организацию такого объекта можно осуществить с помощью кода:
With Application.Command Bars.Add(‹ параметры ›)
.Visible = True
.Position = msoBarRight
With .Controls
.Add(msoControlButton)
.Caption = "‹ название кнопки ›"
.OnAction = "‹ имя запускаемой программы ›"
End With
End With
Ячейка листа представляет собой, как правило, двухиндексный объект Cells(m, n) в Excel и Cell(m, n) в Word, где m - номер строки листа, n - номер столбца, имеет много свойств и методов (описанные ниже свойства реализованы в Excel; Word имеет свою специфику, не сильно, однако, отличающуюся от приведенной, поэтому дальше будет говориться преимущественно об объектах Excel). Часто исполь-зуемые свойства: Value (значение), Name (имя), Interior (внутренность) и др. Из методов выделим Activate, Select - выбор конкретной ячейки. К выбранной ячейке можно уже обращаться как к объекту ActiveCell или просто Selection, который обладает свойствами иметь размер (вы-соту, ширину), имя, цвет, шрифт, стиль заполнения и т. д.
Группа ячеек в Excel обычно описывается как объект Range( ), - в скобках указывается диапазон. Например, Range("A3 : C17") - пря-моугольная группа ячеек от А3 (в левом верхнем углу) до С17 (в пра-вом нижнем углу), либо Range(Cells(3, 1), Cells(17, 3)). Объект Range может содержать всего одну ячейку (в этом случае он отождествляется с Cells).
Кроме свойств, присущих Cells, объект Range имеет свойства Count (количество ячеек в объекте), Value (может принимать массив), Borders (фиксирует границу области), Font (шрифт), ColumnWidth (ши-рина столбца) и др. Из методов следует отметить Merge (объединение в одну ячейку по названию левой верхней), Unmerge (разъединение в первоначальное состояние), ClearContents (очистка), Calculate (пере-счет содержимого при изменении данных).
Пример 1. Необходимо выделить ячейки с С3 по F20, объединить
их, окаймляя границей, изменить в них цвет, шрифт и т. д.:
Dim x As Variant, ARB As Variant
ARB = Array(xlEdgeLeft, xlEdgeRight, xlEdgeTop, xlEdgeBottom) 'константы
Dim Rang As Range
Set Rang = Range("C3 : F20")
With Rang
.Select : .Merge : .Name = "Оплата"
With .Font : 'Выбор свойств шрифта
.Name = "Arial" : .Size = 14
.Shadow = True : .Underline = xlSingle
.Color = RGB(a, b, c)
End With
For Each x In ARB
With .Borders(x) : 'Выбор границы окаймления
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 17
End With
Next
End With
(здесь RGB(a, b, c) - функция выбора цвета, a, b, c - целые числа от 0
до 255, соответственно доля красного, зеленого, синего цветов в сме-
си).
Пример 2. Пусть массив ячеек от А1 до Н20 заполнен числами. Нужно выбрать те ячейки, значения в которых больше значений сво-их ближайших соседей, выделить эти ячейки цветом и шрифтом.
DEFINT I-N : m = 20 : n = 8
Dim A as variant, x As Single, y As Single, Check As Boolean
A = Array(-1,-1, -1, 0, -1, 1, 0, 1, 1, 1, 1, 0, 1, -1, 0, -1)
' массив изменений координат ячейки
For i = 2 To m - 1 : For j = 2 To n - 1
x = Cells(i, j).Value : Check = True
For k = 0 To 15 Step 2 : i1 = i + A(k) : j1 = j + A(k + 1)
y = Cells(i1, j1). Value