Страницы: 1
RSS
Макрос. Проверка столбца на наличие ошибки и остановка макроса
 
Помогите, пожалуйста. Макрос делает проверку на наличие ошибки в определенном столбце. После этого действия есть продолжение макроса.
Мне нужно, чтобы макрос прекращал полностью работу и выдавал сообщение об ошибке.
С проверкой и ошибкой проблем нет, а вот с одновременной остановкой и сообщением - проблема :(
Как допилить код?
Код
Sub Check()

    Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, 13).End(xlUp).Row
    For i = LastRow To 2 Step -1
    If Cells(i, 13) = "error" Then MsgBox "!!! #N/A in ServRendDate !!!"
    Range("M1").Select
    Next
End Sub
 
Цитата
Мария - написал: с одновременной остановкой и сообщением - проблема
Так - конечно. Остановили, до сообщения не дошли. Наоборот надо - сообщить, потом остановить.
Код
If Cells(i, 13) = "error" Then MsgBox "!!! #N/A in ServRendDate !!!": Exit Sub 
 
Спасибо ОГРОМНОЕ!
 
vikttur, Помогите, пожалуйста, еще чуть-чуть.

У меня после макроса с "ошибкой" идет еще один макрос. Он запускается автоматически.
Код
Sub Invoices_BDF_Distr()
    Call BDF_Distr_part1_Invoice_Down
    Call BDF_Distr_part2_Invoice_Formatting
    Call BDF_Distr_part3_ServRendDate
    Call BDF_Distr_part4_Copy_Data
    Call BDF_Distr_part5_Save
End Sub

как сделать так, чтобы при возникновении ошибки, следующие макросы также не запускались?
Код
    Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, "N:N").End(xlUp).Row
    For i = LastRow To 2 Step -1
    If Cells(i, "N:N") = "error" Then MsgBox "!!! #N/A in ServRendDate !!!": Exit Sub
    Next

    Application.ScreenUpdating = True
    
    Sheets("Macro").Select
    Range("A1").Select

End Sub

Sub BDF_Distr_part4_Copy_Data()

    Sheets("Macro").Select
    Range("D14").Select
    Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
 
создайте локальную либо глобальную переменную с типом Boolen и присваивайте ей значение противоположное уже имеющемуся в случае ошибки, а перед запуском очередного макроса проверяйте это значение и соответственно либо запускаете следующий макрос либо выходите совсем из процедуры.
"Все гениальное просто, а все простое гениально!!!"
 
Код
Function RangeHasError(rg As Range) As Boolean
  RangeHasError = Evaluate("SumProduct(--IsError(" & rg.Address & "))") > 0
End Function

используйте так:
Код
if RangeHasError(Range("M1:M100") then end
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, что-то пошло не так :( пишет "Compile error: Expected list separator or)"

оно же так должно выглядеть?
Код
    Function RangeHasError(rg As Range) As Boolean
    If RangeHasError(Range("E:E") Then end
    End Function
Страницы: 1
Наверх