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

Замечание

  • Свойства 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