Vba excel shapes методы
На этом шаге мы рассмотрим назначение, основные свойства и методы этих семейств .
Объект Shape — это любой графический объект, размешенный на рабочем листе или диаграмме. Семейство Shapes представляет собой семейство всех графических объектов рабочего листа. Семейство ShapeRange содержится в семействе Shapes и является конкретным набором графических объектов рабочего листа. В крайних случаях семейство ShapeRange может состоять только из одного объекта или совпадать с семейством Shapes , которое его содержит.
Семейство Shapes обычно применяется для создания нового объекта Shape . Когда надо работать (т.е. задавать или изменять свойства) с отдельным элементом семейства Shapes обычно используют объект Shape , а когда следует оперировать с набором элементов этого семейства — семейство ShapeRange .
Большинство свойств объекта Shape или семейства ShapeRange определяются в два этапа. Сначала задается свойство, которое возвращает объект, содержащий устанавливаемые свойства, а уж потом для этого объекта определяется требуемое свойство. Например, если надо изменить тип линии, то у выбранного объекта семейства ShapeRange используется свойство Line , которое возвращает объект LineFormat , содержащий свойства для установки цвета, толщины и типа граничных линий объекта Shape . Получив таким образом объект LineFormat , при помощи его свойств устанавливается конкретный тип линии.
Перечислим основные свойства объекта Shape , возвращающие объект Shape конкретного типа.
Свойство | Назначение |
---|---|
Fill | Возвращает объект FillFormat , который содержит свойства для задания цвета, типа штриховки и текстуры объекта Shape |
Line | Возвращает объект LineFormat , содержащий свойства для установки цвета, толщины и типа граничных линий объекта Shape |
Shadow | Возвращает объект ShadowFormat , содержащий свойства для настройки тени объекта Shape |
TextFrame | Возвращает объект TextFrame — текстовое поле |
Приведем несколько наиболее часто употребляемых общих свойств объектов Shape .
Свойство | Назначение |
---|---|
Visible | Устанавливает видимость объекта |
Left, Top, Width, Height | Задают координаты левого верхнего угла объекта, его ширину и высоту |
OnAction | Устанавливает имя процедуры, которая будет запущена при выборе объекта |
Приведем несколько наиболее часто употребляемых общих методов объектов Shape .
Фигуры или объекты рисования представлены тремя различными объектами:
Объект | Описание |
---|---|
Коллекция форм | Используйте для создания фигур и итерации через все фигуры на заданной таблице. |
Коллекция ShapeRange | Используйте для изменения нескольких фигур так же, как вы работаете с несколькими фигурами в пользовательском интерфейсе. |
Объект Shape | Используйте для формата или изменения одной фигуры. |
Задание свойств для фигуры
Многие параметры форматирования фигур не устанавливаются с помощью свойств, применяемых непосредственно к объекту Shape или ShapeRange. Вместо этого связанные атрибуты фигур группируются во вспомогательных объектах, таких как объект FillFormat, который содержит все свойства, связанные с заливкой фигуры, или объект LinkFormat, который содержит все свойства, являющиеся уникальными для связанных объектов OLE.
Чтобы задать свойства для фигуры, необходимо сначала вернуть объект, представляющий набор соответствующих атрибутов фигуры, а затем задать свойства этого возвращенного объекта. Например, можно использовать свойство Fill, чтобы вернуть объект FillFormat, а затем задать свойство ForeColor объекта FillFormat, чтобы настроить цвет заливки переднего плана для указанной фигуры, как показано в следующем примере.
Применение свойства или метода к нескольким фигурам одновременно
В пользовательском интерфейсе можно выполнить некоторые операции с несколькими выбранными фигурами. например, можно выбрать несколько фигур и сразу установить все их отдельные заполнения. Вы можете выполнять другие операции, выбрав только одну фигуру; например, изменить текст в форме можно только в том случае, если выбрана одна фигура.
В Visual Basic есть два способа применения свойств и методов к наборам фигур. Эти два способа позволяют выполнять все операции, которые можно осуществить с отдельной фигурой, для диапазона фигур независимо от того, можно ли выполнять эту операцию в пользовательском интерфейсе.
Если операция применяется для нескольких выделенных фигур в пользовательском интерфейсе, вы можете выполнить аналогичную операцию в Visual Basic, создав коллекцию ShapeRange, содержащую нужные фигуры, и применив соответствующие свойства и методы непосредственно к коллекции ShapeRange.
Если операция не применяется для нескольких выделенных фигур в пользовательском интерфейсе, вы по-прежнему можете выполнить операцию в Visual Basic, осуществив циклический просмотр коллекции Shapes или коллекции ShapeRange, содержащей нужные фигуры, и применив соответствующие свойства и методы к отдельным объектам Shape в коллекции.
Многие свойства и методы, применяемые к объекту Shape и коллекции ShapeRange, завершаются ошибкой, если применяются к определенным типам фигур. Например, применение свойства TextFrame к фигуре, которая не может содержать текст, приводит к ошибке.
Если вы не уверены в том, что каждая из фигур в коллекции ShapeRange может иметь определенное свойство или метод, примененные к ней, не применять свойство или метод к коллекции ShapeRange. Если вы хотите применить одно из этих свойств или методов к коллекции фигур, нужно выполнить циклический просмотр коллекции и протестировать каждую отдельную фигуру, чтобы убедиться в соответствии ее типа перед применением к ней свойства или метода.
Создание коллекции ShapeRange, которая содержит все фигуры на листе
Вы можете создать объект ShapeRange, содержащий все объекты Shape на листе, выбрав фигуры, а затем используя свойство ShapeRange, чтобы вернуть объект ShapeRange, содержащий выбранные фигуры.
В Microsoft Excel аргумент Index **** не является необязательным для свойства Range коллекции Shapes, поэтому без аргумента нельзя использовать это свойство для создания объекта ShapeRange, содержащего все фигуры в коллекции Shapes.
Применение свойства или метода к коллекции ShapeRange
Если вы можете выполнить в пользовательском интерфейсе операцию для нескольких выделенных фигур одновременно, можно выполнить аналогичное программное действие, создав коллекцию ShapeRange и затем применив к ней соответствующие свойства или методы. В следующем примере строится диапазон фигур, содержащий фигуры с именами "Большая звезда" и "Маленькая звезда", и применяется к ним myDocument заполнение градиента.
Ниже приведены общие руководства по поведению свойств и методов при их применении к коллекции ShapeRange.
Применение метода к коллекции аналогично применению метода к каждому отдельному объекту Shape в этой коллекции.
Настройка значения свойства коллекции аналогична настройке значения свойства каждой отдельной фигуры в этом диапазоне.
Свойство коллекции, возвращающее константу, возвращает значение свойства для отдельной фигуры в коллекции, если все фигуры в коллекции имеют одинаковое значение для этого свойства. Если у фигур в коллекции разные значения свойства, возвращается "смешанная" константа.
Свойство коллекции, возвращающее простой тип данных (например, Long, Single или String), возвращает значение свойства для отдельной фигуры, если все фигуры в коллекции имеют одинаковое значение для этого свойства.
Значение некоторых свойств можно вернуть или установить только в том случае, если в коллекции содержится только одна фигура. Если коллекция содержит несколько фигур, возникает ошибка времени запуска. Обычно это происходит в случае возвращения или настройки свойств, если аналогичные действия в пользовательском интерфейсе возможны только для одной фигуры (такие действия, как изменение текста в фигуре или изменение точек полилинии).
Предшествующие руководства также применяются при настройке свойств фигур, сгруппированных во вспомогательных объектах коллекции ShapeRange, например в объекте FillFormat. Если вспомогательный объект представляет операции, которые можно выполнять над несколькими выделенными объектами в пользовательском интерфейсе, вы сможете вернуть объект из коллекции ShapeRange и настроить его свойства.
Например, вы можете использовать свойство Fill, чтобы вернуть объект FillFormat, представляющий заливки всех фигур в коллекции ShapeRange. Настройка свойств этого объекта FillFormat задает такие же свойства для всех отдельных фигур в коллекции ShapeRange.
Циклический просмотр коллекций Shapes или ShapeRange
Даже если вы не можете выполнить операцию по нескольким фигурам в пользовательском интерфейсе одновременно, выбрав их и затем используя команду, вы можете выполнить эквивалентное действие программным путем циклинга через коллекцию Shape или ShapeRange, которая содержит фигуры, с которых необходимо работать, применяя соответствующие свойства и методы к отдельным объектам Shape в коллекции.
В следующем примере окрашиваются все фигуры и изменяется цвет переднего плана myDocument для каждой фигуры AutoShape.
В следующем примере создается коллекция ShapeRange, которая содержит все выбранные в настоящее время фигуры в активном окне и задает цвет переднего плана для каждой выбранной формы.
Выравнивание, распространение и группировка фигур в ShapeRange
Используйте методы выравнивания и распределения, чтобы расположить набор фигур относительно друг друга или относительно документа, который их содержит.
Используйте метод Group или метод Regroup, чтобы сформировать единую групповую фигуру из набора фигур.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
A collection of all the Shape objects on the specified sheet.
Remarks
Each Shape object represents an object in the drawing layer, such as an AutoShape, freeform, OLE object, or picture.
If you want to work with a subset of the shapes on a document—for example, to do something to only the AutoShapes on the document or to only the selected shapes—you must construct a ShapeRange collection that contains the shapes that you want to work with.
Example
Use the Shapes property of the Worksheet object to return the Shapes collection. The following example selects all the shapes on myDocument.
If you want to do something (like delete or set a property) to all the shapes on a sheet at the same time, select all the shapes, and then use the ShapeRange property on the selection to create a ShapeRange object that contains all the shapes on the sheet, and then apply the appropriate property or method to the ShapeRange object.
Use Shapes (index), where index is the shape's name or index number, to return a single Shape object. The following example sets the fill to a preset shade for shape one on myDocument.
Use Range (index), where index is the shape's name or index number or an array of shape names or index numbers, to return a ShapeRange collection that represents a subset of the Shapes collection. The following example sets the fill pattern for shapes one and three on myDocument.
An ActiveX control on a sheet has two names: the name of the shape that contains the control, which you can see in the Name box when you view the sheet, and the code name for the control, which you can see in the cell to the right of (Name) in the Properties window. When you first add a control to a sheet, the shape name and code name match. However, if you change either the shape name or code name, the other isn't automatically changed to match.
You use the code name of a control in the names of its event procedures. However, when you return a control from the Shapes or OLEObjects collection for a sheet, you must use the shape name, not the code name, to refer to the control by name. For example, assume that you add a check box to a sheet and that both the default shape name and the default code name are CheckBox1. If you then change the control code name by typing chkFinished next to (Name) in the Properties window, you must use chkFinished in event procedures names, but you still have to use CheckBox1 to return the control from the Shapes or OLEObject collection, as shown in the following example.
Methods
Properties
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Коллекция всех объектов Shape на указанном листе.
Примечания
Каждый объект Shape представляет объект в слое рисования, например объект AutoShape, freeform, объект OLE или изображение.
Если вы хотите работать с подмножеством фигур на документе, например, чтобы сделать что-то только для autoShapes на документе или только для выбранных фигур, необходимо создать коллекцию ShapeRange, которая содержит фигуры, которые вы хотите работать.
Пример
Чтобы вернуть коллекцию Форм, используйте свойство Shapes объекта "Таблица". В следующем примере выбраны все фигуры в myDocument.
Если вы хотите сделать что-то (например, удалить или установить свойство) для всех фигур на листе одновременно, выберите все фигуры, а затем используйте свойство ShapeRange на выбор, чтобы создать объект ShapeRange, содержащий все фигуры на листе, а затем применить соответствующее свойство или метод к объекту ShapeRange.
Используйте Формы (индекс), где индекс — это имя фигуры или номер индекса, чтобы вернуть один объект Shape. В следующем примере заполняется заранее задатка для формы в myDocument.
Используйте диапазон (индекс), где индекс — это имя фигуры или номер индекса или массив имен фигур или номеров индексов, чтобы вернуть коллекцию ShapeRange, представляюную подмножество коллекции ShapeRange. В следующем примере задает шаблон заполнения фигур одного и трех в myDocument.
Элемент ActiveX на листе имеет два имени: имя фигуры, содержа которой содержится элемент управления, который можно увидеть в поле Имя при просмотре листа, и кодовое имя элемента управления, которое можно увидеть в ячейке справа от (Имя) в окне Свойства. При первом добавлении в лист управления совпадают имя фигуры и кодовое имя. Однако если вы измените имя фигуры или кодовое имя, другое не будет автоматически изменено на соответствие.
Кодовое имя управления используется в именах процедур событий. Однако при возвращении управления из коллекции Shapes или OLEObjects для листа необходимо использовать имя фигуры, а не кодовое имя, чтобы сослаться на управление по имени. Например, предположим, что к листу добавляется чековое окно, а имя фигуры по умолчанию и кодовое имя по умолчанию — CheckBox1. Если затем изменить имя кода управления, введя chkFinished рядом с (Name) в окне Свойства, необходимо использовать chkFinished в именах процедур событий, но для возврата управления из коллекции Shapes или OLEObject, как показано в следующем примере, необходимо использовать CheckBox1.
Методы
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Читайте также: