Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2011, 17:35   #1
NoLL
Пользователь
 
Регистрация: 11.11.2010
Сообщений: 24
По умолчанию On Error goto в цикле

Доброго времени суток!
Появилась неожиданная проблема.
Оператор On Error goto, как и If Error Then GoTo - не срабатывает при выполнении цикла.
Тоесть когда первый раз возникает ошибка он срабатывает, но потом при следующем витке когда опять попадается данная ошибка, макрос выдает табличку с кодом ошибки "91".

Код:
Sub Alg() 
file0 = "file for Filel.xls"
    Windows(file0).Activate
    Sheets("Лист1").Select
    Cikl = Cells(3, 6)
    hh = Cells(6, 6)
    Windows(file0).Activate
     Sheets("Лист1").Select
     
    For i = 1 To Cikl
    
    Windows(file0).Activate
    Sheets("Лист1").Select
    ActiveSheet.Calculate
    Fm = Cells(i + 1, 2) & ".xls"
    
    Fm_Files = Cells(4, 6)
    Fm_FilesP = Cells(5, 6)
    
    Sheets("Лист1").Select
    Cells(4, 6) = Fm
    Columns("A:IV").Calculate
    
   
    
    Workbooks.Open Filename:=Fm_FilesP, UpdateLinks:=0
Sheets("Лист1").Activate
Range("A9:A150").Select
    On Error GoTo jumptoerr
Cells.Find(What:="0", After:=ActiveCell, LookIn:=xlValues, lookat:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False).Activate
        ActiveCell.Select
            Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ClearContents
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

jumptoerr:
    
    Range("c9").Select
    Selection.End(xlDown).Select
    Selection.End(xlDown).Select
    Selection.ClearContents
    Selection.End(xlUp).Select
    zz = ActiveCell.Address
    n = 1
    ActiveCell(2, n).Select
    yy = ActiveCell.Address
    Range(yy).FormulaLocal = "=СУММ(" & zz & ":C10)"
    kk = ActiveCell.Value
    
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
    ActiveWindow.Zoom = 100
    Range("A2:F2").Select
    
    Windows(file0).Activate
    Sheets("Лист1").Select
    Cells(i + 1, 9).Activate
    ActiveCell.FormulaR1C1 = kk
Next i
     Windows(file0).Activate
    
End Sub
Ошибка возникает когда макрос ненаходит "0". Тоесть он может быть или отсуствовать. Если он есть выполняется определенная процедура, а если нет то он бы проскакивал эту процедуру и работал дальше
Как сделать, что бы макрос пры возникновении ошибки, пропускал ее и прыгал на нужную мне линию в коде?

Последний раз редактировалось NoLL; 10.01.2011 в 17:39.
NoLL вне форума Ответить с цитированием
Старый 10.01.2011, 17:50   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А эта строка не спасает макрос

Код:
jumptoerr:
Err.Clear
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 10.01.2011, 18:07   #3
NoLL
Пользователь
 
Регистрация: 11.11.2010
Сообщений: 24
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
А эта строка не спасает макрос

Код:
jumptoerr:
Err.Clear
Не помогло. Та же беда.
NoLL вне форума Ответить с цитированием
Старый 10.01.2011, 18:39   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
   On Error GoTo jumptoerr
Cells.Find(What:="0", After:=ActiveCell, LookIn:=xlValues, lookat:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False).Activate
        ActiveCell.Select
на этот поменяйте

Код:
 
 Set rng = Range("A9:A150").Find(What:="0")
 If rng Is Nothing Then GoTo jumptoerr
 rng.Select
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 10.01.2011, 19:07   #5
NoLL
Пользователь
 
Регистрация: 11.11.2010
Сообщений: 24
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Код:
   On Error GoTo jumptoerr
Cells.Find(What:="0", After:=ActiveCell, LookIn:=xlValues, lookat:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False).Activate
        ActiveCell.Select
на этот поменяйте

Код:
 
 Set rng = Range("A9:A150").Find(What:="0")
 If rng Is Nothing Then GoTo jumptoerr
 rng.Select
Спасибо огромное! После того как вставил параметры поиска все отлично заработало!
NoLL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оператор GoTo Dalokoshka Помощь студентам 6 10.10.2010 15:22
goto Serg12 Помощь студентам 12 14.06.2010 17:31
goto gagen Общие вопросы C/C++ 18 05.04.2010 13:24
GoTo Diego__ Microsoft Office Word 3 13.03.2010 19:55
Ищу причину ошибки: Error in loading DLL, она же Error 48. hozpraktik Microsoft Office Excel 1 19.11.2009 12:39