Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
объектная модель Excel.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Методы объекта Range

Объект Range обладает большой коллекцией методов, предоставляющих в распоряжение разработчика возможность программировать целый спектр действий от копирования диапазона в буфер обмена до нахождения корня нелинейного уравнения. Перечислим основные методы этого объекта:

Activate

AddComment

AutoFill

AutoFit

BorderAround

Clear

ClearComments

ClearComments

ClearContents

ClearFormats

ClearNotes

Copy

CopyPicture

Cut

DataSeries

Delete

FillDown

FillLeft

FillRight

FillUp

Find

FindNext

FindPrevious

FunctionWizard

GoalSeek

Insert

PasteSpecial

Replace

Select

Show

Активизация и выбор диапазона

Метод Activate объекта Range активизирует диапазон, а метод Select выбирает диапазон, т. е. возвращает объект Selection. Например, в следующем коде сначала активизируется ячейка А2, затем в активную ячейку вводится число 1, после чего выбирается диапазон АЗ:А4 и в выбранный диапазон вводится число 3.

Range("А2").Activate

ActiveCell.Value = 1

Range("A3:A4").Select

Selection.Value = 3

Вставка и удаление комментариев в диапазон

Метод AddComment объекта Range вставляет комментарий в диапазон, а метод ClearComments его удаляет. Например, следующий код (листинг 5.51) сканирует диапазон А1:А100 и в случае, если в очередную ячейку входит строка "bhv", сначала очищает эту ячейку от комментариев, а затем вставляет в нее комментарий "Книга издательства БХВ-Петербург".

Листинг 5.51. Вставка и удаление комментариев в диапазон

Sub DemoComments()

Dim с As Range

For Each с In Range("A1:A100")

If c.Value Like "*BHV*" Then

с.CiearComments

c.AddComment "Книга издательства БХВ-Петербург"

End If

Next

End Sub

Заполнение диапазона прогрессией

Метод DataSeries объекта Range заполняет диапазон профессией. Метод DataSeries программирует выполнение команды Правка►Заполнить►Прогрессия.

DataSeries (RowCol, Type, Date, Step, Stop, Trend)

Здесь:

  • RowCol — необязательный параметр, определяющий направление, в котором создается профессия. Допустимые значения: xlRows (вдоль строк), xlColumns (вдоль столбцов). Если параметр опущен, то для задания направления используются размеры данного диапазона;

  • Type — необязательный параметр, специфицирующий тип прогрессии. Допустимыми значениями являются следующие постоянные XlDataSeriesType: xlDataSeriesLinear (линейная, используется по умолчанию), xlGrowth (геометрическая), xlChronoiogical (даты), xlAutoFill (автозаполнение);

  • Date — необязательный параметр, задающий тип последовательности дат, если параметр туре принимает значение xlChronoiogical. Допустимыми значениями являются следующие постоянные XlDataSeriesDate: xlDay (дни, используется по умолчанию), xlWeekday (дни недели), xlMonth (месяцы), xlYear (годы);

  • Step — необязательный параметр, определяющий шаг изменения прогрессии. По умолчанию полагается равным 1;

  • Stop — необязательный параметр, задающий предельное значение прогрессии. По умолчанию строится прогрессия во всем выделенном диапазоне;

  • Trend — необязательный параметр, принимает логические значения. Если значение параметра равно True, то создается арифметическая или геометрическая прогрессия, а если False, то создается список.

Например, следующие инструкции выведут членов арифметической профессии, шаг которой равен 2, 0 является ее первым членом, а 10 — последним, т. е. в диапазон А1:А6 будут выведены следующие числа: 0, 2, 4, 6, 8 и 10 (рис. 5.6).

Range("A1").Value = 0

Range("A1").DataSeries Rowcol:=xlColumns, _

Type:=xlDataSeriesLinear, _

Step:=2, _

Stop:=10

Р ис. 5.6. Прогрессии

Следующие инструкции введут в диапазон В1:В5 членов геомефической профессии с коэффициентом — 3, первый член которой — 1. Таким образом, в диапазон В1:В5 будут выведены значения 1, 3, 9, 27 и 81 (см. рис. 5.6).

Range("B1").Value = 1

Range("B1:В5").DataSeries Rowcol:=xlColumns, _

Type:=xlGrowth, _

Step:=3

Следующие инструкции выведут в диапазон С1:С4 последовательность дат, члены которой отличаются ровно на месяц, т.е. значения 01.01.2005, 01.02.2005, 01.03.2005, 01.04.2005 (см. рис. 5.6).

Range("CI").Value = "1/01/05"

Range("C1:C4").DataSeries Rowcol:=xlColumns, _

Type:=xlChronological, _

Date:=xlMonth

Автозаполнение ячеек диапазона

элементами последовательности

Метод AutoFill объекта Range производит автозаполнение ячеек диапазона элементами последовательности. Метод AutoFill отличается от метода DataSeries тем, что явно указывается диапазон, в котором будет располагаться прогрессия. Метод AutoFill программирует копирование данных в диапазон, когда пользователь располагает указатель мыши на маркере заполнения исходного диапазона и перемещает его вниз и вправо, выделяя весь диапазон, в который переносятся исходные данные.

expression.AutoFill(Destination, Type)

Здесь:

  • expression — обязательный элемент, который задает диапазон, с которого начинается заполнение;

  • Destination — обязательный параметр, определяющий диапазон, который заполняется. Этот диапазон должен содержать диапазон, указанный в expression;

  • Type — необязательный параметр, указывающий тип заполнения. Допустимыми значениями являются следующие постоянные xiAutoFillType: xlFillDefault, xlFillSeries, xlFillCopy, xlFillFormats, xlFillValues, xlFillDays, xlFillWeekdays, xlFillMonths, xlFillYears, xlLinearTrend, xlGrowtnTrend. По умолчанию используется тот тип заполнения, который наиболее подходит к данным из диапазона, указанного в expression.

Например, следующие инструкции заполняют диапазон А1:А5 членами арифметической профессии, причем ее первыми двумя членами являются 1 и 3, т. е. те значения, которые предварительно были введены в ячейки А1 и А2 (рис. 5.7).

Range("A1").Value = 1

Range("A2").Value = 3

R ange("A1:A2").AutoFill Destination:=Range("A1:A5"), Type:=xlLinearTrend

Рис. 5.7. Последовательности

Следующие инструкции выводят члены геометрической прогрессии с теми же двумя начальными значениями в диапазон В1:В5 (см. рис. 5.7).

Range("B1").Value = 1

Range("B2").Value = 3

Range("B1:B2").AutoFill Destination:=Range("B1:B5"), Type:=xlGrowthTrend

Следующие инструкции выведут в диапазон С1:СЗ последовательность значений лето 2000, лето 2000 и Лето 2003 с шагом 1, определенным по умолчанию методом AutoFill (см. рис. 5.7).

Range("C1").Value = "Лето 2000"

Range("C1").AutoFill Destination:=Range("C1:C3"), Type:=xlFillSeries

Следующие две инструкции выводят в диапазон D1:D3 первые три члена списка — имена месяцев, начиная с январь (см. рис. 5.7).

Range("Dl").Value = "Январь"

Range("Dl").AutoFill Destination:=Range("D1:D3"), Type:=xlFillSeries

А последние две инструкции копируют содержимое ячейки Е1 на все ячейки диапазона Е1:ЕЗ (см. рис. 5.7).

Range("E1").Value = "Январь"

Range("E1").AutoFill Destination:=Range("E1:E3"), Type:=xlCopy