VBA形状重绘

时间:2019-01-19 04:11:38

标签: excel vba shapes

在Excel中,如果我将形状添加到工作表中然后将其删除,则该形状对象仍保留在内存中。有没有办法重绘该形状?请参阅下面的代码以供参考。

Sub DrawTest()
    Dim x As Excel.Shape

    Set x = ActiveSheet.Shapes.AddLine(100, 100, 200, 200)
    Debug.Print (x Is Nothing) & " " & ObjPtr(x) 'Returns:  False 39620608

    x.Delete
    Debug.Print (x Is Nothing) & " " & ObjPtr(x)  'Returns:  False 39620608

    '
    ' Can I redraw it, at this point??    '
    '

    Set x = Nothing
    Debug.Print (x Is Nothing) & " " & ObjPtr(x)  'Returns:  True 0

End Sub

2 个答案:

答案 0 :(得分:1)

否,您无法重绘该形状。

此外,实际形状不会保留在内存中,但是变量x仍在为该形状分配空间。

因此,x仍然不是Nothing,直到您将其引用设置为nothing(就像您在上一个Debug.Print语句之前所做的一样)

很抱歉这个坏消息。

答案 1 :(得分:0)

Microsoft帮助指出shape.delete方法用于删除形状。 如果要稍后使用形状,则.visible = true / false可能有帮助?