Рефераты. Организация документооборота с помощью "Visual Basic for Application"


Коллекция Comments

Коллекция — это группа одинаковых объектов. Каждый рабочий лист имеет коллекцию Comments, состоящую из всех объектов Comment рабочего листа. Если на рабочем листе отсутствуют примечания, эта коллекция пуста.

Например, приведенный далее код ссылается на первое примечание листа Лист1 активной рабочей книги

                    Worksheets("Лист1").Comments(1)

Следующий оператор отображает текст, который содержится в первом примечании листа Лисг1:

                    MsgBox Worksheets("Лист1").Comments(1).Text

В отличие or большинства объектов, объект Comment не имеет свойства Name. Следовательно, чтобы сослаться на конкретный комментарий, используйте номер, а для получения необходимого комментария обратитесь к свойству Comment объекта Range .

        Коллекция Comments — тоже объект, имеющий собственный набор свойств и методов.

Например, следующий пример определяет общее количество комментариев:

                    MsgBox ActiveSheet.Comments.Count

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

        MsgBox ActiveSheet.Comments(1).Parent.Address

В этом примере Comments (1) возвращает первый объект Comment коллекции Comments.         Свойство P a r e n t объекта Comment возвращает его контейнер, представленный объектом Range. В окне сообщений отображается свойство A d d r e s s объекта Range. В итоге оператор показывает адрес ячейки, содержащей первое примечание.

Кроме того, вы можете циклически просмотреть все примечания на листе, используя конструкцию For Each-Next . Ниже приведен пример использования отдельных окон для раздельного отображения каждого примечания активного рабочего листа:

            For Each cmt in ActiveSheet.Comments

                MsgBox cmt.Text

            Next cmt

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

            For Each cmt in ActiveSheet.Comments

                Debug.Print cmt.Text

            Next cmt


О свойстве Comment

В этом разделе речь идет об объекте Comment. В справочной системе указано, что объект Range обладает свойством Comment. Если ячейка содержит примечание, свойство Comment возвращает объект— объект Comment. Например, следующий оператор ссылается на объект

Comment ячейки Al:

                    Range("Al").Comment

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

                    Comments(1)

Чтобы отобразить примечание ячейки Al в окне сообщения, используйте оператор                     MsgBox Range("Al").Comment.Text

Если в ячейке Al нет примечания, то оператор выдаст ошибку.

        Тот факт, что свойство может возвращать объект, довольно важен (возможно, это сложно понять, но данная концепция имеет решающее значение в программировании на VBA).


Объекты, вложенные в Comment

Управление свойствами сначала кажется сложной задачей, потому что некоторые свойства возвращают объекты. Предположим, необходимо определить цвет фона конкретного примечания на листе Лист1. Просмотрев список свойств объекта Comment, вы не найдете ничего, что относится к определению цвета. Вместо этого выполните следующие действия.

1. Используйте свойство Shape объекта Comment, возвращающее объект Shape, который содержится в примечании.

2. Используйте свойство F i l l объекта Shape, возвращающее объект FillFormat

3. Используйте свойство ForeColor объекта FillFormat, возвращающее объект ColorFormat,

4. Используйте свойство RGB (или свойство SchemeColor) объекта ColorFormat, чтобы задать цвет.

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

            Application (Excel)

                Workbook

                    Worksheet

                        Comment

                            Shape

                                FillFormat

                                    ColorFormat

    Следует предупредить, что в этом можно легко запутаться! Но в качестве примера "эле-

гантности" VBA посмотрите, как код для изменения цвета примечания можно записать с помощью одного оператора:

        Worksheets("Лист1").Comments(1).Shape.Fill.ForeColor _

            .RGB = RGB(0, 255, 0)

Вы вправе использовать также свойство SchemeColor (задаваемое в диапазоне от 0 до 80):

            W o r k s h e e t s ( " Л и с т 1 " ) . C o m m e n t s ( 1 ) . S h a p e . F i l l _ . F o r e C o l o r.SchemeColor = 12

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


Смущают цвета?

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

Цвет объекта Shape можно задать с помощью свойства RGB или свойства SchemeColor.

Свойство RGB позволяет определить цвет в виде значений красного, зеленого и синего компонентов. Это свойство аналогично функции RGB, имеющей три аргумента, каждый из которых задается в диапазоне от 0 до 255. Функция RGB возвращает значение в диапазоне от 0 до 16777215. Но Excel может обрабатывать только 56 цветов. Поэтому фактический цвет, полученный при использовании функции RGB, будет самым точным соответствием заданному цвету из 56-цветовой палитры рабочей книги.

Свойство SchemeColor принимает значения от о до 80. В справочной системе вы не найдете ничего о том, что в действительности представляют собой эти цвета. Однако они ограничены образцами цветов на палитре рабочей книги.

При работе с цветами в объекте Range вам придется обратиться к его вложенному объекту  I n t e r i o r . Вы можете задать цвет с помощью одного из свойств последнего: Color или Color Index. Корректные значения свойства Colorindex находятся в диапазоне от 0 до 56(0 означает отсутствие заливки). Эти значения соответствуют палитре цветов рабочей книги.                                         К сожалению, порядок, в котором отображаются цвета, совершенно не связан с системой нумерации значений свойства Colorindex, поэтому для определения с помощью ColorIndex конкретного цвета лучше записать макрос, Однако даже в этом случае не будет гарантии, что пользователь не изменил цветовую палитру рабочей книги. В последнем случае свойство Colorindex выдаст далеко не тот результат, который вы ожидали.

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

Кстати, чтобы изменить цвет текста в примечании, обратитесь к объекту TextFrame

объекта Comment, который содержит объект Characters, включающий, в свою очередь, объект Font. Далее обратитесь к свойствам Color или Colorindex объекта Font. Ниже приведен пример, устанавливающий свойство Colorindex в значение 5:

                    Worksheets ("Лист1") . Comments (1). _

                            Shape.TextFrame.Characters.Font.Colorindex = 5


Содержит ли ячейка примечание

Следующий оператор отображает примечание ячейки А1 активного листа:

                MsgBox Range("Al").Comment.Text

Если в ячейке А1 примечание отсутствует, при выполнении этого оператора возникнет не- понятное сообщение об ошибке:

                   Object v a r i a b l e or With block v a r i a b l e not set.

Чтобы определить, содержит ли конкретная ячейка примечание, напишите код, проверяющий, не пустой ли объект Comment,— т.е. равен ли он N o t h i n g (это корректное ключевое слово VBA). Следующий оператор отображает True, если в ячейке А1 примечание отсутствует:

                    MsgBox Range("Al").Comment Is Nothing

Обратите внимание, что в этом примере используется ключевое слово I s , а не знак равенства.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.