Excel vba形状重绘
在Excel中,如果向图纸中添加形状,然后将其删除,则形状对象仍保留在内存中。有没有办法重画那个形状?请参考下面的代码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.
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感谢您的确认。非常感谢。我已经看过所有这些了,我想可能还有更多。我想这是路的尽头了。完全有道理,谢谢你的解释。