Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: Пред. 1 2
RSS
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Цитата
chesas написал: ПОЧЕМУ ОНИ ПОЯВЛЯЮТСЯ?
Они будут появляться столько раз, сколько этих функций вставлено на листе, пока не доберетесь до той, для которой этот останов включен
Согласие есть продукт при полном непротивлении сторон.
 
Цитата
chesas написал:
Так вот ПОЧЕМУ ОНИ ПОЯВЛЯЮТСЯ? Или у меня какие-то настройки не те?
Вам же сказали дело не в настройках , у вас код "кривой". Напишите п правилам и не будет ошибок. Прогоните функцию построчно, и посмотрите на каком этапе вылетает окно и по какому условию.
"Все гениальное просто, а все простое гениально!!!"
 
Это только у меня так или ещё у кого-нибудь есть такое же?
 
Цитата
Sanja написал:
Они будут появляться столько раз, сколько этих функций вставлено на листе, пока не доберетесь до той, для которой этот останов включен
Согласие есть продукт при полном непротивлении сторон.
 
Функция на листе одна.
И подчёркиваю на первой строчке кода стоит останов. Как редактор минует его и почему?
 
Цитата
chesas написал:
ПОЧЕМУ ОНИ ПОЯВЛЯЮТСЯ?
Вы же сами пишите:
Код
MsgBox (стрСообщение)

Потому и появляются.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
Nordheim написал:
Напишите п правилам и не будет ошибок. Прогоните функцию построчно, и посмотрите на каком этапе вылетает окно и по какому условию.
Что значит по правилам? Мне интересно до пошагового прогона - почему? Я то и хотел проганяь пошагово, но непонимаю откуда лишние сообщения.
 
Мне кажется тут какой то троллинг, написать черте что, а потом спрашивать почему это черте  что не работает, или работает криво.  8-0 И никого не слушая винить , что что то случилось с VB.
Изменено: Nordheim - 19 Апр 2019 16:36:06
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
bedvit написал:
Потому и появляются.
А останов?
 
chesas,
Цитата
chesas написал:
выводится окно с предупреждением об ошибке, да ещё и неоднократно. Я не понимаю как и почему это происходит - ведь я только ввёл исходные данные и сразу же хочу остановить выполнение остановом
А, теперь понятно - Вы используете Мастер функций. Он ведь отображает результат вычисления функции, а для этого он вызывает функцию при запуске, а также при любом изменении аргументов в полях ввода. И оказывается, что Мастер функций подавляет точки останова, и оператор Stop тоже. Я этого не знал, потому что никогда не пользовался Мастером функций для отладки своих функций, и, как оказалось, не зря :) При обычной вставке функции в ячейку точки останова и Stop работают нормально.
Изменено: Казанский - 19 Апр 2019 16:37:47
 
Цитата
Nordheim написал:
Мне кажется тут какой то троллинг, написать черте что, а потом спрашивать почему это черте  что не работает, или работает криво.  
Спасибо, так проще всего.
 
Цитата
Казанский написал: И оказывается, что Мастер функций подавляет точки останова, и оператор Stop тоже
О как! Век живи, как говорится...
Согласие есть продукт при полном непротивлении сторон.
 
   Большое спасибо Казанскому. Но полного удовлетворения нет - а как же мне быть? Подскажите пожалуйста.
 
Цитата
chesas написал:
Что значит по правилам?
это значит, что написанный Вами код должен быть :
1. понятен интерпретатору VBA,
2. выполнение этого кода должно в точности решать проблему, для решения которой этот код был задуман и написан
3. все должно происходить с приемлемой производительностью
выполнение 2-х первых условий - ОБЯЗАТЕЛЬНО!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
chesas написал: а как же мне быть?
Отладку кода проводить без использования Мастера функций
Согласие есть продукт при полном непротивлении сторон.
 
А можно чуть поподробнее, я так никогда не делал.

Цитата
Ігор Гончаренко написал: 2. выполнение этого кода должно в точности решать проблему,
  Проблема- то не в коде...
 
Цитата
chesas написал: А можно чуть поподробнее, я так никогда не делал.
Вставляете Вашу функцию непосредственно в ячейку, не используя Мастер. Ваши точки останова и прочие 'Stop' в коде сработают
Согласие есть продукт при полном непротивлении сторон.
 
Цитата
chesas написал:
А останов?
Останов работает. Работайте в отладчике.
«Бритва Оккама» или «Принцип Калашникова»?
 
Огромное Всем спасибо. наконец-то понял. :)  
Изменено: chesas - 19 Апр 2019 17:01:04
 
Цитата
chesas написал:
Проблема- то не в коде...
вот теперь как раз и посмотрите в коде проблема или нет
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
chesas, здесь вам пишут здравую мысль, о том что нужно пересмотреть архитектуру вашей программы, т.к. функция должна возвращать результат и не прерывать работу приложения. Если в функции ошибка, она возвращает код ошибки или описание ошибки. Но никаких сообщений. Вы представьте файл с вашими формулами откроет пользователь и ему вывалится тысяча сообщений из каждой копии функции об ошибке. Я думаю он не будет щелкать тысячу раз сообщение, просто закроет файл и посчитает что все сломалось. Так не практикуется. К примеру каноничный ВПР() тысячу раз не выводит сообщение, что данные в формуле кривые, а выводит код/описание ошибки.
Изменено: bedvit - 19 Апр 2019 17:13:59
«Бритва Оккама» или «Принцип Калашникова»?
 
Вы абсолютно правы. Можно ли как-нибудь не просто выводить код ошибки, а так, чтобы при желании был виден её характер?
 
Вы можете написать в  результат функции понятное для пользователя обозначение. Вплоть до текстового.
«Бритва Оккама» или «Принцип Калашникова»?
 
Действительно - "Все гениальное просто, а все простое гениально!!!". Большое спасибо.
 
Описал "находку" подробно и с картинками тут: http://www.cyberforum.ru/vba/thread796990.html#post13507381
 
Казанский, спасибо! Добавил туда же наблюдение работы мастера функций в Excel для библиотек .xll (так же с картинками)
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: Пред. 1 2
Читают тему (гостей: 1)
Наверх