首页 > 解决方案 > vba 形状重绘

问题描述

在 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

标签: excelvbashapes

解决方案


不,您不能重绘该形状。

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

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

关于这些坏消息我很遗憾。


推荐阅读