Excel 工作簿已损坏并已修复 sheet 代码错误时提示内存不足

Excel Workbook Corrupted and Repaired now sheet says out of Memory when codes error

所以我将我的 .xlsm 工作簿剪切并粘贴(第一个错误)到之前的副本上,它就消失了,刷新文件夹后它又出现了但已损坏,Excel 修复了文件说它修复了 "Repaired Records: Drawing from /xl/drawings/drawing7.xml part (Drawing shape)" 问题的原因。伟大的!所以我回去工作,当我执行这段代码时,它一直出错,之后我得到 "Out of Memory" 错误,我无法保存工作簿。

我 运行 在 64 位 excel 上有 8Gb 的 RAM,所以它可能不是实际内存。我尝试删除代码并在另一个 sheet 上使用其他代码,但仍然如此。此外,当我在删除代码后保存工作簿时。打开时再次损坏

Private Sub BtnNoticeRemove_Click()

Dim Lastrow, a As Long

If Sheets("Admin").cbxNotice.Text = "" Then
   MsgBox "No data Selected"
   End
End If

a = 2

Lastrow = Sheets("BP").Cells(Rows.Count, 19).End(xlUp).Row

Do Until a = Lastrow + 1

If Sheets("Admin").cbxNotice.Text = Sheets("BP").Cells(a, 19).Value Then
    Sheets("BP").Cells(a, 19).Delete Shift:=xlUp
    Lastrow = Sheets("BP").Cells(Rows.Count, 19).End(xlUp).Row
    Sheets("BP").Range("S2:S" & Lastrow).Sort Key1:=Range("S2"), 
    Order1:=xlAscending
End If

a = a + 1
Loop

End Sub

编辑:

谢谢反馈的人,好的,所以我设法重新创建了我所有的数据和宏代码。不再有损坏错误,但我仍然在上面的代码中遇到内存不足错误,排序完成后,在

Sheets("Admin").cbxNotice.Text

报错

我成功了,问题是 cbxNotice 是 sheet 中的一个列表框,它引用了我的后台 Sheet,问题出在它从后台 [=15] 删除的循环中=] 从中引用的列表框导致我的循环继续,它完全忽略了 Until 和变量 a 直到程序错误 ed "out of memory".

所以我做了什么让它工作,清除列表框中的引用并使用宏代码将这些值添加到列表框中