Обзор моделей объектов Основные определения и понятия icon

Обзор моделей объектов Основные определения и понятия


Скачать 72.98 Kb.
НазваниеОбзор моделей объектов Основные определения и понятия
Размер72.98 Kb.
ТипОбзор

Обзор моделей объектов

Основные определения и понятия


VBA – это объектно-ориентированный язык программирования. Это означает, что основными его элементами являются объекты. Объект представляет собой элемент приложения, как, например, лист, ячейка, диапазон, рисунок, диаграмма, форма или отчет.

Каждый объект обладает некоторыми характеристиками или свойствами. Свойства объектов – это, в сущности, их атрибуты (параметры). Свойство представляет собой атрибут объекта, определяющий характеристики объекта такие, как размер, цвет, положение на экране или состояние объекта, например, доступность или видимость. Чтобы изменить характеристики объекта, надо просто изменить значения его свойств. Метод представляет собой действие, выполняемое над объектом.

Таким образом, объект — это программный элемент, который имеет свое отображение на экране, содержит некоторые переменные, определяющие его свойства, и некоторые методы для управления объектом. Объект является "кирпичиком" построения программ VBA.

Взаимосвязь объектов, составляющих приложение, в совокупности с тем, как содержимое и функциональные возможности приложения распределяются между объектами, называют иерархией объектов, или моделью объектов.

Каждый объект в иерархии включает в себя не только объекты более низких уровней, но и их содержимое и функциональность. Чем выше объект в иерархии, тем больше его содержимое, шире функциональные возможности. Например, в Excel объект Application содержит размер окна приложения и позволяет завершить работу приложения, объект Workbook содержит имя файла и формат рабочей книги и позволяет сохранить ее, а объект Worksheet содержит имя рабочего листа и позволяет удалить рабочий лист. Зачастую даже нельзя добраться до того, что кажется содержимым файла, пока не будет пройдено несколько уровней иерархии объектов.

Большинство объектов принадлежит к группе подобных объектов. Эти группы называются наборами. Например, все рабочие листы рабочей книги образуют набор, называемый Worksheets. Наборы используются одним из двух способов: либо какое-нибудь действие совершается над всеми объектами набора, (например, удалить), либо со ссылкой на набор выбирается конкретный объект для работы с ним.

В Excel есть множество объектов, и каждый имеет свой собственный набор свойств.

Точка после имени объекта указывает на то, что далее следует имя свойства или метода. Но после точки можно указать и имя объекта для перехода от одного объекта к другому.

В VBA можно выполнять следующие действия:

  • исследовать текущее значение свойства объекта и производить над ним некоторые действия;

  • изменять значение свойства объекта.

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

Изменяя свойства, можно изменять характеристики объекта или набора объектов. Установка значений свойств — это один из способов управления объектами. Для установки свойства необходимо ввести имя объекта, затем поставить точку и за ней — имя свойства. Далее должен следовать знак равенства и значение свойства. Синтаксис установки значения свойства объекта выглядит следующим образом:

Объект.Свойство = Выражение

Некоторые свойства являются неизменяемыми, т.е. допустимыми только для чтения. Имеется в виду, что значение свойства можно узнать, но не изменить. Например, для диапазона, состоящего из одной ячейки, свойства Row (строка) и Column (столбец) являются неизменяемыми. Другими словами, можно узнать, в какой строке и в каком столбце находится ячейка, но изменить ее положение путем изменения этих свойств нельзя. Синтаксис чтения свойств объекта выглядит следующим образом:

Переменная = Объект.Свойство

Кроме свойств, как уже отмечалось выше, у объектов есть ряд методов, т.е. команд, применяемых к объекту. Синтаксис вызова объекта имеет следующий вид:

Объект.Метод

Например, у объектов- диапазонов есть метод Clear, позволяющий очистить содержимое диапазона.

Чтобы очистить диапазон ячеек dip достаточно выполнить инструкцию:

Range(“dip”).Clear
^

Объекты Microsoft Excel


Visual Basic поддерживает специальный набор объектов, соответствующих элементам Microsoft Excel. Названия большинства из них оказываются знакомыми после работы с пользовательским интерфейсом этого приложения. Например, объект Workbook представляет книгу, объект Worksheet — рабочий лист, объект Range — диапазон ячеек. Каждый элемент Microsoft Excel — книга, лист, диаграмма, ячейка и т. д. — можно представить в Visual Basic объектом. Создавая процедуры, управляющие этими объектами, можно автоматизировать выполнение операций в Microsoft Excel.

Модель является наиболее зрелой. Здесь более 100 объектов и семейств. Вероятно, окажется, что приблизительно 10 процентов объектов и семейств достаточно, чтобы выполнить более 90% всех возможных действий.

На рисунке 7 приведен фрагмент модели объектов Excel.


Application











































Workbooks(Workbook)











































Worksheets(Worksheet)











































Range














































Font














































Interior





Рис. 7. Фрагмент модели объектов Microsoft Excel


Полную схему модели объектов Microsoft Excel 97 можно найти в разделе «Microsoft Excel Objects» справочной системы.
^

Инструкция Set


В Excel имеется много объектов, причем некоторые из них содержат другие объекты. Например, рабочая книга содержит рабочие листы, рабочий лист содержит диапазон ячеек и т.д. Поэтому иногда ссылки являются громоздкими, чтобы упростить читаемость программы, а также облегчить ее написание, следует использовать инструкцию Set.

Инструкция Set присваивает ссылку на объект переменной или свойству и имеет следующий синтаксис:


Set объектнаяПеременная = { объектноеВыражение } , где


  • объектнаяПеременная - имя переменной или свойства, удовлетворяющее стандартным правилам именования переменных. Эта переменная должна иметь объектный тип, соответствующий объекту, который будет ей присвоен;

  • объектноеВыражение - выражение, состоящее из имени объекта, другой описанной переменной того же объектного типа, функции или метода, которые возвращают объект того же объектного типа.


Инструкции Dim, Private, Public, ReDim и Static описывают только переменную, которая ссылается на объект. Ссылка на реальный объект не возникает до присвоения определенного объекта в инструкции Set.

Например, следующее выражение очищает вторую строку рабочего листа ^ Май в рабочей книге Отчет


Application.Workbooks("Отчет").Worksheets("Май").Rows(2).Delete


Если вспомнить, что строка содержит отдельные ячейки, свойства которых тоже можно устанавливать, то выражение становится еще длиннее:


Аppiication.WorkBooks("Отчет").WorkSheets("Май").Rows(2).Cells(1).Value="Да"


Таким образом, ссылки на объекты могут быть слишком громоздкими. Если данный объект часто используется в программе, то разумно создать объектам переменную с помощью команды set. Например, предыдущий пример можно записать в следующем виде:


Dim R As Object

Set R = Application.WorkBooks("Отчет"). Sheets("Май").Rows(2).Cells(1)

R.Value = "Да"
^

Объект Application


Объектом самого высокого уровня является Application (приложение). Если изменить его свойства или вызвать его методы, то результат применяется к текущей работе Excel. Например, можно завершить работу с Excel, применив метод Quit (выход) к объекту Application:


Application.Quit


Большинство свойств объекта ^ Application Microsoft Excel управляет внешним видом окна Microsoft Excel или глобальными аспектами поведения этого приложения. Например, если видима строка формул, значение свойства DisplayFormulaBar равно True, а если отключено обновление экрана, значение свойства ScreenUpdating равно False.

Кроме того, свойства объекта Application обеспечивают доступ к «нижестоящим» объектам в иерархии, например, к набору ^ Windows (представляющему все открытые в данный момент окна) или набору Workbooks (представляющему все открытые в данный момент рабочие книги). Такие свойства, иногда называемые аксессорами, позволяют проходить по иерархии объектов от вершины (Application) до объектов более низких уровней (Workbook, Worksheet, Range и т. д.).

Некоторые свойства и методы, применимые к объекту Application, применимы и к объектам, расположенным на более низких уровнях иерархии. Использование подобных свойств или методов на уровне Application обычно приводит к изменению всех открытых рабочих книг или листов. Например, метод Calculate применим к объектам Application, Workbook и Worksheet. Выражение Application.Calculate вызывает пересчет данных на всех рабочих листах во всех открытых книгах, а применение этого метода к объектам Workbook или Worksheet позволяет соответственно сузить масштабы пересчета.

Рассмотрим некоторые свойства объекта Application и их значения.
^

Свойства ActiveWorkbook, ActiveSheet, ActiveCell


В данных свойствах хранится информация об активном объекте. Активный объект – это объект, с которым в текущий момент взаимодействует пользователь.

^

Свойство Caption


В этом свойстве хранится имя, которое доступно в заголовке окна приложения Excel. Если требуется скрыть, что приложение в действительности работает в Excel, значение этого свойства нужно заменить другим строковым выражением. Для возврата исходного значения нужно указать значение Empty.
^

Свойство Cursor


Данное свойство используется для задания внешнего вида указателя курсора мыши во время выполнения макроса. При задании значения данного свойства можно указать одну из четырех констант Excel:

  • xlDefault - определяет использование указателя, заданного по умолчанию в приложении;

  • xlWait - определяет использование указателя мыщи в виде песочных часов;

  • xlNorthwestArrow - определяет вывод указателя мыши в виде стрелки основного режима;

  • xlIBeam - определяет вывод указателя мыши в виде стрелки выделения текста.

Восстанавливать исходный вид необходимо вручную, присвоив свойству значение xlDefault.


Sub ChangeCursor()

Application.Cursor = xlIBeam

For x = 1 To 1000

For y = 1 to 1000

Next y

Next x

Application.Cursor = xlDefault

End Sub
^

Свойства DisplayFormulaBar, DisplayScrollBar, DisplayStatusBar


Чтобы скрыть строку формулы, полосу прокрутки или строку состояния, соответствующему свойству требуется присвоить значение False.
^

Свойство EnableCancelKey


Обычно прерывание выполнения макроса осуществляется с помощью комбинации клавиш Ctrl+Break. Чтобы отменить прерывание макроса этими клавишами, требуется присвоить свойству EnableCancelKey значение xlDisabled (запретить прерывание). Значение свойства xlInterrupt разрешить прерывание, а значение xlErrorHandler задает осуществление перехода к процедуре обработки ошибок. При использовании последней константы необходимо включить в макрос подпрограмму обработки ошибок, указав инструкцию On Error GoTo .
^

Свойство StatusBar


Данное свойство позволяет установить текст строки состояния.


oldStatusBar = Application.DisplayStatusBar

Application.DisplayStatusBar = True

Application.StatusBar = "Please be patient..."

Workbooks.Open filename:="книга1.XLS"

Application.StatusBar = False

Application.DisplayStatusBar = oldStatusBar


Свойство UserName хранит имя текущего пользователя, а свойство Version - хранит номер текущей версии Excel.

Методы


В большинстве программ VBA, в которых используется объект Application, обычно изменяются свойства этого объекта. Однако имеются также несколько методов объекта Application. Некоторые из них требуют детального рассмотрения.

Метод InputBox кажется похожим на одноименную функцию, однако, на самом деле существуют большие отличия. Метод InputBox имеет необязательный параметр Type, который позволяет задать тип введенных пользователем данных.

Метод имеет следующий синтаксис:


Application.InputBox(Prompt, Title, Default, Left, Top, HelpFile, _ HelpContextId, Type)


Prompt - обязательный аргумент, определяющий сообщение, которое требуется отобразить в окне ввода. Title – дополнительный аргумент, который задает заголовок окна. По умолчанию выводится заголовок "Input". Другим необязательным параметром является аргумент Default. Он определяет значение по умолчанию, которое нужно вывести в окне. Параметры Left и Top - дополнительные параметры, которые определяют положение окна ввода по горизонтали и по вертикали относмительного левого верхнего угла экрана. Параметры HelpFile и HelpContextID – имена файла справки и контекстного идентификатора в этом файле. Аргумент Type определяет тип данных , возвращаемый методом. Если этот аргумент не задан, то возвращается текст. В качестве значения аргумента Type можно использовать значения, перечисленные в таблице 14.

^ Таблица 14

Значения параметра Type


Value

Тип

0

формула

1

номер

2

текст (строка)

4

Логическое значение (True or False)

8

ссылка на ячейки, as a Range object

16

значение ошибки, such as #N/A

64

массив


В программе можно использовать комбинацию значений параметра Type. Например, если необходимо задать ввод либо числа, либо текста, следует присвоить данному параметру значение 2+1

При нажатии кнопки ОК метод возвращает значение, введенное в окно, при нажатой кнопке ОТМЕНА - значение ЛОЖЬ.


Worksheets("лист1").Activate

Set myCell = Application.InputBox(prompt:="Select a cell", Type:=8)

^

Объект Workbook. Свойства и методы


На следующем уровне иерархии классов находится семейство Workbooks, которое содержит объекты Workbook.

Открывая или сохраняя файл в ^ Microsoft Excel, Вы фактически открываете или сохраняете рабочую книгу. Поэтому для работы с файлами в Visual Basic используются методы объекта Workbook или набора Workbooks.

Так например, Count - хранит число Workbook в семействе Workbooks (количество открытых книг), Add - метод, позволяющий создать новый объект семейства, т.е. – новую книгу, Open –для открытия существующей книги.
^

Открытие рабочей книги


Рабочая книга открывается методом Open. Он всегда применяется для набора Workbooks, ссылку на который можно получить через свойство Workbooks. Вот как выглядит код, открывающий файл Bookl.xls (в текущем каталоге) и показывающий значение из ячейки А1 на первом листе данной книги:


Sub OpenBook()

Set myBook = Workbooks.Open(FileName:="BOOK-1")

MsgBox myBook.Worksheets(1).Range("A1").Value

End Sub


Метод ^ Open возвращает объект Workbook, соответствующий только что открытой книге.

Имя файла в этом примере не содержит пути, и таким образом подразумевается, что файл расположен в текущей папке. Это обязательно даст ошибку в период выполнения — как только пользователь сменит текущую папку, Visual Basic не найдет файл.

Вместо того, чтобы жестко зашивать в программу имя файла, передаваемое методу ^ Open, лучше предоставить пользователю возможность выбора нужного файла. Метод GetOpenFilename выводит на экран стандартное диалогово окно Open (Открытие файла), но не открывает файл, а возвращает строку, которая содержит полный путь и имя выбранного файла.

Вот пример использования метода GetOpenFilename, в котором программа сообщает имя выбранного файла и открывает его:


Sub DemoGetOpenFilename()

Do

fName = Application.GetOpenFilename

Loop Until fName <> False

MsgBox "Opening " & fName

Set myBook = Workbooks.Open(Filename:=fName)

End Sub
^

Создание и сохранение рабочей книги


Создать книгу позволяет метод Add набора Workbooks. Значение, возвращенное этим методом, можно присвоить объектной переменной, и тогда появляется возможность ссылаться на созданную книгу в своей программе.

При первом сохранении новой книги лучше применять метод ^ SaveAs, а в последующем — метод Save. Метод GetSaveAsFilename очень похож на метод GetOpenFilename, описанный в предыдущем разделе. Попробуем создать книгу и сохранить ее методом GetSaveAsFilename:


Sub CreateAndSave()

Set newBook = Workbooks.Add

Do

fName = Application.GetSaveAsFilename

Loop Until fName <> False

newBook.SaveAs Filename:=fName

End Sub
^

Закрытие рабочей книги


Для закрытия книги предназначен метод Close объекта Workbook. В следующем примере книга закрывается без сохранения последних изменений:


Sub OpenChangeClose()

Do

fName = Application.GetOpenFilename

Loop Until fName <> False

Set myBook =WorkBooks.Open(Filename:=fName)


‘ здесь вносим какие-то изменения в myBook


myBook.Close savechanges:=False

End Sub
^

Объект Range


Объект Range представляет отдельную ячейку, диапазон ячеек, целую строку или колонку, несколько выделенных областей или трехмерный диапазон. Объект Range несколько необычен, поскольку может представлять как одну, так и множество ячеек. Для объекта Range не предусмотрен специальный объект-набор и в зависимости от конкретной ситуации его можно считать либо отдельным объектом, либо набором.
^

Ссылки на ячейку или на группу ячеек


Прежде чем приступить к рассмотрению способов задания диапазонов в VBA следует вспомнить, что представляют собой ссылки в самом Excel.

Ссылкой однозначно определяется ячейка или группа ячеек листа, а также упрощается поиск значений или данных, используемых в формуле. С помощью ссылок можно использовать в формуле данные, находящиеся в различных местах листа, а также использовать значение одной и той же ячейки в нескольких формулах. Кроме того, можно ссылаться на ячейки, находящиеся на других листах книги или в другой книге, или на данные другого приложения.

По умолчанию в Microsoft Excel используются ссылки A1, в которых столбцы обозначаются буквами от A до IV (256 столбцов максимально), а строки числами — от 1 до 65536). Например, D50 является ссылкой на ячейку, расположенную в пересечении столбца D с 50-й строкой. Чтобы сослаться на диапазон ячеек, вводят ссылку на верхний левый угол диапазона, ставят двоеточие (:), а затем — ссылку на правый нижний угол диапазона. В следующей таблице представлены варианты возможных ссылок.

Таблица 15

Чтобы сослаться на

следует ввести

ячейку столбца A и 10-й строки

A10

диапазон ячеек столбца A с 10-й строки по 20-ю

A10:A20

диапазон ячеек в 15-й строке со столбца B по столбец E

B15:E15

все ячейки в 5-й строке

5:5

все ячейки между 5-й и 10-й строками включительно

5:10

все ячейки в столбце H

H:H

все ячейки между столбцами H и J включительно

H:J


Существует и другой стиль ссылок, в котором и столбцы, и строки листа пронумерованы. Этот стиль, называемый ^ R1C1, наиболее полезен при вычислении позиции строки и столбца в макросах, а также при отображении относительных ссылок.

В стиле R1C1 указывается место размещения ячейки, где после буквы «R» ставится номер строки ячейки, а после буквы «С» — номер столбца. Например, абсолютная ссылка R1C1 эквивалентна абсолютной ссылке $A$1 для формата A1. Если ячейка A1 является текущей, то относительная ссылка R[1]C[1] указывает на ячейку, расположенную на одну строку ниже и на один столбец правее, то есть на ячейку B2.


В следующей таблице содержатся примеры ссылок R1C1.

Таблица 16

Ссылка

Значение

R[-2]C

относительная ссылка на ячейку, расположенную на две строки выше и в том же столбце

R[2]C[2]

относительная ссылка на ячейку, расположенную на две строки ниже и на два столбца правее

R2C2

абсолютная ссылка на ячейку, расположенную во второй строке и во втором столбце

R[-1]

относительная ссылка на строку, расположенную выше текущей ячейки

R

абсолютная ссылка на текущую строку


В зависимости от поставленной задачи можно использовать либо относительные ссылки, которые ссылаются на ячейки относительно позиции формулы, либо абсолютные ссылки, которые ссылаются всегда на одну и ту же ячейку.
^

Строковые ссылки в стиле А1 или имена диапазонов


Самый распространенный способ получить объект Range — сделать ссылку в стиле А1 или по имени диапазона, как показано в таблице:

Таблица 17

Чтобы:

Напишите:

изменить значение в ячейке А1 на листе Лист1

Worksheets("Лист1").Range("A1").Value = 3

установить формулу для ячейки В1 на активном листе


Range("B1").Formula = "=5-10*RAND()"

в ячейку А2 вставить формулу путем измене свойства Formula (формула)

Range ("А2").Formula = "=СУММ(А1:С1) "


присвоить значение всем ячейкам диапазона

Range("C1:E3").Value = 6

установить в ячейки диапазона “dip” значение 15

Range(“dip”).Value=15


очистить содержимое диапазона А1:ЕЗ на активном листе

Range ("A1", "E3").ClearContents

установить полужирное начертание шрифта для диапазона myRange (имя на уровне книги)

Range("myRange").Font.Bold = True


присвоить значение всем ячейкам диапазона yourRange (имя на уровне листа)

Range("Лист1!yourRange").Value = 3

присвоить объектной переменной ссылку на диапазон

Set objRange = Range("myRange")

очистить вторую строку рабочего листа ^ Май в рабочей книге Отчет

Application.Workbooks("Отчет").Worksheets _("Май").Rows(2).Delete


переменной процентная_ставка присвоить значение из ячейки А1 текущего рабочего листа

Процентная_ставка = Range("Al").Value

Процентная_ставка = Cells(1,1).Value


выбрать диапазон ячеек А10:В12.

Range("A10:B12").Select


для ячейки B2 задать числовой формат с двумя знаками после десятичной точки

Range("B2"). NumberFormat = "0.00"

Задать в ячейке В2 многострочный текст

Range("B2").Value = "Многострочный текст"

Range("B2").WrapText = True
^

Числовые индексы строк и колонок


Получить нужную ячейку можно и так: указать индексы строки и колонки, на пересечении которых она находится. Первым задается индекс строки, за ним следует индекс колонки.

Таблица 18

Чтобы:

Напишите:

изменить значение в ячейке А1 на листе Лист1

Worksheets("Лист1").Cells(1, 1).Value = 3

задать формулу для ячейки В 1 на активном листе

Cells(1, 2). Formula = "=5-10*RAND()"

установить объектную переменную

Set objRange = Worksheets("Лист1").Cells(1, 1)


Числовые индексы строк и колонок очень удобны при обращении к ячейке по значению счетчика цикла. Например, следующий код перебирает все ячейки диапазона A1:D10 на листе Лист1. Если какая-нибудь ячейка содержит значение 0.01, оно заменяется нулем


Sub RoundToZero()

For rwlndex = 1 to 10

For colIndex = 1 to 4

If Worksheets("Лист1").Cells(rwIndex, colIndex) < .01 Then

Worksheets("Лист1").Cells(rwlndex, collndex).Value = 0

End If

Next colIndex

Next rwIndex

End Sub


Следующий пример иллюстрирует простой и быстрый способ вывода на экран группы элементов в виде многоколоночного списка. Программа создает новый лист и присваивает ссылку на него объектной переменной newSheet. Затем создает список всех имен в активной книге и отображает связанные с ними формулы.


Sub ListNames()

Set nms = ActiveWorkbook.Names

Set wks = Worksheets(1)

For r = 1 To nms.Count

wks.Cells(r, 2).Value = nms(r).Name

wks.Cells(r, 3).Value = nms(r).RefersToRange.Address

Next

ActiveWorkbook.Names.Add Name:="myName", RefersToR1C1:= "=Лист1!R1C1"

Set newSheet = Worksheets.Add

i=1

For Each nm In ActiveWorkbook.Names

newSheet.Cells(i, 1).Value = nm.Name

newSheet.Cells(i, 2).Value = “ ‘ " & nm.RefersTo

i = i + 1

Next nm

newSheet.Columns("A:B").AutoFit

End Sub
^

Свойства и методы объекта Range

Свойства NumberFormat и WrapText


Свойство NumberFormat устанавливает числовой формат.


Например, если требуется установить числовые форматы для ячейки A17, первой строки, столбца C (соответственно) на листе Лист1, то можно использовать следующие инструкции:


Worksheets("Лист1").Range("A17").NumberFormat = "General"

Worksheets("Лист1").Rows(1).NumberFormat = "hh:mm:ss"

Worksheets("Лист1").Columns("C"). NumberFormat = "$#,##0.00); _ [Red]($#,##0.00)"


Свойство WrapText устанавливает многострочный текст.

Например, для того, чтобы форматировать ячейку B2 на листе Лист1 так, чтобы в ячейке текст переносился по словам, нужно значение свойства WrapText установить в True:


Worksheets("Лист1 ").Range("B2").Value ="This text should wrap in a cell."

Worksheets("Лист1 ").Range("B2").WrapText = True

^

Свойство Offset


Весьма часто возникает необходимость обратиться к диапазону ячеек, который отстоит от другого диапазона на определенное число строк и колонок. Свойство Offset объекта Range принимает аргументы RowOffset и Column-Offset и возвращает новый диапазон. В следующем примере программа определяет тип данных в каждой ячейке из диапазона А1:А10 и перечисляет эти типы в колонке, расположенной справа от исходных ячеек:

Sub ScanColumn()

For Each c In Worksheets("Лист1").Range("A1:A10").Cells

If Application.IsText(c.Value) Then

c.0ffset(0, 1).Formula = "Text"

Elself Application.IsNumber(c.Value) Then

c.0ffset(0, 1).Formula = "Number"

Elself Application.IsLogical(c.Value) Then

c.0ffset(0, 1).Formula = "Boolean"

Elself Application.IsError(c.Value) Then

c.0ffset(0, 1).Formula = "Error"

Elself c.Value = "" Then

c.0ffset(0, 1).Formula = "(blank cell)"

End If

Next c

End Sub
^

Свойства CurrentRegion и UsedRange


Эти два свойства очень полезны, когда программа работает с диапазонами, размерами которых вы не можете управлять. Текущий регион (current region) — это диапазон ячеек, ограниченный пустыми строками и колонками или сочетанием пустых строк, пустых колонок и границ рабочего листа.

CurrentRegion — свойство объекта Range. На листе может быть несколько текущих регионов — все зависит от того, к какому объекту Range нужно обратиться.

Допустим, лист Лист1 содержит список, для которого требуется установить формат чисел. Единственное, что известно об этом списке, — он начинается с ячейки А1; число же строк и колонок в нем заранее неопределено и в каждом конкретном выполении программы может быть разным. В следующем примере показано, как отформатировать такой список через свойство CurrentRegion:


Sub FormatRange()

Set myRange = Worksheets("Лист1").Range("A1").CurrentRegion

myRange.NumberFormat = "0.0"

End Sub


Использованный диапазон (used range) ограничен левой верхней и правой нижней заполненными ячейками, наиболее удаленными друг от друга. В этом диапазоне содержатся все заполненные ячейки листа, а также расположенные между ними пустые ячейки. На листе может быть только один такой диапазон, и UsedRange является свойством объекта Worksheet, а не Range.
^

Свойства Columns и Column


Column – возвращает номер первой колонки в указанном диапазоне, Columns – указывает на столбец в заданном диапазоне.


Например, чтобы установить жирный шрифт для данных в столбце А, можно записать инструкцию следующим образом:


Worksheets("Sheet1").Columns(1).Font.Bold = True


Инструкция, устанавливающая каждую ячейку в первом столбце диапазона "myRange" в 0 может выглядеть так:


Range("myRange").Columns(1).Value = 0
^

Свойства Row и Rows


Row – возвращает номер первой строки в указанном диапазоне, Rows – указывает на строку в заданном диапазоне

Следующая инструкция удаляет третью строку на листе Sheet1:


Worksheets("Sheet1").Rows(3).Delete
^

Свойство Address


В свойстве Address хранится расположение диапазона на рабочем листе. При указании данного свойства используются следующие параметры:


Range_object.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle  _ External, RelativeTo)


RowAbsolute - необязательный параметр. Если он имеет значение True, то возвращается абсолютный адрес строки диапазона. По умолчанию значение параметра – True;

ColumnAbsolute - необязательный параметр. Если значение параметра равно True, то возвращается абсолютный адрес столбца диапазона. По умолчанию значение параметра – True;

ReferenceStyle - необязательный параметр. Возможны два значения данного параметра: xlA1 or xlR1C1. xlA1 используют, чтобы получить ссылку типа A1, xlR1C1 используют для получения ссылки типа R1C1. По умолчанию значение параметра равно xlA1;

External - необязательный параметр. Необходимо присвоить параметру значение True, чтобы получить внешнюю ссылку. По умолчанию ссылки являются локальными;

RelativeTo - позволяет задать абсолютные координаты точки, относительно которой вычисляется положение заданного диапазона. Если параметры RowAbsolute и ColumnAbsolute имеют значение False, а аргумента ReferenceStyle - значение xlR1C1, то этот параметр указывать обязательно.


Следующие инструкции демонстрируют четыре различных способа получения адреса одной и той же ячейки А1 на листе Лист1.


Set mc = Worksheets("Лист1").Cells(1, 1)

MsgBox mc.Address() ' $A$1

MsgBox mc.Address(RowAbsolute:=False) ' $A1

MsgBox mc.Address(ReferenceStyle:=xlR1C1) ' R1C1

MsgBox mc.Address(ReferenceStyle:=xlR1C1, _

RowAbsolute:=False, _

ColumnAbsolute:=False, _

RelativeTo:=Worksheets(1).Cells(3, 3)) ' R[-2]C[-2]
^

Свойство Cells


Если требуется сослаться на ячейки, зная их положение относительно заданного диапазона, можно использовать свойство Cells. Его синтаксис выглядит следующим образом:

объект_диап.Cells(row, column) , где

аргументы row, column – относительные адреса строки и столбца.

Для того чтобы установить размер шрифта для ячейки C5 на листе Sheet1 14 пт, можно задать следующие инструкции:


Worksheets("Sheet1").Cells(5, 3).Font.Size = 14

Range("c5:c10").Cells(1, 1).Formula = "=rand()"
^

Свойство Count


Свойство Count возвращает количество элементов объекта.

При помощи следующих инструкций выделится диапазон ячеек, включающий активную ячейку, а затем в диалоговом окне будет выведено количество строк в выделенном диапазоне:


АctiveCell.CurrentRegion.Select

MsgBox Selection.Rows.Count
^

Свойство Name


Данное свойство возвращает или устанавливает имя объекта. Например, для задания диапазона Titles, можно указать следующую инструкцию:


Range(“A1:D1”).Name= “Titles”
^

Методы Copy, Cut, Paste


Указанные методы используются для копирования и перемещения диапазонов. Подробный синтаксис методов можно посмотреть в справочной системе VBA.

Копирование диапазона – это частая операция, выполняемая в макросах. Если активизировать средство записи макросов и скопировать диапазон A1:A5 в В1:В5, то в результате будет сгенерирован следующий текст макроса:


Sub CopyRange()

Range("A1:A5").Select

Selection.Copy

Range("B1").Select

ActiveSheet.Paste

Application.CutCopyMode = False

End Sub


Этот макрос работает нормально, но такой способ копирования диапазона не является самым эффективным. Такой же результат можно получить с помощью следующего макроса, в котором использован тот факт, что в методе Copy можно задать аргумент, указывающий куда копировать.


Sub CopyRange2()

Range("A1:A5").Copy (Range("B1"))

End Sub


Часто возникает необходимость скопировать диапазон, для которого не известно точно число строк и столбцов.


Sub CopyCurrentRegion()

Range("A1").CurrentRegion.Copy

Sheets("Sheet2").Select

Range("A1").Select

ActiveSheet.Paste

Sheets("Sheet1").Select

Application.CutCopyMode = False

End Sub


Операция перемещения диапазона распадается на два этапа: вырезание его в буфер обмена, а затем вставка в другую область. Если записать свои действия с помощью средства записи макросов, то в результате будет сгенерирован следующий текст макроса:


Sub MoveRange()

Range("A1:C6").Select

Selection.Cut

Range("A10").Select

ActiveSheet.Paste

End Sub


Однако проще это выполнить, используя всего лишь один оператор VBA. Здесь преимущество достигается за счет того, что в методе Cut предусмотрен аргумент, указывающий на диапазон, в который помещается вырезанная информация.


Sub MoveRange2()

Range("A1:C6").Cut (Range("A10"))

End Sub

^

Метод Select


Этот метод используется для того, чтобы выделить диапазон ячеек.

Например, выделить диапазон ячеек A1:B3 можно следующей инструкцией:


Range("A1:B3").Select


Для того чтобы выделить диапазон, который начинается с текущей ячейки и продолжается вниз до последней ячейки столбца, можно использовать следующий макрос:


Sub SelectDown()

Range(ActiveCell, ActiveCell.End(xlDown)).Select

End Sub


Макрос, выбирающий весь столбец, в котором находится активная ячейка, будет выглядеть несколько иначе:


Sub SelectColumn()

ActiveCell.EntireColumn.Select

End Sub


Здесь использовано свойство EntireColumn, которое возвращает ссылку на диапазон, состоящий из всего столбца. Существует также свойство EntireRow, возвращающее диапазон, состоящий из строки.


Другие свойства и методы объекта Range позволяют строить весьма сложные выражения, возвращающие поддиапазоны (subranges) или наддиапазоны (super-ranges) этого объекта. Среди свойств и методов, обычно применяемых с этой целью, можно отметить Areas, Cells, Columns, EntireColumn, EntireRow, Range и Rows.
^

Объект Font


Объект Font - шрифт диапазона ячеек. Некоторые свойства данного объекта приведены в таблице 19.

Таблица 19

Свойство

Назначение

Size

Размер шрифта, например:

Worksheets("Лист1").Range("В2").Font.Size = 12

Bold

Жирный шрифт

Italic

Курсивный шрифт

ColorIndex

Цвет символов. Следующий пример задает зеленый цвет

Worksheets("Лист!").Range("B2").Font.ColorIndex=4 Цвет в VBA задается целым числом от 1 до 56 В следующей таблице приведены некоторые из них

underline

Подчеркнутый шрифт Данное свойство может принимать одно из следующих значений

  • xlNone — отсутствие подчеркивания

  • xlSingle или xlSingleAccounting —одинарное подчеркивание

  • xlDouble или xlDoubleAccounting — двойное подчеркивание





Для задания значений свойству ColorIndex можно использовать значения из таблицы 20.

Таблица 20
^

Таблица кодов цвета





Число

Цвет

1

Черный

2

Белый

3

Красный

4

Зеленый

5

Синий

6

Желтый

7

Фиолетовый

8

Голубой



^

Объект Interior


Interior также является объектом, характеризующим фон указанного диапазона и имеющим следующее свойство ColorIndex - цвет.

Например, зеленый цвет можно задать ячейке B2 следующим образом


Range("B2").Interior.ColorIndex = 4
^

Инструкция With


В связи с рассмотрением объктов VBA следует разобрать еще одну полезную инструкцию, не являющуюся управляющей. Эта инструкция часто используется в циклах, облегчает процесс восприятия текста программы и ускоряет процесс разработки.

В VBA имя объекта отделяется от его методов и свойств с помощью точек. Это часто приводит к затрудненному восприятию текста программы, т.к. приходится многократно повторяться при указании свойств и методов одного и того же объекта. Инструкция With позволяет указывать объект или определяемый пользователем тип данных только один раз для последовательности инструкций. Инструкция With ускоряет выполнение процедур и помогает избежать повторного задания имени объекта.

В следующем примере диапазон ячеек заполняется числовым значением 30, затем устанавливается полужирный шрифт и для внутренней области ячеек задается желтый цвет.


Sub FormatRange()

With Worksheets("Sheet1").Range("A1:C10")

.Value = 30

.Font.Bold = True

.Interior.Color = RGB(255, 255, 0)

End With

End Sub


Для увеличения эффективности программы возможно создание вложенных инструкций With. В следующем примере в ячейку A1 вставляется формула, и затем форматируется шрифт.


Sub MyInput()

With Workbooks("Book1").Worksheets("Sheet1").Cells(1, 1)

.Formula = "=SQRT(50)"

With .Font

.Name = "Arial"

.Bold = True

.Size = 8

End With

End With

End Sub

Похожие:

Обзор моделей объектов Основные определения и понятия iconОбзор моделей объектов Основные определения и понятия
Это означает, что основными его элементами являются объекты. Объект представляет собой элемент приложения, как, например, лист, ячейка,...
Обзор моделей объектов Основные определения и понятия iconЛекция №1 Основные понятия курса «Физико-химия наноструктурированных материалов» основные понятия и определения (терминология курса)
Терминология по наноматериалам и нанотехнологиям в настоящее время только устанавливается. Существует несколько подходов к тому,...
Обзор моделей объектов Основные определения и понятия iconВопросы Инвестиционный риск. Основные понятия и определения. Основные виды инвестиционных рисков. Факторы риска применительно к инвестиционно-строительным проектам.
Методы управления инвестиционными рисками на основных фазах и этапах жизненного цикла инвестиционного проекта
Обзор моделей объектов Основные определения и понятия iconЭкзаменационные вопросы по деталям машин
Основные понятия и определения. Деталь, сборочная единица, узел, механизм, машина
Обзор моделей объектов Основные определения и понятия icon6 основы ликвидации последствий заражения 2 Общие понятия и определения
Обеззараживание — это уменьшение до предельно допустимых норм загрязнения объектов опасными веществами (РВ, охв, бс ) путем дегазации,...
Обзор моделей объектов Основные определения и понятия icon1. Опишите назначения и функции ос windows. К как категории относится эта программа
Как графическая ос. Основные приёмы работы с мышью. Понятия ярлыков пиктограммы объектов
Обзор моделей объектов Основные определения и понятия iconОсновные понятия и определения
Ос – организованный набор программ и данных, обеспечивающий управление всеми ресурсами вычислительной системы (ВС) и предоставляющий...
Обзор моделей объектов Основные определения и понятия iconОсновные понятия и определения
Данные- это информация, представленная в определённом виде, позволяющая автоматизировать её сбор, хранение и дальнейшую обработку...
Обзор моделей объектов Основные определения и понятия iconВопрос 1 Основные понятия рекламной деятельности
В соответствии с действующим Федеральным законом в рекламной деятельности используются следующие основные понятия
Обзор моделей объектов Основные определения и понятия iconПрограмма обучающих занятий и мастер-классов
Общий обзор строения и функционирования головного и спинного мозга. Основные понятия соматической и вегетативной нервных систем....
Обзор моделей объектов Основные определения и понятия iconТемы Основные понятия Определения понятий 2 предложения с информацией о понятиях I общество
Общество обособляется от природы в результате материальной и духовной деятельности человека, т к эта деятельность создает особый...
Вы можете разместить ссылку на наш сайт:
Документы


При копировании материала укажите ссылку ©ignorik.ru 2015

контакты
Документы