Excel 此代码有时工作,有时在运行时通过错误消息执行

Excel 此代码有时工作,有时在运行时通过错误消息执行,excel,vba,Excel,Vba,下面提到的代码有时有效,有时抛出错误消息 有人能告诉我为什么会发生这种情况,或者有什么替代方法吗 Sheet1.Range("H2", Range("O" & Rows.Count).End(xlUp)).Clear 错误消息是 "Run-time error '1004':Application defined or object-defined error" 现在它应该起作用了: With Sheet1 .Range("H2", .Range("O" & .Rows.C

下面提到的代码有时有效,有时抛出错误消息

有人能告诉我为什么会发生这种情况,或者有什么替代方法吗

Sheet1.Range("H2", Range("O" & Rows.Count).End(xlUp)).Clear
错误消息是

"Run-time error '1004':Application defined or object-defined error"
现在它应该起作用了:

With Sheet1

.Range("H2", .Range("O" & .Rows.Count).End(xlUp)).Clear

End With

只有第一个范围得到了工作表引用,第二个范围和行函数没有得到。

引用工作表时应该更具体一些。用声明的对象替换“Sheet1”,并将其放在“Range”(“O”…)前面。类似于:ws.rangeError在Sheet1在运行时不处于活动状态时发生,因为
Range(“O”…
隐式属于活动工作表,由于一个范围不能跨越多个工作表,因此可能会出现错误。解决方案是完全限定您的范围。如果您能解释您想要实现的目标,可能会有更好的方法来完成您正在尝试的工作,也许我可以提出一些建议。
Option Explicit

Sub test()

    Dim LastRow As Long

    'Create a with statement referring BOTH workbook & worksheet to avoid errors if you have another workbook open
    With ThisWorkbook.Worksheets("Sheet1")
        'Calculate LastRow and check if it is correct
        LastRow = .Cells(.Rows.Count, "O").End(xlUp).Row
        'Clearly show your range to be clear
        .Range("H2:O" & LastRow).Clear
    End With

End Sub