Попробуй это.Код будет по-прежнему выходить, как только будет найден длинный текст, но по крайней мере должно появиться окно сообщения.
Sub LenValid()
Dim sht As Worksheet
Dim wrk As Workbook
Dim lrow As Long
Dim rng1 As Range
Dim rng2 As Range
Dim i As Long
Dim finprod As Variant
Dim subprod As Variant
Set wrk = ActiveWorkbook
For Each sht In wrk.Worksheets
lrow = sht.Range("B" & Rows.Count).End(xlUp).Row
Set rng1 = sht.Range("B10:B" & lrow) 'CUSTOMER ACCT
Set rng2 = sht.Range("C10:C" & lrow) 'CUSTOMER NAME
For i = 1 To rng1.Count
If Len(rng1.Cells(i).Value) > 15 Then
MsgBox "Customer Acct limited to 15 characters." & vbNewLine & "Please review and correct.", vbExclamation
Exit Sub
End If
If Len(rng2.Cells(i).Value) > 10 Then
MsgBox "Customer Name limited to 10 characters." & vbNewLine & "Please review and correct.", vbExclamation
Exit Sub
End If
Next i
Next sht
'Error Handler
NothingFound:
MsgBox "Character length in required fields are valid.", vbInformation
End Sub
Ваша проблема, вероятно, заключается в следующем:
Set rng1 = sht.Range("B10:B" & lrow)
If Len(rng1.Range("A" & i).Value) > 15 Then
Если i=10
, это проверяет 10-ю ячейку в rng1 как относительную, т.е. она начинается в B20.