Excel 基于单元值绘制形状

Excel 基于单元值绘制形状,excel,vba,cell,draw,shapes,Excel,Vba,Cell,Draw,Shapes,全部, 我有代码可以根据宏本身的输入值创建形状。我想让用户指定形状类型、宽度和高度的值(形状在图纸上的位置现在对我来说无关紧要)。用户将上述宽度和高度的数值输入到单元格中,然后单击一个按钮,该按钮将输出用户想要的形状类型和大小 在我的例子中,将有一个下拉框“矩形”和“圆形”。我不知道如何让代码读取这些单词并将其分别转换为“1”和“9”。我可以让用户选择1或9来创建形状 我还想在形状的中心添加文本。同样,我已经为此创建了一个代码,但它在宏中。我希望代码引用一个单元格值。我想应该和上面一样 谢谢你的

全部,

我有代码可以根据宏本身的输入值创建形状。我想让用户指定形状类型、宽度和高度的值(形状在图纸上的位置现在对我来说无关紧要)。用户将上述宽度和高度的数值输入到单元格中,然后单击一个按钮,该按钮将输出用户想要的形状类型和大小

在我的例子中,将有一个下拉框“矩形”和“圆形”。我不知道如何让代码读取这些单词并将其分别转换为“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

由于您已经在评论中找到了部分答案,我将重点介绍形状选择。
看看这个:

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中找到值,将其转换为小写,并测试“矩形”和“圆形”,并将形状类型设置为相应的值。

您可以使用1和9,但这是一种糟糕的做法。使用定义的常量-这将使代码更易于阅读。

对于文本,可以使用
s.TextFrame.Characters.text=ws.Range(“a1”).Value
。对于形状类型,可能有一个查找表或类似的东西,如果a1=矩形,那么b=1,并在addshape行中使用b?谢谢,SJR。这对文本有效。我只需要弄清楚如何用这个形状。我假设你需要一份声明。注意,评论是短暂的,可以随时删除-请随意将信息放入你的帖子中,使信息更持久,你的答案更完整。