Excel VBA编译错误,否则不带If

Excel VBA编译错误,否则不带If,excel,if-statement,vba,Excel,If Statement,Vba,我尝试在列“L”和列“V”都声明“已完成”时运行代码。然后列“W”将显示“已完成”,否则它将显示“未完成”,但它显示编译错误“else withou if” 下面是我的代码 Sub OverallStatus() Dim x As Long Dim lastrow As Long With Sheet1 If Application.WorksheetFunction.CountA(.Cells) <> 0 Then lastrow = .Cells.F

我尝试在列“L”和列“V”都声明“已完成”时运行代码。然后列“W”将显示“已完成”,否则它将显示“未完成”,但它显示编译错误“else withou if”

下面是我的代码

Sub OverallStatus()

Dim x As Long
Dim lastrow As Long

With Sheet1
    If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
         lastrow = .Cells.Find(What:="*", _
                     After:=.Range("A1"), _
                     Lookat:=xlPart, _
                     LookIn:=xlFormulas, _
                     SearchOrder:=xlByRows, _
                     SearchDirection:=xlPrevious, _
                     MatchCase:=False).Row
    Else
        lastrow = 1
    End If
    For x = 2 To lastrow
        If .Range("L" & x) = "Completed" And .Range("V" & x) = "Completed" Then
        .Range("W" & x) = "Completed"
        Else: .Range("W" & x) = "Incomplete"
        End If
    Next
End With
End Sub
子总体状态()
暗x等长
最后一排一样长
附页1
如果Application.WorksheetFunction.CountA(.Cells)为0,则
lastrow=.Cells.Find(内容:=“*”_
之后:=.范围(“A1”)_
看:=xlPart_
LookIn:=xl公式_
搜索顺序:=xlByRows_
搜索方向:=xlPrevious_
MatchCase:=False)。行
其他的
lastrow=1
如果结束
对于x=2到最后一行
如果.Range(“L”&x)=“已完成”且.Range(“V”&x)=“已完成”,则
.范围(“W”和x)=“已完成”
其他:。范围(“W”&x)=“不完整”
如果结束
下一个
以
端接头

要更改代码的内容:

  • 之后添加新行字符,然后
    ,或者如果
  • 在下一个
  • 结束子项上方的
    结束替换为
    结束

  • 在您的情况下,“Then”必须与“If”位于同一行,但它应该是行中的最后一个内容,“Then”之后的部分应该位于单独的行中。如果您在“Then”后面的任何内容与“If”放在同一行上,那么“If”是单行语句,而“Else”和“End If”也必须放在同一行上。请不要发布代码的图像。它使代码难以阅读,防止复制/粘贴以测试或解决问题,并且对带宽有限的用户来说相当粗鲁。复制代码和/或任何相关错误消息,并将其作为文本粘贴到问题中。只有在没有其他方法可以解释问题时,才应使用图像。请输入实际代码。(整个屏幕的截图也与所问问题毫无关系;您至少可以礼貌地将其裁剪到所需的最小大小。)谢谢。如果应将.End置于.range(“W”&x)=“未完成”…不是在下一次道歉之后,我已经更新了我的代码显示格式。我已经相应地更新了我的代码,但它仍然显示其他内容,没有错误。非常感谢,我刚刚更新了最终修正案。最后它成功了。非常感谢你的帮助。