在vba中,我可以安全删除与正在运行的macros关联的button和工作表吗? (内存不足,无法读取的内容错误)

我没有看到任何直接的错误或问题,当我有一个macros删除一个button(或一个button的工作表)是最初用于启动同一个macros的相同的button。 为了100%准确,它实际上是一个在与实际上正在删除所述button的button相关联的子组中调用的子组。

然而,我试图解决间歇性的“内存不足”和“不可读的内容”的错误和消失的button问题(都在同一个工作簿),很less成功,我想知道我在做什么(上述)在VBA是一些以后如何默默地引起这些问题。

编辑:当我在中断模式下删除'关联button时,我会立即得到一个警告,但它只是表示删除button后,我不能使用中断模式。 但是,这使我怀疑。

所有button都是ActiveX,但是它们是控件。

工作簿很大,但问题是间歇性的,所以我不认为这是问题。

编辑:我已经控制了“太多东西打开”(没有足够的内存)。

这是我如何删除button:

Dim Shp As Shape For Each Shp In ThisWorkbook.Sheets("Formulas").Shapes Shp.Delete Next Shp 

这是我如何删除工作表上的button:

 ThisWorkbook.Sheets("Formulas").Delete 

请注意,这个问题是关于一个macros'自我删除'它自己的关联button,但我可以听到更多有关'内存不足'和'不可读的内容'的错误和消失的button问题一般。

我有15年Excel和VBA的经验,但没有正式的CS教育,所以请随意深入探索您的答案。 🙂

只要你完全使用和引用button本身,我不知道如何删除它们会产生任何问题。 有了VBA的线性特性,一旦按下该button并调用了子例程,该button就不再与macros有任何联系(再次,只要没有其他代码以某种方式指向或引用button)。