Во-первых, их не нужно вкладывать, потому что все они имеют противоречивую логику и никогда не будут «каскадно» спадать, как задумано вложенным If
.
If f <> 1 And g <> 1 And h <> 1 And i <> 1 Then '// If this is true
'...
If f = 1 And g <> 1 And h <> 1 And i <> 1 Then '// Then this can never be true
Если вы собираетесьчтобы сохранить этот дизайн, тогда на самом деле должна быть If...ElseIf...
логика.
Во-вторых, у вас много общей логики, поэтому что-то вроде этого должно работать, потому что вам не нужно повторять одно и то жерезультат для каждого условия:
Dim caption As String
caption = "Lender items " & IIf(wsCalc.Range("LenderComplete").Value <> vbNullString, "COMPLETE", "NOT complete") & vbNewLine & _
"Processor items " & IIf(wsCalc.Range("ProcessorComplete").Value <> vbNullString, "COMPLETE", "NOT complete") & vbNewLine & _
"Keyer items " & IIf(wsCalc.Range("KeyerComplete").Value <> vbNullString, "COMPLETE", "NOT complete") & vbNewLine & _
"Checker items " & IIf(wsCalc.Range("CheckerComplete").Value <> vbNullString, "COMPLETE", "NOT complete")
With ContLoanFile
.ContinueLP.BackColor = vbYellow
With .Label7
.Caption = caption
.Font.Size = 9
End With
End With
Нет необходимости в цикле и нет необходимости проверять одни и те же значения несколько раз.