无法在共享工作簿中移动/删除行 - 资源不足

时间:2014-10-17 01:02:29

标签: excel vba excel-vba

这个有点痛苦,所以感谢你对我的帮助和耐心。

我们有一个Excel电子表格,我们将其用作我们网站产品的主文件。因此,有很多工作表和相当多的产品在一起运行一些宏以提供一些额外的功能(将输入的数据转换成HTML用于产品页面等)。

我的问题是,我们最常用的电子表格之一已成为一个麻烦,因为它有一些幻像格式一直到百万分之一行和一直到最后,导致最后一个单元格非常最后一个单元格可能。

最终突然出现的问题是我们无法再在表格内外移动行(必需的功能),因为它会导致资源出现“错误”错误。

我试过了:

  • 突出显示使用范围下方的所有行,右键单击> delete - 导致运行时错误(来自宏)
  • 突出显示大块行并使用全部清除 - 导致38MB文件膨胀至380MB
  • 一次删除一大块行 - 在导致Excel崩溃之前最大值为1,000
  • 转到新的电子表格 - 打破我们所有的宏(我没有写过,而且不够精通以修复新的表格)
  • 禁用宏并尝试上述选项,只是略微提高效率但仍然没有资源

我的智慧结束了这一点,虽然我们可以继续使用大多数日常功能,但我们很快就完全无法使用这个特定的工作表,因为我们根本不需要它。

我想知道是否有办法运行VBA脚本来删除这些行,可能是一个接一个?我尝试过运行一个类似行[960,1000000]。删除(请原谅我可怕的VBA标记)的短脚本,但这也导致资源错误不足。

我想知道是否有类似的东西:

row = 960;
while(row<=1048576){row.Delete};

继续,运行时错误调试将我指向宏中的以下if语句:

If Target.Count > 1 Then Exit Sub

其中Target是传递给子的变量。

这让我感到非常奇怪,因为我对VBA和IF的理解(通常只是认识到如果我的选择大于1(行?),请不要运行此代码。

提前再次感谢。

1 个答案:

答案 0 :(得分:0)

仅当您没有任何链接进入或离开工作表时才会使用此方法。也可能有可能破坏的Sql连接。可能需要禁用宏。 这种方法存在许多可能的问题。使用风险自负。

  1. 请注意表单的确切“名称”和“(名称)”;在VBA代码窗口中查看工作表的属性。 “名称”是工作表选项卡上显示的名称。 “(Name)”是仅在属性窗口中可见的代码名称。
  2. 在工作表上列出范围名称。
  3. 将数据复制到新工作表。
  4. 将任何宏复制到新工作表。
  5. 删除旧表。
  6. 将新表格的“名称”和“(名称)”重命名为旧表格。
  7. 重新创建范围名称。
  8. 如果您没有太多格式,这是一种更好的方法:

    1. 禁用宏并将计算设置为手动。这样可以避免在执行删除操作时重新计算。
    2. 选择整张表并清除格式。
    3. 删除数据下方的所有行。
    4. 重做您的格式。选择整个列(不仅仅是使用区域)以应用格式(如果适用)。
    5. 将整个工作表上的格式从A1移到最后是很重要的。否则你会得到你提到的臃肿。只需这一步就可以解决您的问题。如果没有,则继续删除数据下面的所有行。这不应导致文件大小膨胀。