在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
答案 0 :(得分:1)
否,您无法重绘该形状。
此外,实际形状不会保留在内存中,但是变量x仍在为该形状分配空间。
因此,x仍然不是Nothing,直到您将其引用设置为nothing(就像您在上一个Debug.Print语句之前所做的一样)
很抱歉这个坏消息。
答案 1 :(得分:0)
Microsoft帮助指出shape.delete方法用于删除形状。 如果要稍后使用形状,则.visible = true / false可能有帮助?