|
Работа с графическими объектами
Семейства Shapes и ShapeRange
Объект shape — это любой графический объект, размешенный на рабочем листе или диаграмме. Семейство shapes представляет собой семейство всех графических объектов рабочего листа. Семейство ShapeRange содержится в семействе shapes и является конкретным набором графических объектов рабочего листа. В крайних случаях семейство ShapeRange может состоять только из одного объекта или совпадать с семейством shapes, которое его содержит.
Семейство shapes обычно применяется для создания нового объекта shape. Когда надо работать (т. е. задавать или изменять свойства) с отдельным элементом семейства shapes обычно используют объект shape, а когда следует оперировать с набором элементов этого семейства — семейство ShapeRange.
Большинство свойств объекта shape или семейства ShapeRange определяются в два этапа. Сначала задается свойство, которое возвращает объект, содержащий устанавливаемые свойства, а уж потом для этого объекта определяется требуемое свойство. Например, если надо изменить тип линии, то у выбранного объекта семейства ShapeRange используется свойство Line, которое возвращает объект LineFormat, содержащий свойства для установки цвета, толщины и типа граничных линий объекта shape. Получив таким образом объект LineFormat, при помощи его свойств устанавливается конкретный тип линии.
ActiveSheet.Shapes.AddLine(104.25, 135.75, 230.25, 146.25).Select
Selection.ShapeRange.Line.Weight = 3#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.Style = msoLineSingle
Перечислим основные свойства объекта shape, возвращающие объект shape конкретного типа.
|
|
|
|
|
Fill |
Возвращает объект FillFormat, который содержит
свойства для задания цвета, типа штриховки и текстуры объекта Shape |
|
|
Line |
Возвращает объект LineFormat, содержащий свойства для установки цвета, толщины и типа граничных линий Объекта Shape |
|
|
Shadow |
Возвращает объект shadowFormat, содержащий свойства для настройки тени объекта shape |
|
|
TextFrame |
Возвращает объект TextFrame — текстовое поле |
|
|
|
|
|
Приведем несколько наиболее часто употребляемых общих свойств объектов Shape.
|
|
|
|
|
Visible |
Устанавливает видимость объекта |
|
|
Left, Top, Width, Height |
Задают координаты левого верхнего угла объекта, его ширину и высоту |
|
|
OnAction |
Устанавливает имя процедуры, которая будет запущена при выборе объекта |
|
|
|
|
|
Приведем несколько наиболее часто употребляемых общих методов объектов
Shape.
|
|
|
|
|
Сору |
Копирует объект Shape в буфер обмена |
|
|
Cut |
Копирует объект shape в буфер обмена с удалением |
|
|
Delete |
Удаляет объект shape |
|
|
Paste |
Вставляет объект shape из буфера ббмена |
|
|
IncrementLeft, IncrementTop |
Сдвигает объект shape по горизонтали и вертикали соответственно на заданное в аргументе количество пунктов.
Синтаксис:
IncrementLeft (Increment)
IncrementTop (Increment ) |
|
|
IncrementRotation |
Поворачивает объект shape на заданный в аргументе угол.
Синтаксис:
IncrementRotation (Increment) |
|
|
|
|
|
Методы, создающие объекты Shape
Рассмотрим методы, создающие новые элементы семейства shapes. Вручную объекты Shape создаются при помощи панели инструментов Рисование (Drawing).
AddShape |
Возвращает объект Shape.
Синтаксис:
AddShape (Type, Left, Top, Width, Height)
Аргументы:
- Tуре — специфицирует тип объекта. Допустимо 139 значений. Приведем несколько из них:
msoShapeCube (куб), msoShapeRectangle (ПРЯМОУГОЛЬНИК), msoShapeOval (овал), msoShapeSmileyFace (улыбающееся лицо) ;
- Left, Top — координаты левого верхнего угла объекта ;
- Width, Height — ширина и высота объекта
|
Следующая последовательность инструкций создает три графических объекта: прямоугольник, овал и улыбающееся лицо ( 1). Вручную эти объекты можно было создать на рабочем листе, используя кнопки Прямоугольник (Rectangle) Овал (Oval) панели инструментов Рисование (Drawing) и кнопку Улыбающееся лицо (Smaley Face) из раскрывающегося списка Автофигуры (AutoShapes) панели инструментов Рисование (Drawing).
ActiveSheet.Shapes.
AddShape(msoShapeRectangle, 117#, 27.75, 76.5, 40.5).Select
With Selection.ShapeRange
.Line.Weight = 3#
.Line.Visible = msoTrue
.Line.Style = msoLineDash
.Fill.ForeColor.SchemeColor = 13
.Fill.Visible = msoTrue
.Fill.Solid End With ActiveSheet.Shapes.
AddShape(msoShapeOval, 114.75, 109.5, 91.5, 49.5).Select
With Selection.ShapeRange
.Fill.ForeColor.SchemeColor = 45
.Fill.Visible = msoTrue
.Fill.Solid
.Line.Weight =2.25
.Line.Visible = msoTrue
.Line.Style = msoLineSingle
.Line.ForeColor.SchemeColor = 12
.Line.Visible = msoTrue End With ActiveSheet.Shapes. _
AddShape(msoShapeSmileyFace, 254.25, 99#, 70?5, 66#).Select
With Selection.ShapeRange
.Line.ForeColor.SchemeColor = 0
.Line.Visible = msoTrue
.Fill.Solid End With
|
|
|
|
|
AddLine |
Возвращает объект shape, являющийся линией (отрезком).
Синтаксис:
AddLine (BeginX, BeginY, EndX, EndY)
Аргументы:
- BeginX, BeginY, EndX, EndY — координаты концов отрезка
|
|
|
AddTextbox |
Возвращает объект shape, являющийся надписью.
Синтаксис:
AddTextbox (Orientation, Left, Top, Width, Height)
Аргументы:
- Orientation — устанавливает ориентацию текста в надписи. Допустимые значения:
- msoTextOrientationDownward
- msoTextOrientationHorizontal
- msoTextOrientationMixed
- msoTextOrientationUpward
- msoTextOrientationVertical
- Left, т.ор — координаты левого верхнего угла объекта
- width, Height — ширина и высота объекта
|
|
|
|
|
|
Следующая последовательность инструкций создает три графических объекта: две линии, первая из которых со стрелкой, вторая без стрелки и текстовое поле ( 2). Вручную эти объекты можно было создать на рабочем листе, используя кнопки Стрелка (Arrow) Линия (Line) и Надпись (Text Box) панели инструментов Рисование (Drawing).
'
' Линия со стрелкой
'
ActiveSheet.Shapes.AddLine(571, 30#, 174#, 59.25).Select
With Selection.ShapeRange.Line
.Weight = 6#
.Visible = msoTrue
.Style = msoLineSingle
.BeginArrowheadStyle = msoArrowheadNone
.EndArrowheadStyle = msoArrowheadTriangle
.EndArrowheadWidth = msoArrowheadWidthMedium
.EndArrowheadLength = msoArrowheadLengthMedium
.Visible = msoTrue End With
'
' Простая линия
'
ActiveSheet.Shapes.AddLine(219.75, 23.25, 334.5, 67.5).Select
With Selection.ShapeRange.Line
.Visible = msoTrue
.Style = msoLineThinThick
.Weight =4.5
End With
'
' Текстовое поле
'
ActiveSheet.Shapes.
AddTextbox(msoTextOrientationHorizontal,
69.75, 87.75, 116.25, 76.5).Select
Selection.Characters.Text = "Пример двух линий"
With Selection.Characters(Start:=1, Length:=17).Font
.Name = "Arial Cyr"
.FontStyle = "полужирный"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
. Colorlndex = 5
End With
With Selection.ShapeRange.Fill
.ForeColor.SchemeColor = 42
.Visible = msoTrue
.Solid End With
|
|
|
|
|
AddTextEffect |
Возвращает. объект shape, являющийся WordArt-объектом.
Синтаксис:
AddTextEffect (PresetTextEffeet, Text, FontName, FontSize, FontBold, Fontltalic, Left, Top)
Аргументы:
- PresetTextEf feet — устанавливает текстовой эффект. Допустимые значения от msoTextEffect1 до msoTextEf fect30
- Text — текст, отображаемый в объекте WordArt
- FontName — название шрифта
- Fontsize — размер шрифта
- FontBold — допустимые значения: True (полужирный шрифт), False (в противном случае)
- Fontltalic — допустимые значения: True (курсивный шрифт), False (в противном случае)
- Left, тор — координаты левого верхнего угла объекта
|
|
|
AddPicture |
- Возвращает объект shape, являющийся рисунком, созданным на основе существующего файла. Синтаксис:
- AddPicture (FileName, LinkToFile, SaveWithDocument , Left, Top, Width, Height)
- FileName — строка, задающая имя файла, на основе которого создается рисунок
- LinkToFile — допустимые значения: True
(рисунок связан с файлом, на основе которого создан) и False (в противном случае)
- SaveWithDocument — допустимые значения: True(сохраняется рисунок с рабочей книгой) и False (в рабочей книге сохраняется связь с рисунком, а не сам рисунок)
- Left, тор — координаты левого верхнего угла объекта
- Width, Height — ширина и высота объекта
|
|
|
|
|
|
Следующая последовательность инструкций создает WordArt-объект ( 3) и скрывает от пользователя панель инструментов WordArt. Вручную этот объект можно было создать на рабочем листе, используя кнопку Добавить объект WordArt (Insert WordArt) панели инструментов Рисование (Drawing).
ActiveSheet.Shapes.AddTextEffeet(msoTextEffect27,_
"VBA " & Chr(13) & "" & Chr(10) & "Лучшее решение",
"Impact", 36#, msoFalse, msoFalse, 87tt, 45#).Select
Application.CommandBars("WordArt").Visible = False
|
|