Нарисуйте форму на основе значений ячеек - PullRequest
0 голосов
/ 14 февраля 2019

Все,

У меня есть код, который создает форму на основе введенных значений в самом макросе.Я хочу, чтобы значения типа формы, ширины и высоты определялись пользователем (расположение фигуры на листе мне сейчас безразлично).Пользователь вводит вышеупомянутые числовые значения ширины и высоты в ячейки и нажимает кнопку, которая выводит тип и размер фигуры, которые ему нужны.

В моем случае будет выпадающий список для «прямоугольника» и «круга».Я не знаю, как получить код для чтения этих слов и преобразовать его в «1» и «9» соответственно.Я могу просто попросить пользователя выбрать 1 или 9 для создания фигуры.

Я также хотел бы добавить текст в центр фигуры.Опять же, я создал код для этого, но он находится внутри макроса.Я хотел бы, чтобы код ссылался на значение ячейки вместо этого.Я предполагаю, что это будет так же, как указано выше.

Спасибо за любую помощь.

Sub AddShape()

Dim s As Shape
Dim ws As Worksheet
Set ws = Sheets("Deck Layout")

'add a shape
Set s = ws.Shapes.AddShape(1, 80, 80, 75, 75)

'make it nearly white
s.Fill.ForeColor.RGB = RGB(245, 245, 255)

'show text within it
s.TextFrame.Characters.Text = "1"
s.TextFrame.Characters.Font.ColorIndex = 2

With s.TextFrame.Characters(0, 0)
s.TextFrame.HorizontalAlignment = xlHAlignCenter
s.TextFrame.VerticalAlignment = xlVAlignCenter
.Font.Color = RGB(0, 0, 0)

End With
End Sub

1 Ответ

0 голосов
/ 15 февраля 2019

Поскольку у вас уже есть части ответа в комментариях, я сосредоточусь на выборе формы.
Посмотрите на это:

Dim ShapeType As MsoAutoShapeType

Select Case LCase(ws.Range("b1").Value)
    Case "rectangle"
        ShapeType = msoShapeRectangle
    Case "circle"
        ShapeType = msoShapeOval
End Select

Set s = ws.Shapes.AddShape(ShapeType, 80, 80, 75, 75)

Он найдет значение вB1, преобразуйте его в нижний регистр и проверьте его на «прямоугольник» и «круг» и установите ShapeType в соответствующее значение.
Вместо этого вы можете использовать 1 и 9, но это плохая практика.Используйте определенные константы - это сделает ваш код намного проще для чтения.

...