Семейство всех графических объектов активного листа представляет Shapes. Это семейство используется обычно для создания нового объекта с помощью метода AddShape. Тип конкретной фигуры (овал, прямоугольник, линия и т.п.) указывается в качестве параметра этого метода. Другие параметры метода задают размер и местоположение (координаты) фигуры на листе. Эти параметры рассчитываются так: предполагается, что фигура вписана в (невидимый) прямоугольник. Для его однозначного определения достаточно указать координаты его левого верхнего угла, ширину и высоту. Координаты задают горизонтальный отступ (x-координата) и вертикальный отступ (y-координата) от верхнего левого угла листа, выраженные в точках. В дальнейшем будем называть эти координаты координатами начала фигуры.
Синтаксис обращения:
ActiveSheet.Shapes.AddShape(тип, x-координата, y-координата, ширина, высота)
Аргумент тип – константа VBA, обозначающая тип графического объекта, например, msoShapeOval – овал, msoShapeRectangle – прямоугольник. Допустимо 139 констант, некоторые приведены в табл.1.
Таблица 1
Константы типов некоторых автофигур
Константа |
Изображаемая автофигура |
msoShapeRectangle |
|
msoShapeOval |
|
msoShapeIsoscelesTriangle |
|
msoShapeRightTriangle |
|
msoShapeSun |
|
msoShapeTrapezoid |
|
msoShapeWave |
|
msoShapeDiamond |
|
msoShapeHexagon |
|
msoShapeCube |
|
msoShapeParallelogram |
|
msoShapeRightArrow |
Продолжение таблицы1 |
|
Константа |
Изображаемая автофигура |
msoShapeLeftRightArrow |
|
msoShapeRoundedRectangle |
|
msoShapeCan |
|
msoShape5pointStar |
Например, овал с диаметрами 20 точек по вертикали и 40 по горизонтали, расположенный в левом верхнем углу листа, можно начертить такой командой:
ActiveSheet.Shapes.AddShape(msoShapeOval,0,0,40,20).Select
Здесь аргументы 0, 0 задают координаты начала фигуры (они в данном случае совпадают с началом листа – его верхним левым углом), число 40 – ширина описывающего прямоугольника (равна большей диагонали нашего овала), число 20 – высота прямоугольника (равна меньшей диагонали овала). Метод Select необходим, чтобы фигура проявилась на листе.
Чтобы начертить окружность, достаточно задать в качестве ширины и высоты диаметр окружности. Например, окружность диаметром 60 точек, расположенную в начале листа, можно задать такой программой:
ActiveSheet.Shapes.AddShape(msoShapeOval,0, 0, 60, 60).Select
Эта же окружность, смещенная на 30 точек относительно начала листа:
ActiveSheet.Shapes.AddShape(msoShapeOval,30,30,60,60).Select
Полный список констант можно найти в справочникеVBA: нажать кнопку вызова справки в окне редактора Visual Basic и ввести в поле вопроса имя раздела: AddShape Method. Проверять типы фигур можно с помощью одной и той же программы создания объекта, заменяя только константу в методе AddShape.