Compile error: End If without block If

excel, vba

Solution

Further to my comments above, change your code to

If Not cel Is Nothing Then
    If cel.Offset(0, 8).Value = "Yes" Then wshT.Cells(r, 14).Value = "Virtual"
    If cel.Offset(0, 8).Value = "" Then wshT.Cells(r, 14).Value = "Physical"
End If

or to this

If Not cel Is Nothing Then
    If cel.Offset(0, 8).Value = "Yes" Then
        wshT.Cells(r, 14).Value = "Virtual"
    ElseIf cel.Offset(0, 8).Value = "" Then
        wshT.Cells(r, 14).Value = "Physical"
    End If
End If

For the syntax of `IF/EndIf`, see the below

'~~> Multiple-line syntax:
If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

'~~> Single-line syntax:
If Condition Then [ statements ] [ Else [ elsestatements ] ]

Problem

I am currently running the below loop to pull out information from another spreadsheet, but keep getting the following error message Compile error: End If without block If, at ``` ElseIf cel.Offset(0, 8).Value = "" Then wshT.Cells(r, 14).Value = "Physical" ``` What could be causing it and how do I remediate it? My code below: ``` ' Loop though cells in column A on main.xlsm For r = 1 To m ' Can we find the value in column A Set cel = wshS.Columns(3).Find(What:=wshT.Cells(r, 1).Value, _ LookAt:=xlWhole, MatchCase:=False) If Not cel Is Nothing Then If cel.Offset(0, 8).Value = "Yes" Then wshT.Cells(r, 14).Value = "Virtual" ElseIf cel.Offset(0, 8).Value = "" Then wshT.Cells(r, 14).Value = "Physical" Else: End If End If Next r ```

Original source