Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа_с_ячейками_объект_R...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
278.53 Кб
Скачать

15.3.4. Cells, Columns, Rows - ячейки, столбцы, строки

15-08-Range Cells.xlsm - пример к п. 15.3.4.

Свойство Cells позволяет обращаться к отдельным ячейкам в диапазоне. При работе с этим свойством в отдельном диапазоне ячеек нумерация ячеек ведется по собственной системе координат. Иными словами, диапазон выступает как небольшой виртуальный рабочий лист: левая верхняя ячейка диапазона получает индекс (1, 1), ячейка, расположенная во втором столбце и третьей строке диапазона, - индекс (3,2) и т.д.

Свойства Columns и Rows возвращают, соответственно, коллекции, которые содержат столбцы и строки диапазона. Например, так (листинг 15.18.) можно узнать количество строк в диапазоне, ссылка на который хранится в переменной obj_Range.

num_Rows = obj_Range.Rows.Count

Листинг 15.18. Количество строк в диапазоне (htmltxt)

Воспользуемся свойством Cell для диапазона размером 6х5 ячеек, чтобы заполнить этот диапазон данными (листинг 15.19.).

Dim obj_Range As Range

Set obj_Range = ActiveSheet.Range("B2:F7")

For i = 1 To obj_Range.Rows.Count

For j = 1 To obj_Range.Columns.Count

obj_Range.Cells(i, j) = _

Int(Rnd * 100)

Next j

Next i

Листинг 15.19. Заполнение диапазона ячеек с использованием свойства Cell (htmltxt)

Как видите, мы присваиваем ссылку на диапазон ячеек B2:F7 переменной obj_Range, после чего в цикле, используя свойство Cellsдля этой переменной, заполняем выбранный диапазон значениями. Еще раз обращаю ваше внимание на то, что свойство Cells дляRange "работает" в пределах диапазона и ячейки в диапазоне имеют собственную нумерацию, отличную от ячеек листа

15.3.5. CurrentRegion - область, заполненная данными

Возвращает объект Range, который представляет собой все заполненные данными ячейки вокруг ячейки или диапазона, для которого вызывается.

15.3.6. Characters, Font - форматирование текста

15-09-Range Font.xlsm - пример к п. 15.3.6.

Свойство Characters позволяет настраивать форматирование отдельных символов текста ячейки, а параметр Font нужен для настройки параметров шрифта по ячейке в целом. Рассмотрим пример. В ячейке, выделенной пользователем, отформатируем текст шрифтом Times New Roman, размером 15, красного цвета. А первый символ отформатируем курсивом (листинг 15.20.).

Dim obj_Range As Range

Set obj_Range = Selection

With obj_Range

.Font.Name = "Times New Roman"

.Font.Size = 15

.Font.Color = vbRed

.Characters(1, 1).Font.Italic = True

End With

Листинг 15.20. Форматирование текста в ячейке (htmltxt)

Свойство Name объекта Font позволяет задать имя шрифта, Size - размер, Color - цвет. При работе с Characters мы задаем номер символа, с которого начинается форматирование, а так же - количество символов, начиная с первого. Чтобы отформатировать второй и третий символы, нам понадобилось бы вызвать это свойство так: Characters(2, 2) - два символа, начиная со второго.

15.3.7. Formula, FormulaR1c1 - формулы в ячейках

15-10-Range Formula.xlsm - пример к п. 15.3.7.

Formula позволяет записать в ячейку формулу, а также - узнать, какая формула записана в ячейке. Формулы используют ссылки наячейки в стиле A1. Например, для записи в ячейку A1 суммы ячеек A2 и A3, нам понадобится такая команда (листинг 15.21.)

Range("A1").Formula = "=$A$2+$A$3"

Листинг 15.21. Ввод формулы в ячейку (htmltxt)

Свойство FormulaR1C1 записывает в ячейку формулу, используя стиль ссылок R1C1.

Рассмотрим пример. Программно создадим таблицу с числами и рассчитаем после каждого столбца и каждой строки таблицы суммы составляющих их элементов. Для расчетов сумм строк используем свойство Formula, для расчета сумм по столбцам - FormulaR1C1(листинг 15.22.).

'Для хранения ссылки на ячейку

'в которую запишем формулу

Dim obj_Range As Range

'Для хранения ссылки на первую

'ячейку диапазона (для формулы в стиле A1)

Dim obj_Range1 As Range

'Для хранения ссылки на последнюю

'ячейку диапазона (для формулы в стиле A1)

Dim obj_Range2 As Range

'Для сборки адресов ячеек в

'стиле R1C1

Dim str_R1C11 As String

Dim str_R1C12 As String

'Заполняем ячейки данными

For i = 1 To 5

For j = 1 To 5

ActiveSheet.Cells(i, j) = _

Int(Rnd * 100)

Next j

Next i

'Заполняем формулами ячейки, которые

'будут отображать суммы по строкам

For i = 1 To 5

'Ссылка на ячейку с формулой

Set obj_Range = ActiveSheet.Cells(i, 6)

'Ссылка на первую ячейку диапазона

Set obj_Range1 = ActiveSheet.Cells(i, 1)

'На последнюю ячейку

Set obj_Range2 = ActiveSheet.Cells(i, 5)

'Формула передается в ячейку в виде строки

'формируем строку такого вида:

'=SUM($A$1:$A$5)

obj_Range.Formula = _

"=sum(" + obj_Range1.Address + ":" + _

obj_Range2.Address + ")"

Next i

'Заполняем ячейки с суммами по

'столбцам

For i = 1 To 5

'ссылка на ячейку с формулой

Set obj_Range = ActiveSheet.Cells(6, i)

'Собираем ссылку на первую ячейку

'она будет иметь вид R1C1 для первого

'столбца, R1C2 для второго и т.д.

str_R1C11 = "R" + Mid(Str(1), 2, _

Len(Str(1)) - 1) + _

"C" + Mid(Str(i), 2, Len(Str(i)) - 1)

'Собираем ссылку на последнюю ячейку

'она будет иметь вид R5C1 для первого

'столбца, R5C2 для второго и т.д.

str_R1C12 = "R" + Mid(Str(5), 2, _

Len(Str(5)) - 1) + _

"C" + Mid(Str(i), 2, Len(Str(i)) - 1)

'Записываем в ячейку формулу вид

obj_Range.FormulaR1C1 = _

"=sum(" + str_R1C11 + ":" + _

str_R1C12 + ")"

Next i

Листинг 15.22. Формирование таблицы с вводом формул подсчета итогов по строкам и столбцам (htmltxt)