在尝试测试一些代码时,我遇到了一个我不记得以前遇到过的问题。当我单步执行代码时,它在 ClearContents 行之后停止......没有错误,没有警告,什么也没有。
Public Sub CreateCurMth(wsCur As Worksheet)
Dim iData As Integer, iRow As Integer
Dim wbData As Workbook
On Error GoTo err_here
iRow = wsCur.Cells(Rows.Count, 1).End(xlUp).Row
wsCur.Range("A10:X" & iRow).ClearContents '<----- Fails after this line
'Assume that file is already open
Set wbData = Workbooks("qReport.xlsx")
... etc
err_here:
Beep
End Sub
wsCur 是在调用子程序中分配的工作表。该代码准确地返回 iRow 作为 wsCur 上最后使用的行。另外,内容被清除......以便该行执行正常。它死后不会发出蜂鸣声。我在蜂鸣声上也有一个断点,但它从未被击中。
因此,正如我在输入问题时通常会发生的情况一样……我不断尝试,通常最终会在尝试完整记录我的问题时找到答案。这次结果还不错...我找不到任何原因,上面的代码现在可以工作...但是,我在 VBA 的其他部分仍然遇到与上面部分不相似的相同问题。我已经在这个项目上工作了大约一周,并且在今天之前的所有测试,该代码都有效......或者至少像通常预期的那样出错了。
每次调试器停止时,都不会出现错误和警告。失败的线路甚至没有任何共同点。所以我只能假设这是我的系统环境问题。
我已经搜索和谷歌搜索,但没有答案。我希望这里有人以前遇到过这个问题并解决了它,或者至少可以给我指出正确的方向。
我的代码编译没有错误。这是目前暂停的线路:
wsTemp.Delete
临时工作表被删除...然后停止。
EDIT:好吧,所以我认为这只是一个损坏的 Excel 文件,并进行“打开并修复”几个小时才解决了这个问题。但现在我遇到了同样的问题,调试器在之后失败
wsTemp.Delete
我打开了“工具”>“选项”>“常规”>“所有错误时中断”,但仍然没有收到任何错误,也没有警告...代码单步执行只是停止。
为了彻底...以下是直到故障点的整个过程:
'Creates combined joblist from last and current month
Sub CreateCompareList(wsCur As Worksheet, wsLast As Worksheet, wsComp As Worksheet)
Dim wsTemp As Worksheet
Dim lLastRow As Long, lCurRow As Long, lLMRow As Long
Dim iCol As Integer, x As Integer
wsComp.Unprotect SheetPwd
lLastRow = wsComp.Cells(Rows.Count, 27).End(xlUp).Row 'Get the last row
If lLastRow = 9 Then
'No data on sheet - Don't ruin headers
Else
wsComp.Rows("10:" & lLastRow).ClearContents 'Clear that section of Job names and numbers
End If
Set wsTemp = Worksheets.Add 'Add a Temp Sheet to filter jobs
lCurRow = wsCur.[A10].End(xlDown).Row 'Get the last row
wsCur.Range("A10:B" & lCurRow).Copy 'Grab all jobs for the current month
wsTemp.[A1].PasteSpecial 'Paste job list from Current Month
Application.CutCopyMode = False
lLMRow = wsLast.[A10].End(xlDown).Row 'Get the last row
wsLast.Range("A10:B" & lLMRow).Copy 'Grab all jobs from the Last month
lLastRow = wsTemp.[A1].End(xlDown).Row 'Get the last row
wsTemp.Cells(lLastRow + 1, 1).PasteSpecial 'Paste jobs from last month below jobs from current month
Application.CutCopyMode = False
lLastRow = wsTemp.[A1].End(xlDown).Row 'Get new last row
'Filter out duplicates based on the JobNo
wsTemp.Range("$A$1:$B$" & lLastRow).RemoveDuplicates Columns:=2, Header:=xlNo
lLastRow = wsTemp.[A1].End(xlDown).Row 'Get new last row
wsTemp.Range("A1:B" & lLastRow).Copy 'Copy unique Jobs
wsComp.[A10].PasteSpecial 'Paste Unique Jobs to Compare sheet
'Clean up Temp sheet
' Application.DisplayAlerts = False
wsTemp.Delete
我已经尝试过打开和关闭 DisplayAlerts,当警报打开时...我收到警报,工作表上可能有数据...我单击删除,工作表被删除...然后代码停止。有时,像上面这样的其他 .ClearContents 行也会出现问题。