【发布时间】:2019-02-14 20:49:08
【问题描述】:
全部,
我的代码可以根据宏本身中的输入值创建形状。我想要用户指定的形状类型、宽度和高度的值(表格上的形状位置现在对我来说无关紧要)。用户将上述宽度和高度的数值输入到单元格中,然后单击一个按钮,该按钮将输出用户想要的形状类型和大小。
在我的例子中,会有一个“矩形”和“圆形”的下拉框。我不知道如何让代码读取这些单词并将其分别转换为“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
【问题讨论】:
-
文本可以使用
s.TextFrame.Characters.Text = ws.Range("a1").Value。对于形状类型,可能有一个查找表或类似 If a1=rectangle then b=1 并在 addshape 行中使用 b ? -
谢谢你,SJR。这适用于文本。我只需要弄清楚如何使用形状来做到这一点。我假设需要一个 WITH 语句。
标签: excel vba cell draw shapes