Excel vba形状重绘

Excel vba形状重绘,excel,vba,shapes,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.

在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

Microsoft帮助说明shape.delete方法用于删除形状。
如果以后要使用该形状,则.visible=true/false可能会有所帮助?

否,您不能重新绘制该形状

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

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


很抱歉告诉你这个坏消息。

是什么让你认为这个形状还在记忆中?告诉我们你从那些
调试中得到的等待结果如何s@CindyMeister对象本身仍在内存中。因为对象指针仍在返回地址。但是,它似乎不再包含实际形状。我想可能会有一个命令再次调用该形状。我认为撤消是恢复该形状的唯一“希望”。如果对象变量未设置为
Nothing
,则该变量仍将在内存中。但就开发者仍然可以访问的
形状而言
——已经不存在了。(据我所知,无法访问“撤消”功能存储这些内容的“临时”和“临时”文件信息。)@Cindymister感谢您的确认。非常感谢。我已经看过所有这些了,我想可能还有更多。我想这是路的尽头了。完全有道理,谢谢你的解释。