Добавление и форматирование фигуры с помощью макроса (Microsoft Excel)
Рон часто использует фигуры (на самом деле, овал), чтобы выделить элементы на листе. Он добавляет и изменяет размер фигуры, затем ему нужно изменить цвет фигуры на красный и удалить любой цвет заливки, чтобы он не заслонял то, что он на самом деле пытается выделить. Он выполняет эти шаги довольно часто и не сомневается, что это можно как-то ускорить с помощью макроса, но он не знает, как это сделать.
Прежде чем рассматривать решения на основе макросов, вы можете рассмотреть те, которые не требуют макросов. Например, если вы создадите овал (отформатированный по желанию), а затем щелкните его правой кнопкой мыши, вы можете установить его как форму по умолчанию. Это может ускорить добавление формы в вашу книгу в будущем.
Если у вас несколько фигур, каждая разного размера и цвета, вы можете просто скопировать эти фигуры в другую книгу. Эта книга может служить «держателем» для этих фигур, чтобы вы могли при необходимости копировать их обратно в другие книги. Это отличный способ создать собственную галерею стандартных форм, которую можно использовать годами.
Если вы решили, что макрос — лучший способ, то относительно легко использовать его, чтобы добавить овал. Вот очень простой:
Sub Custom_Oval1() ActiveSheet.Shapes.AddShape(msoShapeOval, 150, 150, _ 120, 60).Select Selection.ShapeRange.Fill.Visible = msoFalse With Selection.ShapeRange.Line .DashStyle = msoLineSolid .Weight = 3 .Visible = msoTrue .ForeColor.RGB = RGB(255, 0, 0) .Transparency = 0 End With End Sub
При этом стандартный овал с желаемым цветом, заливкой и прозрачностью вставляется в одно место на листе. Когда это будет сделано, форма по-прежнему выделена, и вы можете перетащить овал туда, где хотите, и внести любые изменения в размер, которые могут потребоваться.
Если вы предпочитаете располагать овал ближе к тому месту, где вы хотите, вы можете использовать вариант, который смотрит на активную ячейку на листе и помещает овал вокруг этой ячейки, размер которого соответствует высоте и ширине ячейки:
Sub Custom_Oval2() Dim lLeft As Long Dim lTop As Long Dim lWidth As Long Dim lHeight As Long lLeft = ActiveCell.Left - 5 lWidth = ActiveCell.Width + 5 lTop = ActiveCell.Top lHeight = ActiveCell.Height + 5 ActiveSheet.Shapes.AddShape(msoShapeOval, lLeft, _ lTop, lWidth, lHeight).Select Selection.ShapeRange.Fill.Visible = msoFalse With Selection.ShapeRange.Line .DashStyle = msoLineSolid .Weight = 3 .Visible = msoTrue .ForeColor.RGB = RGB(255, 0, 0) .Transparency = 0 End With End Sub
Обратите внимание, что этот вариант макроса определяет местоположение фигуры на основе местоположения объекта ActiveCell. При желании вы можете изменить все вхождения ActiveCell на Selection, что позволит регулировать размер овала, чтобы он окружал ваш выбор, а не просто активную ячейку. Также обратите внимание, что значения left, width и height немного скорректированы, чтобы овал лучше вписывался. Вы можете поиграть с разными значениями регулировки, чтобы получить желаемый вид.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (4631) применим к Microsoft Excel 2007, 2010, 2013 и 2016.