Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Прерывание работы группы макросов при ошибке выполняемого - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Прерывание работы группы макросов при ошибке выполняемого
AndreiSMT Дата: Суббота, 08.03.2025, 14:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

2019
Доброго дня.
Уважаемые форумчане!
Запускаю выполнение группы макросов:
[vba]
Код
Sub GroupMacros()
Call DetectError
Call NextMacros
End Sub
[/vba]
Нужно что бы при ошибке макроса DetectError, макрос NextMacros не выполнялся. Т.е. нужно чтобы ошибка макроса DetectError остановила выполнение всех последующих макросов в макросе GroupMacros.
Макрос DetectError написал не я, и вообще в коде vba я вообще ничего не понимаю.
Помогите пожалуйста.
К сообщению приложен файл: zbook2.xlsb (33.7 Kb)


Сообщение отредактировал AndreiSMT - Воскресенье, 09.03.2025, 14:18
 
Ответить
СообщениеДоброго дня.
Уважаемые форумчане!
Запускаю выполнение группы макросов:
[vba]
Код
Sub GroupMacros()
Call DetectError
Call NextMacros
End Sub
[/vba]
Нужно что бы при ошибке макроса DetectError, макрос NextMacros не выполнялся. Т.е. нужно чтобы ошибка макроса DetectError остановила выполнение всех последующих макросов в макросе GroupMacros.
Макрос DetectError написал не я, и вообще в коде vba я вообще ничего не понимаю.
Помогите пожалуйста.

Автор - AndreiSMT
Дата добавления - 08.03.2025 в 14:53
cmivadwot Дата: Воскресенье, 09.03.2025, 00:31 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 559
Репутация: 102 ±
Замечаний: 0% ±

365
AndreiSMT, Доброй. [vba]
Код
Sub GroupMacros()
    ' Включаем обработку ошибок
    On Error GoTo ErrorHandler
    
    ' Вызываем макрос DetectError
    Call DetectError
    
    ' Если ошибки не было, вызываем следующий макрос
    Call NextMacros
    
    ' Выходим из процедуры, чтобы не выполнять код обработчика ошибок
    Exit Sub

ErrorHandler:
    ' Обработчик ошибок
    MsgBox "Произошла ошибка в макросе DetectError. Выполнение макросов остановлено.", vbCritical
    ' Выходим из процедуры, чтобы не выполнять следующий макрос
    Exit Sub
End Sub
[/vba]
 
Ответить
СообщениеAndreiSMT, Доброй. [vba]
Код
Sub GroupMacros()
    ' Включаем обработку ошибок
    On Error GoTo ErrorHandler
    
    ' Вызываем макрос DetectError
    Call DetectError
    
    ' Если ошибки не было, вызываем следующий макрос
    Call NextMacros
    
    ' Выходим из процедуры, чтобы не выполнять код обработчика ошибок
    Exit Sub

ErrorHandler:
    ' Обработчик ошибок
    MsgBox "Произошла ошибка в макросе DetectError. Выполнение макросов остановлено.", vbCritical
    ' Выходим из процедуры, чтобы не выполнять следующий макрос
    Exit Sub
End Sub
[/vba]

Автор - cmivadwot
Дата добавления - 09.03.2025 в 00:31
AndreiSMT Дата: Воскресенье, 09.03.2025, 13:49 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

2019
cmivadwot, к сожалению ваш код не помогает. NextMacros всё равно срабатывает. :(
 
Ответить
Сообщениеcmivadwot, к сожалению ваш код не помогает. NextMacros всё равно срабатывает. :(

Автор - AndreiSMT
Дата добавления - 09.03.2025 в 13:49
Апострофф Дата: Воскресенье, 09.03.2025, 13:58 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 464
Репутация: 128 ±
Замечаний: 0% ±

Excel 1997
AndreiSMT, вместо Exit Sub поставьте END
Дешево и сердито. Крайняя мера!
 
Ответить
СообщениеAndreiSMT, вместо Exit Sub поставьте END
Дешево и сердито. Крайняя мера!

Автор - Апострофф
Дата добавления - 09.03.2025 в 13:58
Hugo Дата: Воскресенье, 09.03.2025, 14:01 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3803
Репутация: 810 ±
Замечаний: 0% ±

365
Можно в DetectError параметром передавать переменную, там ей задавать значение при ошибке, и далее анализировать до вызова следующего макроса.
Да даже и не параметром, а просто использовать публичную переменную уровня модуля.
Т.к. в файле таких макросов нет - то и всё на этом.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Воскресенье, 09.03.2025, 14:02
 
Ответить
СообщениеМожно в DetectError параметром передавать переменную, там ей задавать значение при ошибке, и далее анализировать до вызова следующего макроса.
Да даже и не параметром, а просто использовать публичную переменную уровня модуля.
Т.к. в файле таких макросов нет - то и всё на этом.

Автор - Hugo
Дата добавления - 09.03.2025 в 14:01
Апострофф Дата: Воскресенье, 09.03.2025, 14:07 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 464
Репутация: 128 ±
Замечаний: 0% ±

Excel 1997
AndreiSMT, не нашел макрос DetectError в вашем файле, потому и ответ выше - наобум получился.
Как выглядят ошибки в макросе DetectError?
От этого и надо плясать.


Сообщение отредактировал Апострофф - Воскресенье, 09.03.2025, 14:15
 
Ответить
СообщениеAndreiSMT, не нашел макрос DetectError в вашем файле, потому и ответ выше - наобум получился.
Как выглядят ошибки в макросе DetectError?
От этого и надо плясать.

Автор - Апострофф
Дата добавления - 09.03.2025 в 14:07
AndreiSMT Дата: Воскресенье, 09.03.2025, 14:15 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

2019
Апострофф, вот же он:
 
Ответить
СообщениеАпострофф, вот же он:

Автор - AndreiSMT
Дата добавления - 09.03.2025 в 14:15
Апострофф Дата: Воскресенье, 09.03.2025, 14:18 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 464
Репутация: 128 ±
Замечаний: 0% ±

Excel 1997
Нет такого макроса (и модуля) в приложенном вами файле.
 
Ответить
СообщениеНет такого макроса (и модуля) в приложенном вами файле.

Автор - Апострофф
Дата добавления - 09.03.2025 в 14:18
AndreiSMT Дата: Воскресенье, 09.03.2025, 14:19 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

2019
Апострофф, люди простите пожалуйста, вот этот файл, и в шапке перезалил.
К сообщению приложен файл: 2390130.xlsb (33.7 Kb)


Сообщение отредактировал AndreiSMT - Воскресенье, 09.03.2025, 14:30
 
Ответить
СообщениеАпострофф, люди простите пожалуйста, вот этот файл, и в шапке перезалил.

Автор - AndreiSMT
Дата добавления - 09.03.2025 в 14:19
Hugo Дата: Воскресенье, 09.03.2025, 16:15 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3803
Репутация: 810 ±
Замечаний: 0% ±

365
AndreiSMT, нужно бы понять что подразумеваете под ошибками.
Потому что вот например вариант в файле
Как вариант - можно добавить (или убрать, уже в файле добавил) ещё строку вот тут:
К сообщению приложен файл: 5122523.xlsb (29.2 Kb)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Воскресенье, 09.03.2025, 16:21
 
Ответить
СообщениеAndreiSMT, нужно бы понять что подразумеваете под ошибками.
Потому что вот например вариант в файле
Как вариант - можно добавить (или убрать, уже в файле добавил) ещё строку вот тут:

Автор - Hugo
Дата добавления - 09.03.2025 в 16:15
bmv98rus Дата: Воскресенье, 09.03.2025, 17:55 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4144
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Есть штатное err.rise
https://learn.microsoft.com/en-us....%3Dtrue

в основной процедуре просто проконтролировать наличие этой ошибки.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 09.03.2025, 17:56
 
Ответить
СообщениеЕсть штатное err.rise
https://learn.microsoft.com/en-us....%3Dtrue

в основной процедуре просто проконтролировать наличие этой ошибки.

Автор - bmv98rus
Дата добавления - 09.03.2025 в 17:55
Hugo Дата: Воскресенье, 09.03.2025, 18:09 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3803
Репутация: 810 ±
Замечаний: 0% ±

365
Ну там уже есть переменная GErrStr, которая имеет значение при ошибке, но оно там есть и после выполнения макросов.
Вникать можно ли это значение сбрасывать... Проще свою добавить.
Хотя вот - достаточно в первый файл добавить строку
[vba]
Код
Sub GroupMacros()
Call DetectError
If Len(GErrStr) Then Exit Sub '<==============
Call NextMacros
End Sub
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Воскресенье, 09.03.2025, 18:11
 
Ответить
СообщениеНу там уже есть переменная GErrStr, которая имеет значение при ошибке, но оно там есть и после выполнения макросов.
Вникать можно ли это значение сбрасывать... Проще свою добавить.
Хотя вот - достаточно в первый файл добавить строку
[vba]
Код
Sub GroupMacros()
Call DetectError
If Len(GErrStr) Then Exit Sub '<==============
Call NextMacros
End Sub
[/vba]

Автор - Hugo
Дата добавления - 09.03.2025 в 18:09
AndreiSMT Дата: Воскресенье, 09.03.2025, 19:50 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

2019
Hugo, большое вам спасибо! Теперь всё работает как надо.
 
Ответить
СообщениеHugo, большое вам спасибо! Теперь всё работает как надо.

Автор - AndreiSMT
Дата добавления - 09.03.2025 в 19:50
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!