В общем намудрил так, в итоге лист1 отрабатывает, а лист2, нет

. Знаю что по не знаю где-то накосячил, вопрос где?
Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim cl As Range
With Worksheets("лист1")
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For Each cl In .Range("B12841:b" & lRow).Cells
If cl <> Empty And Not cl Like "*Резерв*" Then
For i = 0 To 8
If i <> 3 And cl.Offset(, i) = Empty Then
MsgBox "Не заполнена ячейка '" & .Cells(10, cl.Offset(, i).Column).Text & "' для " & cl & " !", vbCritical + vbOKOnly
Cancel = True
Exit Sub
End If
Next
End If
Next
End With
With Worksheets("лист2")
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For Each cl In .Range("B12841:b" & lRow).Cells
If cl <> Empty And Not cl Like "*Резерв*" Then
For i = 0 To 8
If i <> 3 And cl.Offset(, i) = Empty Then
MsgBox "Не заполнена ячейка '" & .Cells(10, cl.Offset(, i).Column).Text & "' для " & cl & " !", vbCritical + vbOKOnly
Cancel = True
Exit Sub
End If
Next
End If
Next
End With
End Sub