簡體   English   中英

基於單元格值繪制形狀

[英]Draw Shape Based on Cell Values

所有,

我有基於宏本身輸入值創建形狀的代碼。 我想要用戶指定的形狀類型,寬度和高度的值(工作表上的形狀位置現在對我無動於衷)。 用戶將上述寬度和高度的數值輸入到單元格中,並單擊一個按鈕,該按鈕將輸出用戶想要的形狀類型和尺寸。

在我的情況下,將有一個“矩形”和“圓圈”的下拉框。 我不知道如何讓代碼讀取這些單詞並分別將其轉換為“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中找到值,將其轉換為小寫,並將其測試為“矩形”和“圓”,並將ShapeType設置為相應的值。
您可以使用1和9代替,但這是不好的做法。 使用定義的常量 - 它將使您的代碼更容易閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM