这是我想做的,我真的不知道该怎么做或是否可能。
我有一栏会生成一些值。假设列号是10。
我要怎么做...如果该列中某个单元格的值> 1,我想绘制一个矩形(在下一个单元格或靠近该单元格的位置)(第11列同一行),并为其分配了一个宏。
宏将在该单元格所在的位置以及将在其中绘制矩形的那一行之后插入另一行,因此我必须以某种方式获取矩形的位置。
有任何想法吗?
非常感谢!

最佳答案

Sub Tester()
Dim c As Range

    For Each c In ActiveSheet.Range("A2:A30")
        If c.Value > 1 Then
            AddShape c.Offset(0, 1)
        End If
    Next c

End Sub


Sub AddShape(rng As Range)
    With rng.Cells(1).Parent.Shapes.AddShape(msoShapeRectangle, rng.Left, _
                                    rng.Top, rng.Width, rng.Height)
        .OnAction = "DoInsertAction"
    End With
End Sub

Sub DoInsertAction()
    Dim r As Long
    r = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
    ActiveSheet.Rows(r + 1).Insert Shift:=xlDown
End Sub

关于excel - 如何从VBA绘制矩形并为其分配宏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7001933/

10-12 18:29