237 / 148 / 41
Регистрация: 26.01.2019
Сообщений: 545
|
||||||
27.02.2019, 23:38 | 121 | |||||
Фактически это проблемой/багом не является, но для меня было некоторое удивление, что в VBA есть ограничение на вложенные выражения (...(...(...(...)))). MS называют это "Слишком сложное выражение". Уж от VBA такого не ожидал.
Подозревал что вся проблема в большом количестве аргументов возводимых в степень. Заменил их на переменные. И тогда стала появляться ошибка Переполнение. Решение такого безобразия - разбивка выражения на отдельные части. Для матерых пользователей, наверное, это не будет новостью. Надеюсь, начинающим пригодится Кликните здесь для просмотра всего текста
0
|
27.02.2019, 23:38 | |
Ответы с готовыми решениями:
126
Готовые решения, примеры и рекомендации начинающим на WPF [Элд Хасп] Обсуждение темы "Готовые решения, примеры и рекомендации начинающим на WPF" Проблемы с алгоритмом решения задачи Бывший профессионал cs 1.6 просит решения проблемы |
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
28.02.2019, 01:44 | 122 | |||||
GeoCod, работает, но в 34 строке Х уже не тот, который использовался для вычисления sinX2,sinX4,sinX6.
Что за задача, в которой потребовались такие длинные выражения? Это записывается как
1
|
237 / 148 / 41
Регистрация: 26.01.2019
Сообщений: 545
|
|
28.02.2019, 08:09 | 123 |
Преобразование геодезических координат по ГОСТу
Действительно. Т.к. это только одна из формул преобразования координат, в процессе "обрезки" и подготовки кода для форума упустил этот момент. Но суть осталась той же. Да, надо было сказать что X и L2 - тестовые данные. По факту они также вычисляются. Спасибо за подсказку. Проскакивала мысль использовать e, но... До этого не приходилось оперировать такими числами в коде, поэтому написал в более привычном виде ))
0
|
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|||||||||||
19.04.2019, 17:42 | 124 | ||||||||||
Excel: Мастер функций подавляет точки останова и оператор Stop в пользовательской функции
Пишем простейшую функцию, вставляем оператор Stop и Msgbox.
При выделенной ячейке с функцией вызываем Мастер функций (Shift+F3) - появляется MsgBox, причем 2 раза! При изменении аргумента в поле ввода Мастера опять 2 раза появляется MsgBox. И вот почему 2 раза: в окне Мастера значение функции отображается дважды - под значениями аргументов и внизу окна, после надписи "Значение:". Видимо, эти две части окна делали разные люди, и каждый написал свой вызов функции Можно заметить, что после первого появления MsgBox меняется значение функции под аргументами, а после второго - внизу. Если написать функцию, которая возвращает новое значение при каждом вызове
Вывод: не пользуйтесь Мастером функций для отладки пользовательской функции. При обычной вставке функции в ячейку точки останова и оператор Stop работают нормально.
1
|
19.04.2019, 19:31 | 125 |
Казанский, Спасибо за инфо!
А вот как происходит расчет функции Rnd, в .xll (на С++) Шаг/Итерация 1 - Выбираем функцию из списка, видим что рендомное значение посчиталось и равно 4827 (см.рис.1) Шаг/Итерация 2 - В библиотеки вторая итерация в этой же функции, теперь рендомное значение равно 5436 (см.рис.2) Шаг/Итерация 3 - Начинается самое интересное! Библиотека отработала, Excel дал возможность ввести данные. Вводим значение в функцию =1, видим в первом результате значение 4827 (первая итерация), во втором результате 5436 (вторая итерация), а в самой библиотеки видим новое (третье) рендомное значение 32391 (см. рис.3) Шаг/Итерация 4 - автоматически происходит следующий шаг в точке останова с новым рендомным значением в библиотеке 14604. т.е. это четвертая итерация (напомню, Excel пока недоступен (кроме ввода единицы), это расчет идет в библиотеке. Видим результат функции уже 32392 (это наше предыдущее 32391+1), второй результат 5436 в мастере (пока без сложения) (см. рис. 4) Шаг/Итерация 5 - заканчиваем ввод формулы в Excel, видим ужу новое рендомное значение в библиотеке 15724 (пятое), в мастере уже не видим, он закрылся. (см.рис.5) Шаг/Итерация 6 - итоговый результат функции 15725 - наше последнее рендомное пятое значение 15724 плюс введенная единица. (см.рис.6) При вводе данных в саму формулу, без мастера, итерация в библиотека одна (рис.7-8) ВЫВОД: Итераций через мастер функций в Excel для библиотек .xll еще больше, далее аналогично вышесказанному - работать через Мастером функций не рекомендуется.
2
|
19.04.2019, 23:29 | 126 |
Добавлю к выводам: видимо мастер функций в Excel работает одинаково и с VBA транслятором/кодом и библиотеками СОМ и XLL, вызывая несколько раз функцию. Хоть эта информация не относится напрямую к теме VBA, посчитал, что будет интересен этот момент.
0
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
|
|
26.09.2022, 23:27 [ТС] | 127 |
Прям не выдержал!
картина первая, хорошая: стартуемся с какой-то функции ... отлично! бегаем, работаем. потом ловим кетч в методе DeforeClose на закрытии книги и - все хорошо! в теле функции весь код жив! - переменные, объекты - бери, пользуй ... картина вторая, плохая: стартуемся как и выше, потом ловим кетч, к примеру на какой-то селекте прямо в "ЭтаКнига", бегаем там по циклу на выходя, отдаем DoEvent ... работаем дальше и ловим кетч в методе BeforeClose на закрытии книги и - все плохо! весь код сдох, все ушли на базу - ни переменных, ни объектов - ни-че-го! пустое поле! все NULL Не все системные события друг на друга так реагируют
0
|
26.09.2022, 23:27 | |
26.09.2022, 23:27 | |
Помогаю со студенческими работами здесь
127
USB устройство, проблемы и пути решения. Проблемы с выводом решения на стандартный поток Прошу помощи решения проблемы в перекрестном... Каковы возможные решения проблемы рывков в эмуляторе? ФР Electrolube PRP, проблемы, подводные камни, решения BDE - ошибки и решения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |