Множественные конкатенированные logi c тесты часто намного проще в управлении и понимании, если вы инкапсулируете их в функцию
Например, сложный тест
IF Cells(1,1).Value > 5 And Cells(1,1).Value <> "True" And InStr(Cells(3,1).Value,"shop") = 0 Then
Может быть лучше написано как
If not TryYourTestName(Cells(1,1).Value,Cells(1,1).Value,Cells(3,1).Value) then 'do action when test fails
'Do actions when test passes
С функцией
Public Function TryYourTestName(ByVal ipA1 As Long, ByVal ipA2 As Boolean, ByVal ipA3 As String) As Boolean
TryYourTestName = False
If ipA1 <= 5 Then Exit Function
If ipA2 Then Exit Function
If InStr(ipA3, "Shop") <> 0 Then Exit Function
TryYourName = True
End Function