无法在 Excel 崩溃的情况下从工作表中删除命令按钮

Posted

技术标签:

【中文标题】无法在 Excel 崩溃的情况下从工作表中删除命令按钮【英文标题】:Can not delete Command Button from worksheet without Excel crashing 【发布时间】:2013-09-26 13:12:37 【问题描述】:

我有一个要删除的工作表。最初它包含 3830 行。尝试删除工作表时,Excel 会崩溃并完全关闭。我认为这可能是由于工作表上的数据量很大,并且其中一列中存在公式。所以我从列中删除了部分的公式,然后删除了块中的行,每次都保存。我删除了数据,直到只剩下 30 行,仍然无法删除工作表而不会崩溃。在此之后,我浏览了 VBA 并删除了对工作表的所有引用,以防出现某种依赖问题。这仍然不允许我删除工作表。

除了数据之外,工作表中还嵌入了一个命令按钮,我已确定这是问题的原因。该按钮没有相关的点击事件——点击它似乎什么也不做。

要修改按钮,我必须启用设计模式,我认为这是因为它是一个 Active X 控件。如果我尝试通过右键单击选项剪切按钮,Excel 会崩溃。如果我尝试通过选择按钮并按删除键来删除按钮,Excel 会崩溃。该按钮称为“排序”而不是“命令按钮 1”或类似名称,但我无法在名称管理器中找到对该名称的引用。

我已经通过对象属性,可以编辑命令按钮对象,移动对象,调整大小等。我也通过格式控制,但没有成功。最初对象被锁定,但工作表没有。我已经解锁了这个对象,但这并没有什么不同。

我还在工作表上创建了一个新的 Active X 命令按钮和一个表单控件命令按钮,并且能够毫无问题地删除它们。有问题的工作簿包含大量工作表,因此理想情况下,我希望能够解决此问题,而无需将要保留的每个工作表复制到新工作簿或类似的修复程序中。

如有任何建议,我们将不胜感激!

【问题讨论】:

如果可能,将数据复制到干净的工作表中 - 这应该是最简单的解决方案;)# 我必须同意克里斯蒂安的观点。此外,为了大大加快复制过程,您可以使用 Shift+Click 选择多个工作表(即按住 shift,单击 worksheet1,然后单击 worksheet3,这将提供所有 3 个工作表),然后右键单击以复制到新工作簿中。困难的部分是确保 VBA 和公式完好无损地转移到新工作表中,并且不引用旧工作表。 是的,Excel 很容易出现诸如此类的怪事。我曾多次遇到创建新工作簿,然后复制工作表和 VBA 是解决问题的唯一方法。 您是否尝试过使用 VBA 删除按钮?类似于 Sheets("Sheet1").Shapes("Button Name").Delete 我尝试使用 VBA 删除按钮,但出现运行时错误。我在工作簿中有很多 VBA 和公式,跨越许多工作表,所以我真的不想将它们复制到新工作簿 - 我认为在复制所有工作表与隐藏问题表方面的权衡真的不值得。因此,由于工作表上只有一个按钮,我决定隐藏工作表。 【参考方案1】:

我有同样的问题。我添加了命令按钮,但由于某种原因,当我尝试删除它时,excel 崩溃了。

解决方案:

    创建一个空白的 Excel 文件并用新名称保存。 使用命令对象打开文件。 右键单击工作表并使用 MoveOrCopy。 检查复制选项并将工作表复制到新创建的 文件。

您的所有公式 NamedCells 都已成功复制。如果你有任何VB代码,你需要手动复制它。

【讨论】:

【参考方案2】:

您可以禁用 Excel 工作簿的自动计算。 使用 VBA 代码:Application.Calculation = xlManual 手动:Formluas > 计算选项 > 手动 保存文件,然后尝试。

由于工作表上只有一个按钮,并且假设没有其他数据,您可以尝试使用 VBA 删除工作表 ThisWorkbook.Sheets("SheetName").Delete

【讨论】:

我尝试了这两个步骤,但不幸的是都没有成功。我已经隐藏了我认为足够的工作表,但感谢您的建议。

以上是关于无法在 Excel 崩溃的情况下从工作表中删除命令按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何在不打开的情况下从 CSV 文件中检索数据

在没有网络的情况下从后台连接到 iOS 上的工作灯会崩溃

如何在不让日志文件失控的情况下从巨大的表中删除过期数据?

Excel VBA 在工作表中插入/删除行

无法在不覆盖的情况下将 R 数据框附加到现有 Excel 中

无法将Delphi ADOQuery更新或插入到Excel工作表中