Самоучитель VBA

         

Методы, создающие объекты Shape



Рассмотрим методы, создающие новые элементы семейства shapes. Вручную объекты Shape создаются при помощи панели инструментов Рисование (Drawing).

AddShape Возвращает объект Shape.

Синтаксис:

AddShape (Type, Left, Top, Width, Height)

Аргументы:

Tуре — специфицирует тип объекта. Допустимо 139 значений. Приведем несколько из них:

msoShapeCube (куб), msoShapeRectangle (ПРЯМОУГОЛЬНИК), msoShapeOval (овал), msoShapeSmileyFace (улыбающееся лицо) ;

Left, Top — координаты левого верхнего угла объекта ;

Width, Height — ширина и высота объекта

Следующая последовательность инструкций создает три графических объекта: прямоугольник, овал и улыбающееся лицо (рис. 10.1). Вручную эти объекты можно было создать на рабочем листе, используя кнопки Прямоугольник (Rectangle) Овал (Oval) панели инструментов Рисование (Drawing) и кнопку Улыбающееся лицо (Smaley Face) из раскрывающегося списка Автофигуры (AutoShapes) панели инструментов Рисование (Drawing).

Самоучитель VBA

Рис. 10.1. Графические объекты: прямоугольник, овал и улыбающееся лицо

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 — ширина и высота объекта

<
Следующая последовательность инструкций создает три графических объекта: две линии, первая из которых со стрелкой, вторая без стрелки и текстовое поле (рис. 10.2). Вручную эти объекты можно было создать на рабочем листе, используя кнопки Стрелка (Arrow) Линия (Line) и Надпись (Text Box) панели инструментов Рисование (Drawing).

Самоучитель VBA


Рис. 10.2. Графические объекты: линии и текстовое поле

'

' Линия со стрелкой

'

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-объект (рис. 10.3) и скрывает от пользователя панель инструментов WordArt. Вручную этот объект можно было создать на рабочем листе, используя кнопку Добавить объект WordArt (Insert WordArt) панели инструментов Рисование (Drawing).

Самоучитель VBA


Рис. 10.3. WordArt-объект

ActiveSheet.Shapes.AddTextEffeet(msoTextEffect27,_

"VBA " & Chr(13) & "" & Chr(10) & "Лучшее решение",

"Impact", 36#, msoFalse, msoFalse, 87tt, 45#).Select

Application.CommandBars("WordArt").Visible = False


Семейства 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)