excel - 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
解决方案
不,您不能重绘该形状。
此外,实际形状不会保留在内存中,但变量 x 仍在为该形状分配空间。
因此, x 仍然是 Not Nothing 并且,直到您将其引用设置为空(就像您在最后一个 Debug.Print 语句之前所做的那样)
关于这些坏消息我很遗憾。
推荐阅读
- python - 无法启动新线程由 thread.start_new_thread() 抛出
- xcode - 在没有特定 iOS 设备的 xcode 上发布应用程序
- angular - 是否有工具可以在编译期间显示所有 Angular AOT 问题?
- windows - `cargo build` 失败,链接错误“link.exe failed: exit code: 325595”
- python - 更简单的案例列表
- laravel - Laravel - Can no longer use basic auth
- c# - Windows App interacting with scanner
- python - 根据值对python中的字典列表进行排序并将排序的对象添加到新列表中
- java-8 - 如果输入列表已排序,流返回的列表是否总是排序?
- java - gauge framework exception