下面是我出错的代码。我已用粗体标记了发生错误的行(即行首和行末的 **)。
我收到错误的具体代码部分是:并且(范围(“M5:M78”)不为空)
如果范围是一个对象,为什么我不能不声明这个范围(上面)不为空?
Option Explicit
Sub ResetWorksheetMonth1()
Dim i As Long
Dim LastRow As Long
LastRow = Range("X" & Rows.Count).End(xlUp).Row
With Worksheets("Analysis Worksheet").Activate
For i = 5 To LastRow
**If Range("M" & i).Value = 0 And (Range("M5:M78") Is Not Null) And Range("N" & i).Value > 0 And Range("O" & i).Value > 0 And Range("P" & i).Value > 0 _
And Range("Q" & i).Value > 0 And Range("R" & i).Value > 0 And Range("S" & i).Value > 0 And Range("T" & i).Value > 0 _
And Range("U" & i).Value > 0 And Range("V" & i).Value > 0 And Range("W" & i).Value > 0 And Range("X" & i).Value > 0 Then**
Range("M" & i).Value = Range("N" & i).Value
Range("N" & i).Value = Range("O" & i).Value
Range("O" & i).Value = Range("P" & i).Value
Range("P" & i).Value = Range("Q" & i).Value
Range("Q" & i).Value = Range("R" & i).Value
Range("R" & i).Value = Range("S" & i).Value
Range("S" & i).Value = Range("T" & i).Value
Range("T" & i).Value = Range("U" & i).Value
Range("U" & i).Value = Range("V" & i).Value
Range("V" & i).Value = Range("W" & i).Value
Range("W" & i).Value = Range("X" & i).Value
Range("X" & i).Value = Range("Z" & i).Value
Range("Y" & i).Formula = "=SUM(" & Range(Cells(i, 13), Cells(i, 24)).Address(False, False) & ")"
Range("Z" & i).Value = Null
Range("AL" & i).Formula = "=SUM(" & Range(Cells(i, 26), Cells(i, 37)).Address(False, False) & ")"
End If
Next i
答案1
如果你只是想检查该范围内的所有单元格是否为空,你可以使用
WorksheetFunction.CountA(Range("M5:M78")) <> 0
请记住,您要尝试检查的是整个范围是否等于空,而不是循环并检查该范围内每个单元格的内容。