Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MVBA_2000.DOC
Скачиваний:
13
Добавлен:
08.11.2019
Размер:
599.55 Кб
Скачать

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 – имя интервала

Синтаксис установки значения объекта:

Объект.Свойство = значение

Здесь значение может быть константой или формулой, возвращающей постоянное значение, и принадлежит к одному из трех типов:

  1. Числовое значение.

Например, для установки размера шрифта:

ActiveCell.Font.Size = 14

  1. Строка символов.

Например:

ActiveCell.Font.Name = “Courier New Cyr”

  1. Логическое значение:

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]