
- •Программирование в среде Microsoft Office 2000
- •1. Основные сведения о vba
- •1.2. Макрорекордер в Office 2000
- •2.Основные сведения о программировании на vba
- •2.1. Алфавит и лексика языка vba
- •2.2.Правила записи текста программы на vba.
- •2.4. Данные в vba
- •2.4.1. Типы данных в vba
- •Т ипы данных в vba
- •Встроенные типы данных показаны в таблице 2.1.
- •2.4.2.Объявление переменных и констант простых типов
- •2.4.3. Массивы
- •2.5.Использование стандартных диалоговых окон для организации ввода-вывода данных
- •2.5.1.Функция MsgBox
- •2.5.2.Функция InputBox
- •2.6. Управляющие конструкции vba
- •2.6.1.Условный оператор if
- •2.6.2.Оператор выбора Select Case
- •2.6.3.Оператор цикла For … Next
- •2.6.4.Оператор цикла While…Wend
- •2.6.5.Оператор цикла Do…Loop
- •2.6.6. Оператор перехода GoTo
- •2.7. Основные сведения об объектах
- •2.7.1.Основные понятия объектно-ориентированного программирования.
- •2.7.2. Особенности использования объектов.
- •2.7.3. Коллекции в vba
- •2.7.4. Объект Application
- •2.7.5. Объекты Range и Selection
- •2.7.6. Оператор With для операций с одним объектом.
- •2.8.Обработка ошибок
- •3.Программирование в приложениях ms Office 2000.
- •3.1.Объекты excel, их свойства и методы.
- •3.1.1. Объектная модель excel
- •3.1.2. Коллекция Workbooks
- •3.1.3. Объект Workbook
- •3.1.4.Объект Worksheet
- •3.1.5.Объект Chart
- •3.1.6.Объекты Range и Selection
- •3.1.7. Пример решения задачи в excel на основе построения vba-кода.
- •3.2. Объекты word, их свойства и методы.
- •3.2.1. Модель объектов word
- •3.2.2.Объект Appication
- •3.2.3. Объект Document
- •3.2.4. Классы, задающие структуризацию текста документа.
- •3.2.5. Классы, составляющие части документа
- •3.2.5.1. Объект Range
- •3.2.5.2. Объект Selection
- •3.2.6. Классы, представляющие структуру документа
- •3.3. Автоматизация работы в Access на основе использования Access vba
- •3.3.1. Средства автоматизации работы в Access.
- •3.3.2. Объектная модель Microsoft Access
- •3.3.3.Особенности программирования в Access vba
- •3.3.3.1. Модель программирования Access
- •3.3.3.2. Особенности работы с объектами в Access vba.
- •3.3.4. Манипулирование в Access объектами Application
- •3.3.5. Объекты доступа к данным
- •3.3.5.1. Объекты dao
- •3.3.5.2. Объекты ado
- •3.3.6. Использование объектов доступа к данным в Access
- •3.3.6.1. Соединение с текущей базой данных
- •3.3.6.2. Открытие базы данных
- •3.3.6.3. Создание базы данных
- •3.3.6.4. Выполнение операций с записями
- •3.3.6.5. Перемещение по набору записей
- •3.3.6.6. Поиск записей в объектах Recordset
- •3.3.7. Пример решения задачи в Access на основе построения vba-кода
- •3.4.Совместная работа приложений Microsoft Office 2000
- •4.Список рекомендуемой литературы
3.1.6.Объекты Range и Selection
Все объекты Excel имеют только свойство Range. Объект Range создается чаще всего при вызове свойства Range ряда объектов Excel.
Range – уникальный объект- он может представлять как единственную ячейку таблицы, так столбец или строку, некоторую связную и несвязную прямоугольную область, а также объединение всех подобных элементов. Все сказанное относится и к объекту Selection.
К основным свойствам объекта Range относятся:
Cells, Columns, Rows – возвращают коллекции ячеек, столбцов или строк, входящие в объект Range.
Column, Row – возвращают соответственно номер первого столбца или первой строки в области объекта Range позволяет прочесть или задать формулу в формате A1 или в формате R1C1.
Value – значение указанной ячейки. Если она пуста, то возвращается значение Empty, что можно проверить, вызвав функцию IsEmpty.
Font – используемый в интервале шрифт
Formula – формула интервала
Name – имя интервала
Синтаксис установки значения объекта:
Объект.Свойство = значение
Здесь значение может быть константой или формулой, возвращающей постоянное значение, и принадлежит к одному из трех типов:
Числовое значение.
Например, для установки размера шрифта:
ActiveCell.Font.Size = 14
Строка символов.
Например:
ActiveCell.Font.Name = “Courier New Cyr”
Логическое значение:
ActiveCell.Font.Italic = True
Для проверки или сохранения текущего состояния свойства используется выражение:
переменная = Объект.Свойство
Например, оператор запоминает состояние свойства защиты содержимого ячеек рабочего листа:
ab = ActiveSheet.ProtectContents
Свойство Cells имеет следующий синтаксис: Cells(номер_строки, номер столбца)
Например:
В ячейку A1 записывается значение 56:
Worksheets(1).Cells(1,1).Value = 56
В ячейку A2 записывается формула:
ActiveSheet.Cells(2,1).Formula = "sum(B1:B6)"
К основным методам объекта Range относятся:
Clear – полностью очищает интервал (в том числе и форматирование);
ClearContents – очищает содержимое ячеек интервала;
ClearFormats – очищает форматирование ячеек интервала;
Copy – копирует интервал в буфер обмена;
Offset – возвращает интервал с указанным смещением относительно первоначального интервала;
Paste – вставляет содержимое буфера обмена в интервал;
Select – выделяет интервал.
Синтаксис вызова метода объекта:
Объект.Метод[аргументы]
Например:
Range(“A1:B2”).Select
3.1.7. Пример решения задачи в excel на основе построения vba-кода.
Пример 3.2 Построение и обработка таблиц
Создать 3 таблицы на разных рабочих листах. Первая таблица содержит информацию о работающих (Табельный номер, Фамилия, Разряд), вторая – справочник по разрядам (Разряд, Оклад) и третья должна содержать сведения о начислении зарплаты (Табельный номер, Фамилия, Коэффициент отработанного времени, Начислено).
Требуется написать VBA-код для заполнения таблиц.
Данный пример VBA-кода содержит три процедуры: процедура Entertab1 создает и организует заполнение таблицы 1;
процедура Entertab2 создает и организует заполнение таблицы 2;
процедура Calculation заполняет таблицу 3 на основе данных, содержащихся в таблицах 2 и 3.
Sub Entertab1()
Sheets(1).Activate
Range("A:C").Clear
Range("A:C").HorizontalAlignment = xlCenter
Columns("B").ColumnWidth = 20
ActiveSheet.Cells(1, 1) = "Таб.номер"
ActiveSheet.Cells(1, 2) = "Фамилия"
ActiveSheet.Cells(1, 3) = "Разряд"
i = 2
s = InputBox("Табельный номер")
Do While s <> ""
ActiveSheet.Cells(i, 1) = s
ActiveSheet.Cells(i, 2) = InputBox("Фамилия")
ActiveSheet.Cells(i, 3) = InputBox("Разряд")
i = i + 1
s = InputBox("Табельный номер")
Loop
End Sub
В результате выполнения процедуры Entertab1 может быть получена таблица с основными сведениями о работающих следующего вида:
|
A |
B |
C |
1 |
Таб.номер |
Фамилия |
Разряд |
2 |
1111 |
Иванов |
12 |
3 |
1122 |
Петров |
15 |
4 |
1222 |
Сидоров |
13 |
5 |
2222 |
Марков |
14 |
Sub Entertab2()
Sheets(2).Activate
Range("A:B").Clear
Range("A:B").HorizontalAlignment = xlCenter
ActiveSheet.Cells(1, 1) = "Разряд"
ActiveSheet.Cells(1, 2) = "Оклад"
i = 2
s = InputBox("Разряд")
Do While s <> ""
ActiveSheet.Cells(i, 1) = s
ActiveSheet.Cells(i, 2) = InputBox("Оклад")
i = i + 1
s = InputBox("Разряд")
Loop
End Sub
В результате выполнения процедуры Entertab2 может быть получена таблица со справочными данными о разрядах:
|
A |
B |
1 |
Разряд |
Оклад |
2 |
10 |
400 |
3 |
11 |
500 |
4 |
12 |
600 |
5 |
13 |
700 |
6 |
14 |
800 |
7 |
15 |
900 |
Sub Calculation()
Sheets(3).Activate
Range("A:D").Clear
Range("A:D").HorizontalAlignment = xlCenter
Columns("B:C").ColumnWidth = 20
ActiveSheet.Cells(1, 1) = "Таб.номер"
ActiveSheet.Cells(1, 2) = "Фамилия"
ActiveSheet.Cells(1, 3) = "Коэффициент"
ActiveSheet.Cells(1, 4) = "Начислено"
i = 2
Do While Sheets(1).Cells(i, 1) <> ""
ActiveSheet.Cells(i, 1) = Sheets(1).Cells(i, 1)
ActiveSheet.Cells(i, 2) = Sheets(1).Cells(i, 2)
r = Sheets(1).Cells(i, 2)
ActiveSheet.Cells(i, 3) = InputBox("Коэффициент <=1", , "1")
k = 2
Do While Sheets(2).Cells(k, 1) <> ""
If Sheets(1).Cells(i, 3) = Sheets(2).Cells(k, 1) Then
ok = Sheets(2).Cells(k, 2)
End If
k = k + 1
Loop
ActiveSheet.Cells(i, 4) = ActiveSheet.Cells(i, 3) * ok
i = i + 1
Loop
End Sub
В результате выполнения процедуры Calculation может быть получена таблица с начисленной суммой:
|
A |
B |
C |
D |
1 |
Таб.номер |
Фамилия |
Коэффициент |
Начислено |
2 |
1111 |
Иванов |
1 |
600 |
3 |
1122 |
Петров |
0,8 |
720 |
4 |
1222 |
Сидоров |
0,9 |
630 |
5 |
2222 |
Марков |
0,7 |
560 |