
- •15.1. Как обратиться к ячейке
- •15.2. Методы Range
- •15.2.1. Activate - активация ячейки
- •15.2.2. AddComment - добавляем комментарии к ячейкам
- •15.2.3. AutoFit - автонастройка ширины столбцов и высоты строк
- •15.2.4. Clear, ClearComments, ClearContents, ClearFormats - очистка и удаление
- •15.2.5. Copy, Cut, PasteSpecial - буфер обмена
- •15.2.6. Delete - удалить диапазон
- •15.2.7. Merge, UnMerge - объединение ячеек
- •15.2.8. Select - выделение ячейки
- •15.3. Свойства Range
- •15.3.1. Address - адрес ячейки в формате a1
- •15.3.2. Areas - работа с несмежными выделенными областями
- •15.3.3. Borders - управление границами ячеек
- •15.3.4. Cells, Columns, Rows - ячейки, столбцы, строки
- •15.3.5. CurrentRegion - область, заполненная данными
- •15.3.6. Characters, Font - форматирование текста
- •15.3.7. Formula, FormulaR1c1 - формулы в ячейках
- •15.3.8. Interior - внешний вид ячейки
- •15.3.9. Name - работа с именованными диапазонами
- •15.3.10. Value - содержимое ячейки
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. Количество строк в диапазоне (html, txt)
Воспользуемся свойством 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 (html, txt)
Как видите, мы присваиваем ссылку на диапазон ячеек 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. Форматирование текста в ячейке (html, txt)
Свойство 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. Ввод формулы в ячейку (html, txt)
Свойство 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. Формирование таблицы с вводом формул подсчета итогов по строкам и столбцам (html, txt)