Товарищи очень нужна помощь, вообще не могу понять, что с функцией не так?
Ни в одном описании не нашёл ни намёк о подобных проблемах
Ни в одном описании не нашёл ни намёк о подобных проблемах
14.06.2016 16:51:35
И снова здравствуйте
Всё выскакивают проблемы в источнике которых не могу разобраться. В данном случае проблемы с переменной S в функции. Как можете увидеть- она выбрана для каждой ячейки и ссылается на столбец, где стоят числа от 1 до.... 99 (скажем). При этом при пошаговом проходе функции при помощи F8 её значение указывается как 0. Если преобразовать в Variant, то значение Value2 = значению из ячейки, но при этом с расчётом таже проблема. Менял тип на Byte, тоже самое.... Периодически подобная ситуация возникает и с переменной N (исходные значения в таблице покрашены белым)
Изменено: |
|
|
09.06.2016 17:01:15
Sanja написал:
Её в можно как и Sub проходить? а какую ячейку она тогда берёт за основу, или как это делается, можете поделиться ссылкой?
Изменено: |
|||
|
09.06.2016 16:24:51
Естественно, поэтому я дублировал ПРОИЗВОДСТВО _2 и называл ПРОИЗВОДСТВО _3 а потом в одной ячейке 2 на 3 менял и в ней смотрел переменные через MsgBox (совпадение с посчитанными вручную )
Но то что функция работает не везде - впервые вижу.... Можно на соседнем листе параметр Мк в год поменять и появятся пару рассчитанных ячеек, но в целом картина не меняется, алгоритм много раз проходил, проблемы не вижу в упор У меня предупреждение о циклической ссылке вылетело при определённой компановке, ищу причину
Изменено: |
|
|
08.06.2016 15:56:39
После исправления проблемы с часами оставалась ещё одна в исходных данных - расчётном времени операций, убрал их и всё заработало. Спасибо за отзывчивость.
Изменено: |
|||
|
08.06.2016 15:27:53
Ещё немного поработав столкнулся со следующей проблемой, не знаю сможете ли помочь, но надежда умирает последней)
Идея в том, что функция выбирает максимальное время между освобождением станка и приходом детали с предыдущей операции, прибавляет время оброботки и если оно больше времени окончания дня- назначает старт на утро. Вроде всё так и написано, (в итоге в данном случае конец дня в 15:00 а начало в 7:00) но выдаются значения по всей длине дня. --------------- Нашёл 1 косяк- не перевёл часы в нормальный вид и он их днями считал (добавлял 8 дней, а не часов) но всё равно встречается время 1:00 ; 3:00 и подобные...
Изменено: |
|
|
08.06.2016 10:53:41
Снова добрый день.
Никак не могу разобраться почему не считается функция, поэтому прошу Вашей помощи. Вроде бы я в нашёл где возникает ошибка, но не могу понять почему и собственно не могу исправить. Прикладываю файл с примером, в нём 2 функции, проблемы у ПРОИЗВОДСТВО_2 Ячейка на листе с этой формулой отмечена цветом, все переменные уже расставлены. Дополнительно поставил 2 MsgBox с переменными, поидее значения в данном случае должны быть одинаковыми, поскольку Тсо выбирает большее из Тпд и Тко Тко тут =0.
Изменено: |
|
|
08.06.2016 10:17:43
Вот сам код, в конце и вызывал Msg Box
(Через почту пересылал, не хочет как код показывать, а через блокнот срывает кодировку)
Пока сам попробую разобраться, но если у кого какие идеи будут- чиркните уж )
Изменено: |
|||
|
08.06.2016 10:01:26
при вызове MsgBox DtA возникает окно с нулями (00:00:00), кликаешь ок, а после сразу вылезает окно с рассчитаным(верным) значением в формате 08.06.16 9:45 (например) MsgBox то один.... да и переменную одну запрашиваю проблема в том, что для следующего расчёта он почему то из переменной 00:00:00 берёт
Изменено: |
|||
|
07.06.2016 17:07:53
Так пожалуй и происходит.
У меня есть самозаполняемая матрица, в которой расчитана только первая строчка, дальнейшие вычисления производятся исходя из констант(общих и в начале строки) и значений в первой строке. Тоесть утрировано есть входной параметр в столбце А, строка с данными (дата и время) в В1:М1 и начиная со 2й строки начинаются эти пользовательские функции. Исходя из параметров строки сверху и ячеек слева идёт расчёт каждой конкретной ячейки. При этом OFFSET для каждого конкретного случая по своему расчитываетя. Тоесть чтобы понять к какой ячейке обращаться функция должна знать свой адрес и исходя из него понимать к какой ячейке делать запрос. Механизм запроса тоже зашит в самой функции и уже отлажен, не получается только достать данные из ячеек для обработки. Понимаю что возможно стоило бы через массив попробовать решить проблему и потом его выложить на лист, но навыков пока не хватает, приходится изголяться. Кстати в этой функции у меня 9 переменных задаваемых в шапке формулы и 5 промежуточных переменных, поэтому сложно конкретно описать весь принцип действия, да и думаю что никому не интересно. В общем расчитывается когда можно произвести обработку N-ной детали в N-ной части тех процесса исходя из времени обработки и времени работы оборудования, а также партий запуска. Исходя из всего этого- я уже знаю значения для OFFSET для каждого случая, а достать это значение и поместить в переменную не могу
Изменено: |
|
|
07.06.2016 16:35:51
R (T в вашем случае) это адрес ячейки в которой находится функция.
Если я выбираю её вручную- вылетает ошибка о циклической ссылке, поскольку функция ссылается на себя. Также дополнительная задаваемая переменная усложняет процесс введения функции. Моя задача в том, чтобы можно было делать отклонение от координат ячейки с функцией, выбирать значения в этих ячейках и работать с ними далее. в данном случае только на экран вывести.
Изменено: |
|
|
07.06.2016 16:13:28
На сколько понял, Range я устанавливаю в переменную R,
если проводить проверку MsgBox, то выдаёт верные значения исходной ячейки в формате $A$1 а со смещением ввеерх/лево с "-" в курсе, извините, попутал. я как раз и пытался использовать переменную как Range, но толи в синтаксисе беда, толи ещё что. Ну или как присвоить значение адреса для Range из переменной?
Изменено: |
|
|
07.06.2016 15:58:21
Добрый день.
Нужна помощь в написании кусочка макроса, никак не получается сформулировать верно. Есть пользовательская функция, которая обрабатывает как константы, так и данные из матрицы вокруг себя. Задача в том, чтобы при определённых условиях мой макрос брал значения из соседних ячеек. В данном случае рассмотрим вариант смещения на 1 строку выше относительно места написания функции. Понимаю, что пишу какую-то ерись, так что сильно не бейте )
Изменено: |
|||
|
29.04.2016 06:16:21
Спасибо, но мне пожалуй нужно более абстрактное решение, которое можно массово и быстро в различных книгах использовать.
К несчастью в месяц создаётся с десяток таких сетевых файлов, которые в основном через пару месяцев теряют актуальность, или коренным образом перестраиваются. (используются они для сбора статистики под конкретные проекты) Раз на прокрутку сделать нереально, может тогда со списком действий, отслеживаемых макросом подскажете. Я подумал что наверное нужно добавить: - изменение размеров окна - сохранение - печать Чтобы ещё в таком роде подошло? dtStep я планирую 10 минут в дальнейшем выставить И ещё 1 вопрос, на сколько я выяснил изменений в VBA с 2003 серьёзных не было, так что в нём этот макрос должен работать? А то у нас периодически третий офис встречается.
Изменено: |
|
|
28.04.2016 17:21:50
Добрый вечер.
Недавно начал изучение макросов, так что не силён ещё, есть задача- автоматически закрывать документ, если им не пользуются N времени. (некоторые засранцы открывают посмотреть файл в сети и не закрывают/выключая комп сваливают с работы, или на обед, причиняя уйму проблем) Макрос запускается при открытии файла и отслеживает следующие параметры : - выбор ячеек - изменение ячеек - смена листа не работает только пролистывание страницы (нужно хотя бы вверх/вниз), наверняка ошибка синтаксиса.... Если будут ещё предложения по расширению списка параметров- буду безмерно благодарен (люди ж в нём работают, печально будет, если он закроется в процессе ) Таймер пока стоит на 20 секунд, будьте внимательны!
Изменено: |
|||
|