|
9909 / 3931 / 742
Регистрация: 11.10.2011
Сообщений: 5,911
|
||||||
| 27.03.2013, 13:19 | ||||||
|
StepInLik, это не баг.
Для модальной формы код должен выглядеть примерно так-
1
|
||||||
| 27.03.2013, 13:19 | |
|
Ответы с готовыми решениями:
126
Готовые решения, примеры и рекомендации начинающим на WPF [Элд Хасп] Обсуждение темы "Готовые решения, примеры и рекомендации начинающим на WPF" Проблемы с алгоритмом решения задачи |
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
|||||||||||
| 16.04.2013, 16:26 [ТС] | |||||||||||
|
А вы знали, что evaluate вызывает вашу функцию 2 раза?
создаем модуль, пишем:
вызов вызов в результате, все ваши оптимизации на скорость - на смарку ... а протоколирование на ZZZ (как пример) - в дублях.
2
|
|||||||||||
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
| 16.04.2013, 16:35 | |
|
Да, неожиданно. А так: Evaluate "ZZZ()+ZZZ()" - тоже 2 раза,
так: Evaluate "ZZZ()+ZZZ()+ZZZ()" - 3 раза.
0
|
|
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
|
| 16.04.2013, 18:30 [ТС] | |
|
(описанные ниже проблемы возникают редко, мы встречались с ними на x64 разрядных корпоративных версиях офиса)
1. Допустим, что формула некоторого правила условного форматирования будет выглядеть как "=И(A1="нет";A2="да")". Написанная нами строка формулы условного форматирования возвращается (через .FormatConditions.Item(i1&).Formula1) с наименованиями формул в русской локализации т.е. "И" и "ИЛИ" (в виде "=И(A1="нет";A2="да")"). Так вот, если строку условного форматирования мы получили (как показано ранее) в русской локализации, иногда передать ее обратно (.FormatConditions.Add Type:=CLng(dType$), Formula1:=[формула]) нужно уже в английской локализации (т.е. "=AND(A1="нет";A2="да")"). 2. Допустим, для создания правил условного форматирования мы создали некоторую функцию "fФункцияСозданияПравилаУсловногоФормати рования" И если мы запускаем функцию "fФункцияСозданияПравилаУсловногоФормати рования" через IDE процедурой запуска функции, то все работает как должно. Строку формулы передаем как "=AND(A1="нет";A2="да")". А вот если мы запускаем ту же функцию через evaluate("=fФункцияСозданияПравилаУсловн огоФорматирования()"), то передавать в .FormatConditions.Add иногда надо ту же формулу, только уже с заменой ";" на "," - т.е. ""=AND(A1="нет",A2="да")"
0
|
|
|
9909 / 3931 / 742
Регистрация: 11.10.2011
Сообщений: 5,911
|
|||||||||||
| 03.10.2013, 18:21 | |||||||||||
В первом случае это Integer, во втором - Long. Еще вариант, но без потери точности, как при 255.001*400
2
|
|||||||||||
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
||||||
| 22.10.2013, 14:08 [ТС] | ||||||
|
Открываем чистую книгу. Делаем все как написано в qwe1(форму, мультипейдж, лейблы)
0
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
| 24.10.2013, 11:14 | |
|
0
|
|
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
|
| 24.10.2013, 15:55 [ТС] | |
|
Не стал разбираться с вашим файлом. Во вложении глючный.
0
|
|
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
||||||
| 25.10.2013, 17:51 [ТС] | ||||||
|
1. создаем любой эксельный пустой файл - я делал xlsb. переименовываем открытый лист в "qwe". сохраняем, именуем.
2. создаем еще одну книгу и пишем:
4. ставим точку останова на ".Workbooks(dИмяФайла$).Save" 5. ставим точку останова на последней строке "End With" 6. запускаем. Наблюдаем в IDE: останавливаемся на первой точке останова. в оснастке списка файлов у нас висит наш первый именнованный на "dПутьФайла$=" файл. правильно! жмем F5 останавливаемся на второй точке останова. в оснастке списка файлов у нас висит наш первый именнованный на "dПутьФайла$=" файл. НЕ правильно! (мы предыдущей строкой закрываем этот файл! ".Workbooks(dИмяФайла$).Close") а он продолжает висеть! что удалось выяснить: если закомментить "For Each Ws In .Worksheets" - бага нет. ... это вроде как напоминаем беньджинг на Ws использования объекта, поэтому, эксель закрывает файл для пользователя, но держит внутри себя. ан нет! - комментим "For Each Ws In .Worksheets" и открываем "'Set Ws = .Worksheets("qwe")" проверяем! - на второй точке останова файл успешно исчезает в списке! это о том, что какие-то странности с For Each в экселе. что-то он там не чистит или как-то уж жестко что-то бейнджит и не отдает (а потому не отпускает объект(счетчик использования переменной не обнуляется)). P.S. что интересно, если разместить в первом файле код, то на второй точке останова (End With) эксель видит весь этот код. а вот свойства листов уже нет ... фантазию последствий можно развить серьезную!
0
|
||||||
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
||||||||||||||||
| 29.10.2013, 15:39 [ТС] | ||||||||||||||||
|
1. Создаем 1й файл ... и как-то его именуем. На первом листе размещаем ActiveX CheckBox(это даже не важно в плане объекта).
На этом же(первом) листе пишем код:
2. Создаем второй файл, пишем код:
Запускаем. Наблюдаем: "Ошибка деления" на строке ".Range("A1") = "+"" - (O!) - второго файла! ... не сохраняя закрываем первый файл(чтобы ActiveX объект остался на листе) из кода второго файла удаляем строчки:
Вывод: при удалении объектов с листа у Экселя как-то подозрительно сносит крышу.
0
|
||||||||||||||||
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
||||||
| 21.11.2013, 12:32 [ТС] | ||||||
|
Объединяем A1:C1. Пишем в этой объединенной ячейке "Total".
Выделяем столбец A Устанавливаем правило условного форматирования "Форматировать только ячейки, которые содержат": если значение ячейки больше 3, то красим ячейку желтым цветом. ок, ок, ок. Покрасилась объединенная ячейка. Как и должно быть. ... удаляем правило. Объединенная ячейка подкраску потеряла. А теперь! Отменяем последнюю операцию. и видим, что подкрасилась не вся объединенная ячейка, а лишь ее первые 2 столбца, т.е. диапазон A1:B1. Пока не заставить обновить область этой ячейки ... Мелочь, а приятно. (x64 2010) Добавлено через 31 минуту Мелочи, мелочи ... Если при записи макроса при создании условного форматирования сначала нажать "Применить", а не "Ок", то макрос ничего не запишет. Поправьте меня, если с т.зрения пользователя все так и должно быть. Добавлено через 5 минут Наболело. Красим ярлычок в какой-то цвет. Записываем макрос "удаления цвета ярлычка".
Добавлено через 24 минуты напоследок. Ставим на лист ActiveX: будь то ListBox, будь то CheckBox - не важно для красоты, ListBox можно заполнить Поперек, а луше, да - лучше прям под ListBox ставим курсор и жмем закрепление областей на ячейку. и ловим глюки. Пытаемся поскроллировать(не обязательно) области и посмотреть, что Excel не только не дает выделить элементы ListBox'а, но и не обновляет его части, попавшие в другие области. При том, что со своими "Элементами обновления форм" он ведет себя совершенно корректно. Не понятно, почему нельзя было определять активность(хоть какую-то) пользователя со сторонним объектом и генерить обновление всех областей этого объекта. Добавлено через 17 часов 59 минут Мелочи. Если за группируемой областью (внизу или справа) стоит скрытая область (строка или столбец), то значка "плюсик" не будет видно. Очевидно, что функциональность сгруппированной области не теряется, но ... есть пользователи, которые приходят в состояние шока "... ой, а что мне делать?! у меня плюсика не видно!!! ..." ... и согласитесь, поведение пользователя логично. зачем же этот несчастный "плюсик" тогда делать, если его не показывать?!
0
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 22.11.2013, 15:35 | ||||||
|
Нашел интересное несоответствие при выделении диапазонов вручную и программным путем. Обнаружить его можно следующим образом:
Aksima
1
|
||||||
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
|||||||||||||||||||||
| 22.11.2013, 20:07 [ТС] | |||||||||||||||||||||
|
Объяснить так и не смог. Причина где-то слишком глубоко в архитектуре самого Excel'я.
Если кто сможет разобраться и сделать какое-то внятное предположение - буду благодарен. (далее важно полное соответствие всех действий ниже описанным. и СТРОГО никаких других.) Итак, КВЕСТ: 1. в отдельном приложении (Excel.exe) экселя cоздаем новую книгу (в этом приложении не должно быть открыто никаких других книг) 2. оставляем только "Лист1". остальные удаляем 3. в A1 этого листа пишем формулу ="qwe". выделяем A1 и всегда оставляем ее выделенной (больше не трогаем!) 4. в коде "Лист1" пишем:
8. в A1 этого листа пишем формулу ="qwe". выделяем A1 и всегда оставляем ее выделенной (больше не трогаем!) 9. на лист кидаем объект ActiveX - CheckBox. просто кидаем и больше ничего не делаем. (другие объекты не пробовал) 10. в коде листа пишем:
12. СТРОГО: закрываем и книгу(с сохранением в xlsb) и эксель // P.S.во вложении файл с состоянием всех выше описанных действий 13. открываем новое приложение. закрываем пустую книгу и открываем нашу 14. открываем лист "!" (через "показать скрытый лист") 15. перетягиванием(с Ctrl) из него создаем новый лист и переименовываем его в "Bulk" 16. лист "!" скрываем (остается открытыми "Лист1" и "Bulk") 17. переходим в код и по А5 запускем с "Лист1" функцию qwe ... все, Excel снесло крышу: 1. т.к. остался один "Лист1", то в нем видим в ячейке A1 (в строке формулы) постоянное монотонное мерцание - он постоянно ее перерисовывает 2. постоянная загрузка процессора экселем (% будет зависить от вашего проца - это м.быть и 100% и 50% и 25% ...) 3. пытаемся закрыть книгу. все хорошо. книга закрылась. но ... вот загрука проца - как была, так и осталась. 4. и само приложение само теперь не закрывается ... - только жестко, снятием приложения! приз: +5 к опыту и полному недоумению любые несоответствия действий могут привести к тому, что "фокуса" не будет. с именами можно поиграться, но вот с деструктором пустого класса - уже нет. код оптимизирован до минимума многими сотнями и сотнями вариантов запуска ... есть ОЧЕНЬ смутные предположения, что: 1. при размещении объектов на листе, они как-то очень странно влияют на его уничтожение. возможно что-то остается висеть и после их формального удаления 2. при копировании листов, копируются они не очень чисто ... и ... размещенные сторонние объекты в дальнейшем сохраняют "призрачную" связь 3. ... все слишком и слишком смутно Не понятно: 1. Какую роль играет пустой класс с пустым конструктором. при его удалении или замене "фокус" пропадает. 2. ... начал писать и понял, что писать бесполезно ... т.к. непонятно совершенно ничего!!! (по мотивам 2010 64x экселя ... кто попробует в других версиях - пожалуйста, отпишитесь)
0
|
|||||||||||||||||||||
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
||||||
| 26.11.2013, 13:51 [ТС] | ||||||
|
1. Открываем новую книгу.
2. На том листе, на котором пишем далее формулы, вставляем код:
3. в A2 пишем ="qwe" 4. в A3 пишем ="qwe" & A2 5. запускаем qwe ... встаем на Stop и переходим на лист 6. выделяем A3, F2, Enter 7. выдеяем A1 и нажимаем "стрелочку вниз, которая раскрывает строку формулы (справа от строки формулы)" и видим в A1: ="qwe" & A2 (варианты проявления подобного глюка есть и другие ...) не понимаю, неужели было сложно протестить такие элементарные вещи перед выпуском продукта, которым пользуются миллионы и миллионы людей!!!
0
|
||||||
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
|
| 28.11.2013, 19:02 [ТС] | |
|
продолжаем добрую традицию ...
Сегодня вновь невероятное сочетание операторов и компонентов кода, которые дают эксепшн. Кода слишком много для публикации. Поэтому, кому интересно, смотрим архив во вложении. Скажу для затравки, что это некоторое очень тонкое и странное сочетание программного кода, в котором даже удаление элементарного оператора присвоения совершенно нигде не используемой переменной класса приводит к тому, что "фокус" не появляется. Итак, КВЕСТ: 1. Распаковываем архив 2. Открываем "ЗапускаемыйФайл.xlsb" и правим в qwe() значение dПутьФайлаСФормой$ = "ПроверяемыйФайл.xlsb" на полный путь к файлу с формой. 3. Запускаем qwe() по F5 ... код остановится на Stop в "ЗапускаемыйФайл.xlsb" 4. (видим в оснастке Project Explorer'а в IDE) ... да, файл "ЗапускаемыйФайл.xlsb" действительно открылся и почистился (модули пусты, как и должно быть ... и продолжают висеть(как это и было описано в этой теме, одним из постов ранее)) 5. но ... в работе кода открываемого файла "ПроверяемыйФайл.xlsb" не участвует форма ... это не правильно 6. поэтому, мы пытаемся двойным кликом перейти на нее ... и, чудо! все компоненты файла в оснастке IDE перестроились и удалились все компоненты, которые только что висели! а самое главное! остановился интерпретатор! и останова(выполнения кода) на строке Stop уже нет! почему?! не знаю ... есть ощущение, что ВОТ ПРИ ТАКОМ КОДЕ (ни строкой меньше!) при переходе на форму у Excel'я сносит крышу и он полностью переинициализирует какую-то собственную архитектуру и архитектуру интерпретатора. и ведь в коде-то ничего совершенно противозаконного нет ... обидно
0
|
|
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
|
| 09.12.2013, 11:42 [ТС] | |
|
В продолжение темы Сравнение стоимостей.
Шока нет. Все логично. Однако, есть некоторые странности. Так, - a = [A1] работает в 3 раза медленнее a = Range("A1") - with практически не дает прироста - можно игнорировать - lCase работает быстрее uCase - DoEvents ... нет слов! отжимает так, что мало не кажется! - как и ожидалось - скорость функции зависит не только от количества операций, но и от ее рамера! и может быть узким местом при серьезных скоростных требованиях - интересно и то, что "Goto в обе стороны" чувствительно быстрее "GoSub + Return" - For - существенно быстрее любого другого цикла - и наконец!!! Long быстрее Integer и Dim Long аналогичен использованию "& без объявлений" - во вложении другие вкусности P.S. Функции вызовов во вложении стоят только в строках 28, 29 и 36, 27 т.к. файл был пересчитан и чтобы не слетели ранее насчитанные данные - вставлены значением ... Среда и офис - 64х, памяти навалом, камень i3-2100 1. Велкам с критикой! 2. Описывать структуру не стал - по формулам (кто захочет) разобраться - минутное дело. 3. Продолжение будет.
0
|
|
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
|||||||||||
| 11.12.2013, 15:11 [ТС] | |||||||||||
|
1. создаем пустую книгу
2. пишем на листе код:
4. преходим в эту книгу и удаляем этот лист 5. сохраняем и закрываем эту книгу 6. открываем эту книгу 7. в IDE видим 2 листа типа "ЭтаКнига" ... с единой ссылкой на класс обработчик этого типа Помощь в поиске оказана anny05. Добавлено через 3 часа 38 минут 1. берем чистый лист. 2. встаем на C5 3. выделяем строчки с 5 по 20 4. скрываем выделенное 5. ползунок правого скролла плотно прижат к верху (вертикальной) линейки 6. нажимаем левой клавишей мыши на него ... и ... он отскакивает ... ни при одном другом скрытии областей - такой петрушки не возникает. это нормально? если в моих рассуждениях ошибка - поправьте пожалуйста. Добавлено через 51 минуту Если ваш код работает по типу:
0
|
|||||||||||
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
||||||
| 19.12.2013, 17:47 [ТС] | ||||||
|
Общий объем памяти Excel под формулы - ограничен. Т.е. если вы используете ну очень очень много формул в книге, то может возникнуть такая ситуация, когда один лишний символ в какой-то формуле приведет к зависанию Excel'я. Т.е. (повторяясь) есть какая-то область памяти (четко ограниченная, или какой-то общий объем) где "располагаются" все формулы ... и если вы перешли рубеж этой памяти, то приложение гибнет. Общий объем формул в книге НЕ БЕЗГРАНИЧЕН!
Для решения таких проблем: 1. Пишите формулы оптимально (см. множественные рекомендации по оптимизации этого процесса в поисковых системах) 2. Пишите специфические собственные маленькие и скоростные обработчики (под ваши задачи), т. как (пример формулы поиска первого непустого значения с аббревиатурой "НП"="не пусто"). Пример:
0
|
||||||
|
2062 / 491 / 134
Регистрация: 13.11.2008
Сообщений: 935
|
|||||||
| 21.12.2013, 21:47 | |||||||
2
|
|||||||
| 21.12.2013, 21:47 | |
|
Помогаю со студенческими работами здесь
40
Бывший профессионал cs 1.6 просит решения проблемы USB устройство, проблемы и пути решения. Проблемы с выводом решения на стандартный поток Прошу помощи решения проблемы в перекрестном... Каковы возможные решения проблемы рывков в эмуляторе? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|