Как рисовать в vba excel
Фигуры в VBA Excel создаются методом Shapes.AddShape.
Синтаксис метода AddShape
Shapes — выражение, возвращающее коллекцию фигур на рабочем листе, например: ActiveSheet.Shapes.
Параметры метода AddShape
Параметр | Описание |
---|---|
Type | Константа из коллекции MsoAutoShapeType, определяющая тип создаваемой фигуры. |
Left | Расстояние от левой границы фигуры до левой границы табличной части рабочего листа в пунктах.. Тип данных — Single. |
Top | Расстояние от верхней границы фигуры до верхней границы табличной части рабочего листа в пунктах.. Тип данных — Single. |
Width | Ширина фигуры по внешним границам в пунктах. |
Height | Высота фигуры по внешним границам в пунктах. |
Все параметры метода Shapes.AddShape являются обязательными.
Константы MsoAutoShapeType
Константы коллекции MsoAutoShapeType, определяющие основные типы создаваемых фигур:
Константа | Значение | Тип фигуры |
---|---|---|
msoShapeRectangle | 1 | Прямоугольник |
msoShapeParallelogram | 2 | Параллелограмм |
msoShapeTrapezoid | 3 | Трапеция |
msoShapeDiamond | 4 | Ромб |
msoShapeRoundedRectangle | 5 | Прямоугольник: скругленные углы |
msoShapeOctagon | 6 | Восьмиугольник (октаэдр) |
msoShapeIsoscelesTriangle | 7 | Равнобедренный треугольник |
msoShapeRightTriangle | 8 | Прямоугольный треугольник |
msoShapeOval | 9 | Овал |
msoShapeHexagon | 10 | Шестиугольник (гексаэдр) |
msoShapeCross | 11 | Крест |
msoShapeRegularPentagon | 12 | Пятиугольник (пентаэдр) |
msoShapeCan | 13 | Цилиндр |
msoShapeCube | 14 | Куб |
msoShapeDonut | 18 | Круг: прозрачная заливка (кольцо) |
msoShapeLightningBolt | 22 | Молния |
msoShapeSun | 23 | Солнце |
msoShapeMoon | 24 | Месяц (луна) |
msoShape5pointStar | 92 | Звезда: 5 точек (пятиконечная) |
msoShapeCloud | 179 | Облако |
Все доступные константы из коллекции MsoAutoShapeType смотрите на сайте разработчиков.
Фигуры или объекты рисования представлены тремя различными объектами:
Объект | Описание |
---|---|
Коллекция форм | Используйте для создания фигур и итерации через все фигуры на заданной таблице. |
Коллекция 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 и обратная связь.
Представляет объект в слое рисования, например autoShape, freeform, объект OLE или изображение.
Примечания
Объект Shape входит в коллекцию Shapes . Коллекция Shapes содержит все фигуры в книге.
Существуют три объекта, которые представляют фигуры: коллекция Shapes , которая представляет все фигуры в книге; коллекция ShapeRange , которая представляет заданный подмножество фигур в книге (например, объект ShapeRange может представлять фигуры одного и четырех в книге, или он может представлять все выбранные фигуры в книге); и объект Shape , который представляет одну фигуру на таблице. Если вы хотите работать с несколькими фигурами одновременно или с фигурами в рамках выбора, используйте коллекцию ShapeRange .
Чтобы вернуться. | Использование. |
---|---|
Объект Shape , который представляет одну из фигур, присоединенных соединитетелем | Свойство BeginConnectedShape или EndConnectedShape объекта ConnectorFormat . |
Вновь созданная бесплатнаяформа | Методы BuildFreeform и AddNodes для определения геометрии новой свободной формы и использования метода ConvertToShape для создания свободной формы и возврата объекта Shape , который ее представляет. |
Объект Shape , представляю который представляет одну фигуру в сгруппивной форме | GroupItems (index), где индекс — это имя фигуры или номер индекса в группе. |
Недавно сформированная группа фигур | Метод Группы или перегруппировки объекта ShapeRange сгруппировать диапазон фигур и вернуть один объект Shape , который представляет только что сформированную группу. После того как группа сформирована, вы можете работать с группой так же, как и с любой другой фигурой. |
Объект Shape , представляю который представляет существующую форму | Формы (индекс), где индекс — это имя фигуры или номер индекса. |
Объект Shape , представляю который представляет фигуру в выборе | Выбор. ShapeRange (index), где индекс — это имя фигуры или номер индекса. |
Пример
В следующем примере горизонтально переворачивается фигура одна и фигура с именем Rectangle 1 на myDocument.
Каждой фигуре назначено имя по умолчанию при добавлении его в коллекцию Shapes . Чтобы дать фигуре более значимое имя, используйте свойство Name . В следующем примере в myDocument добавляется прямоугольник, ему дают имя Красная площадь, а затем задает его цвет переднего плана и стиль строки.
В следующем примере задается заполняемая для первой фигуры в выборе в активном окне, при условии, что в выборе имеется по крайней мере одна фигура.
Методы
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Добавление узора в ячейку (диапазон ячеек) с цветом по умолчанию:
ConstantXlPattern – константа из коллекции XlPattern, задающая шаблон узора (штрихового рисунка).
Свойство Interior объекта Range возвращает объект Interior (внутренняя область диапазона), а свойство Pattern объекта Interior задает шаблон узора ячейки (диапазона) или возвращает его числовое значение.
Константы XlPattern
Шаблоны узоров (штриховых рисунков) с цветом по умолчанию:
Таблица констант из коллекции XlPattern:
Константа | Значение | Описание |
---|---|---|
xlPatternNone | -4142 | Нет узора |
xlPatternGray75 | -4126 | 75% серый |
xlPatternGray50 | -4125 | 50% серый |
xlPatternGray25 | -4124 | 25% серый |
xlPatternHorizontal | -4128 | Темные горизонтальные линии |
xlPatternVertical | -4166 | Темные вертикальные полосы |
xlPatternDown | -4121 | Темные диагональные линии слева вниз |
xlPatternUp | -4162 | Темные диагональные линии слева вверх |
xlPatternSolid | 1 | Сплошной цвет |
xlPatternChecker | 9 | Шахматная доска |
xlPatternSemiGray75 | 10 | 75% темно-серый |
xlPatternLightHorizontal | 11 | Светлые горизонтальные линии |
xlPatternLightVertical | 12 | Светлые вертикальные полосы |
xlPatternLightDown | 13 | Светлые диагональные линии слева вниз |
xlPatternLightUp | 14 | Светлые диагональные линии слева вверх |
xlPatternGrid | 15 | Сетка |
xlPatternCrissCross | 16 | Перекрестные линии |
xlPatternGray16 | 17 | 16% серый |
xlPatternGray8 | 18 | 8% серый |
xlPatternAutomatic | -4105 | Шаблоном узора управляет Excel |
Присвоение узору цвета
Присвоение одного из стандартных цветов узору в ячейке (диапазоне ячеек):
VB обладает большим набором инструментов для отображения графических объектов. С помощью графики в программах на vb можно визуализировать решения математических задач или создавать анимацию. В этом уроке мы научимся рисовать в VB прямоугольник, эллипс, линию, точку .
Чтобы рисовать различные объекты в VB, используется элемент PictureBox, который задает на форме графическую область для рисования.
Добавим в форму элементы Кнопка и PictureBox, в котором мы и будем рисовать.
В свойствах PictureBox во вкладке Layout в свойстве Size (размер) можно указать размеры графической области. Мы указали размер графической области 400x400 пикселей.
Получается данная форма
Для того чтобы начать рисовать в элементе PictureBox , необходимо привязать графический объект к данному элементу.
Dim Название объекта As Graphics = PictureBoxНомер.CreateGraphics()
Пример:
Dim Graphics As Graphics = PictureBox1.CreateGraphics()
Создается графический объект с именем Graphics, он привязывается к элементу PictureBox1 . В дальнейшем для отображения графических фигур будем работать уже с объектом Graphics.
Для отображения объектов нужно создать объект Перо с помощью команды.
Dim название пера = New Pen(Drawing.Color.(цвет), толщина линии)
В скобках задаётся цвет и толщина линии объекта Перо, которым мы будем рисовать
Пример:
Dim red = New Pen(Drawing.Color.Red, 5)
Cоздаётся красное перо с именем red с толщиной 5 пикселей.
Рисование линии в Vb.
Чтобы нарисовать линию в графической области PictureBox, нужно использовать метод DrawLine для привязанного к этой области графического объекта.
Объект.DrawLine(название пера, координата x первого конца, координата y первого конца, координата x второго конца, координата y второго конца)
Пример:
Graphics.DrawLine(red, 5, 5, 50, 50)
Рисует красную линию в графической области PictureBox1 с координатами начала x = 5, y = 5 и координатами конца x = 50, y = 50
Рисование прямоугольника в Vb
Чтобы нарисовать прямоугольник в графической области PictureBox, нужно использовать метод DrawRectangle для привязанного к этой области графического объекта.
Объект.DrawRectangle(название пера, координата x левого верхнего угла, координата y левого верхнего угла, ширина, высота)
Пример:
Graphics.DrawRectangle(green, 50, 50, 100, 100)
Рисует зеленый прямоугольник в графической области PictureBox1 с координатами верхнего левого угла x = 50,y = 50 шириной 100 и высотой 100
Рисование окружности и эллипса в Vb
Для рисования эллипса или окружности в Vb нужно сначала создать объект Прямоугольник, в который будет вписан эллипс.Объект Прямоугольник создаётся с помощью набора команд
Dim название прямугольника As New Rectangle
название прямоугольника.X = координата x левого верхнего угла
название прямоугольника.Y = координата y левого верхнего угла
название прямоугольника.Width = ширина прямоугольника
название прямоугольника.Height = высота прямоугольника
Пример:
Dim rectangle As New Rectangle
rectangle.X = 100
rectangle.Y = 100
rectangle.Width = 100
rectangle.Height = 50
Затем, с помощью созданного прямоугольника, рисуем вписанный в него эллипс, используя метод DrawEllipse для графического объекта, привязанного к графической области
Объект. DrawEllipse(перо, прямоугольник)
Например:
Graphics.DrawEllipse(blue, rectangle)
Рисует синий эллипс вписанный в прямоугольник rectangle
Для того, чтобы нарисовать окружность в Vb, нужно, чтобы ширина и высота прямоугольника совпадали по величине. Радиус окружности равен половине высоты.
Координата x центра окружности будет равна координате x левого верхнего угла прямоугольника + радиус окружности. Координата y центра окружности будет равна координате y левого верхнего угла прямоугольника + радиус окружности.
Пример рисования окружности в vb с координатами центра (200, 300) радиусом 50:
Dim rct As New Rectangle
rct.X = 150
rct.Y = 250
rct.Width = 100
rct.Height = 100
Graphics.DrawEllipse(blue, rct)
Рисование закрашенного прямоугольника в Vb
Чтобы рисовать закрашенные объекты в vb, необходимо сначала создать объект Кисть SolidBrush , в котором определяется цвет заливки. Объект Кисть в Vb задается следующим образом
Dim название кисти As New SolidBrush(Drawing.Color.цвет)
Для рисования закрашенного прямоугольника используется метод FillRectangle для графического объекта, привязанного к графической области.
Graphics.FillRectangle (название кисти, координата x левого верхнего угла, координата y левого верхнего угла, ширина, высота)
Пример рисования закрашенного прямоугольника в vb
Dim Brush As New SolidBrush(Drawing.Color.Red)
Graphics.FillRectangle(Brush, 50, 50, 100, 80)
Рисует закрашенный красным цветом прямоугольник с координатами углов 50, 50 и шириной 100 и высотой 80
Полный текст программы VB для рисования всех фигур
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Graphics As Graphics = PictureBox1.CreateGraphics()
' создание ручек для отрисовки
Dim red = New Pen(Drawing.Color.Red, 5) ' создаётся красное перо с толщиной 5 пикселей
Dim green = New Pen(Drawing.Color.Green, 5)
Dim blue = New Pen(Drawing.Color.Blue, 5)
Dim Brush As New SolidBrush(Drawing.Color.Red)
' отрисовываем линию
Graphics.DrawLine(red, 5, 5, 50, 50) ' отрисовываем красную линию
' отрисовываем прямоугольник
Graphics.DrawRectangle(green, 50, 50, 100, 100) ' рисуем зелёный прямоугольник
' создаём прямоугольник, с помощью которого будет отрисовываться эллипс
Dim rectangle As New Rectangle
rectangle.X = 100
rectangle.Y = 100
rectangle.Width = 100
rectangle.Height = 50
' отрисовка круга
Graphics.DrawEllipse(blue, rectangle)
Dim rct As New Rectangle
rct.X = 150
rct.Y = 150
rct.Width = 100
rct.Height = 100
Graphics.DrawEllipse(blue, rct)
Graphics.FillRectangle(Brush, 300, 350, 350, 400)
End Sub
End Class
Полезно почитать по теме графика в Vb
Пример графической игры на vb стрельба из пушки
Читайте также: