- •Cвойство Range
- •Первый способ
- •Второй способ
- •Запомните
- •Свойство Cells
- •Замечания
- •Свойство Offset
- •Метод Union и свойство Areas
- •Свойства Column и Row (r/o Integer)
- •Свойства Columns и Rows
- •Свойство CurrentRegion
- •Замечание
- •Свойство Address
- •Методы Методы Select и Activate
- •Метод Clear
- •Задание 1
- •Задание 2
- •Математические функции
- •Функции преобразования данных
- •Функции даты и времени
- •Строковые функции
- •Пользовательские функции
- •Задание
- •Ветвления
- •Ветвления. Сложные условия
- •Оператор выбора
- •Задание 1
- •Цикл со счетчиком
- •Выход из циклов и процедур
- •Вложенные циклы
- •Цикл For Each … Next
- •Одномерные массивы
- •Многомерные массивы
- •Статические и динамические массивы
- •Объявление массивов
- •Изменение размерности динамического массива
- •Использование свойств объектов
- •Использование методов объекта
- •Объектные переменные
- •Ссылка на объекты с помощью With...End With
- •Dim fName As String 'имя файла-копии
- •Работа с коллекциями объектов и контейнерами объектов
- •Задание 1
- •Задание 2
- •Обработчики событий
- •Задание 3
- •Задание 4
- •Задание 5
Замечание
Свойства Width и Height имеют статус Read-Only для объектов Range, но для других объектов, например, для объекта Window, они имеют статус Read-Write.
Свойство Address
Address — позволяет вернуть адрес текущего диапазона. Этому свойству можно передать много параметров — для определения стиля ссылки, абсолютного или относительного адреса для столбцов и строк, по отношению к чему этот адрес будет относительным и т.п. Свойство доступно только для чтения. AddressLocal — то же самое, но с поправкой на особенности локализованных версий Excel.
На практике встречается множество ситуаций, когда адрес ячейки нужно разобрать на части и вернуть из него имя столбца или номер строки. Это очень просто сделать при помощи строковых функций
Методы Методы Select и Activate
Метод Select выделяет интервал ячеек.
Синтаксис object.Select(Replace)
object - выделяемый объект типа Range. Ссылка на объект обязательна;
Replace - для расширения выделения аргумент устанавливается в False. Если аргумент не задан или принимает значение True, то вместо старой области выделения создается новая область выделения. Необязательный параметр.
Метод Activate активизирует единственную ячейку.
Синтаксис object.Activate
object - активизируемая ячейка. Ссылка на объект обязательна.
Примеры |
|
Оператор |
Активная ячейка |
Range("C7:E9").Select |
C7 |
Range("C7:E9").Offset(1,1).Activate |
D8 |
Range("C7:E9").Activate |
C7 |
Range("C7:E9").Cells(2,1).Activate |
C8 |
ЗАМЕЧАНИЯ
Активная ячейка выделяется фоном среди всех выделенных ячеек.
Метод Select выделяет интервал ячеек, тогда как метод Activate активизирует только одну ячейку.
При использовании метода Select первая ячейка интервала становится активной.
Если выделена только одна ячейка, то она является активной и свойства ActiveCell и Selection возвращают одну и ту же ячейку (объект Range ).
Метод Clear
Очищает интервал ячеек, изменяя, таким образом, свойство Value каждой ячейки интервала.
Задание 1
Создать 2 макроса.
1. Макрос оформление. Выполнить обрамление для созданной таблицы. Залить первую строку и задать для нее жирный шрифт.
2. Макрос ряд. Для выделенного диапазона (столбца) получить натуральный ряд.
Первоначальный вариант макроса оформление.
Sub оформление()
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
Range("E6:H6").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Font.Bold = True
End Sub
Заливка строки в данной макросе будет выполняться не правильно для произвольной таблицы, т.к. выделение привязывается к конкретному диапазону. (выделенная строка)
Для решения этой задачи надо запомнить первоначально выделенный диапазон в объектной переменной в начале макроса.
Dim r As Range
Set r = Selection
Перед заливкой надо выделить первую строку этого диапазона, а затем выполнить заливку. Для этого надо вместо выделенной строки в тексте макроса выполнить команду:
r.rows(1).Select
Окончательный вариант макроса оформление.
Sub оформление()
Dim r As Range
Set r = Selection
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
r.Rows(1).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Font.Bold = True
End Sub
Выполните задания из файла макросы согласно своему варианту
Для получения макроса ряд натуральные числа следует получить через команду прогрессия.
Первоначальный вариант макроса таблица
Sub ряд()
ActiveCell.FormulaR1C1 = "1"
Range("E6:E24").Select
Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
Step:=1, Trend:=False
End Sub
Для создания макроса для произвольного диапазона следует исключить конкретные адреса.
Окончательный вариант макроса ряд
Sub ряд()
Dim r As Range
Set r = Selection ‘Сохранение выделенного диапазона
n = r.Row 'Номер верхнего ряда
m = r.Column 'Номер левого столбца
k = r.Rows.Count 'Количество выделенных рядов
Cells(n, m).Select
ActiveCell.FormulaR1C1 = "1"
Range(Cells(n, m), Cells(n + k, m)).Select
Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
Step:=1, Trend:=False
End Sub
