| Цитата |
|---|
| sokol92 написал: О причине бедствий см. сегодняшнюю тему . |
|
02.07.2019 09:17:50
|
|||
|
|
|
|
02.07.2019 09:12:23
|
|||
|
|
|
|
18.10.2018 16:41:30
Спасибо!
Изменено: - 18.10.2018 16:42:03
|
|||
|
|
|
|
17.09.2018 14:14:24
Попробовал использовать совет Казанского. Через последовательное вычисление ошибка вообще не возникает - раз 50 пробовал разные варианты, удалял листы, переименовывал их, пересохранял файл - макрос срабатывает стабильно. Спасибо!
Но причина ошибки осталась загадкой, и еще более интригующей:)
Изменено: - 17.09.2018 14:15:11
|
|||
|
|
|
|
17.09.2018 11:51:24
Как выкрутиться, я в общем-то понимаю. Собирался использовать вариант, который предложил Ігор Гончаренко - создать скрытый лист с макросом в модуле листа как образец, при необходимости дублировать лист и в него вставлять данные из html (вместо сохранения html как нового листа). Про вариант Workbook_SheetSelectionChange почему-то не подумал, спасибо, Дмитрий!
Но очень хочется понять, почему макрос ведет себя так странно - то срабатывает, то не срабатывает. Никак не удается стабилизировать ошибку. |
|
|
|
|
|
17.09.2018 10:40:08
Добрый день!
Изменено: - 17.09.2018 12:47:51
|
|||
|
|
|
|
20.04.2011 12:44:31
У меня такая же проблема с функцией ЧИСТРАБДНИ и еще некоторыми.
Формула выглядит так =ЕСЛИ(D6>0;(ЧИСТРАБДНИ(C6;D6;S$7:S$18)-1);0) Загружаю файл, в ячейках с такой формулой вместо значений показывает #ИМЯ? После нажатия F2 и Enter все работает нормально. Мастер функций формулы опознает и показывает правильное значение. Может, кто знает, в чем дело? |
|
|
|
|
|
04.03.2011 12:07:54
Уважаемый The_Prist!
Не подскажете, а как в Excel 2007 посмотреть количество форматов? Я попробовал сделать так - свой проблемный файл (последний, в котором еще не наступило переполнение форматов) сохранил в формате Excel 2007, дал ему расширение zip и распаковал. Нашел файл styles.xml и в нем увидел следующее: numFmts count 15 fonts count 149 fills count 38 borders count 137 cellStyleXfs count 627 cellXfs count 2204 cellStyles count 627 dxfs count 96 Общее количество форматов равно 3893, т.е. близко к критическим 4000. Так правильно? |
|
|
|
|
|
04.03.2011 09:15:17
Подсчитал количество использованных форматов в своем проблемном файле.
Создал новый файл с искусственным переполнением форматов, но с одновременным их подсчетом. Удалил все стили, остался 1 стиль. Создал блоки ячеек по 80 шт., добавил всем разную заливку, потом начал копировать, меняя размер шрифта, потом болд, курсив и т.д. Так дошел до 4000 тыс. При попытке добавить еще 80 новых возникло сообщение "Слишком много форматов". Путем постепенного добавления этих нумерованных форматов из нового файла в проблемный файл (в котором число форматов было неизвестно), коллега подсчитала количество использованных форматов и в нем. При добавлении 1000 форматов возникало сообщение, значит в исходном файле их было 4000 - 1000 = 3000. <EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM> |
|
|
|
|
|
02.03.2011 16:01:02
Уважаемые коллеги!
Как я понял, Excel 2003 поддерживает до 4000 уникальных форматов ячеек в одной книге. При превышении возникает сообщение "Слишком много форматов". На практике после возникновения этого сообщения пользователь рискует потерять файл. Поискав на форуме, понял, как можно разрешить возникшую проблему, но как ее предупредить - не нашел. Есть ли какой-нибудь способ узнать количество уже использованных форматов в файле? Например, с помошью VBA? Если да, то подскажите направление, как это сделать? Спасибо! |
|
|
|
|
|
07.09.2010 16:37:05
Уважаемые форумчане!
Столкнулся с такой проблемой: Обрабатываю суммы поступлений, которые состоят из рублей и копеек, то есть всегда не более 2 десятичных знаков. Во время обработки суммы из ячеек складываются двумя разными способами и результат помещается в две отдельные ячейки. Первый итог получается в результате сложения всех сумм поступлений от контрагентов. Второй итог получается в результате сложения всех сумм поступлений от каждого контрагента и сложения всех этих сумм. Итоги совершенно одинаковые. Но в некоторых случаях при делении одного итога на другой вместо 1,0 получаю 0,999999999999999. Я уже делал так: При обработке в ячейках ставил формат денежный. Объявлял переменную как Decimal, присваивал ей значение из ячейки, очищал ячейку и помещал в нее обратно значение переменной. Все равно иногда вместо 1,0 получаю 0,999999999999999. Подскажите, пожалуйста, как этого можно избежать? |
|
|
|
|
|
06.08.2010 13:29:59
EducatedFool, действительно, у меня там Activate и Select достаточно понатыкано. Но как избавиться от этих нехороших слов? Мне надо обработать данные (в том числе и отсортировать) на двух разных листах.
Сильно повысить скорость макроса вряд ли возможно - я отключаю обновление экрана и автопересчет, но когда приходится обрабатывать несколько тысяч строк, то время работы макроса уже существенное. Впрочем, вод код, макрос на кнопке Этап 1. |
|
|
|
|
|
05.08.2010 17:44:45
Я в модуле, в тексте макроса ставлю сначала UserForm.Show (0), Wait1.Repaint, а в конце - UserForm1.Hide. Там же, в начале макроса, и добавлял Application.Wait Time:=Now + TimeValue("0:00:01")
В коде UserForm, где Private Sub UserForm_Click(), у меня ничего не прописано. Я что-то неверно делаю? |
|
|
|
|
|
05.08.2010 16:56:39
Спасибо, Дъмитръ, но увы - у меня этот способ не сработал:( (кроме честной задержки на 1 секунду:)))
Мне иногда помогало отключить и заново включить надстройку Analysis ToolPak - VBA, но сейчас не сработало. Никак не пойму, почему в одном макросе все нормально работает, а в другом глючит... |
|
|
|
|
|
05.08.2010 13:11:05
Виноват, в первом сообщении имелся в виду немодальный режим, чтобы макрос продолжал работать.
EducatedFool, Ваш совет помог. Когда после UserForm1.Show (0) добавил UserForm1.Repaint, то этого оказалось достаточно, чтобы текст появился (правда, Titlebar остается не активным). А добавление DoEvents ничего не меняет. Так или иначе, текст выводится. Спасибо! |
|
|
|
|
|
22.04.2010 17:34:33
Все варианты перепробовал. Все получается, если общий файл открыт на моем компьютере. При применении метода с UserStatus ругается. Возможно, потому, что я пока плохо знаю синтаксис). Полдня мучался, а потом все вдруг заработало на предложенном ZVI методе.
Большое спасибо всем откликнувшимся и особенно ZVI!!! |
|
|
|
|
|
21.04.2010 18:36:49
Hugo, спасибо, но такой способ сработает, если кто-то открыл общий файл посредством макроса в файле пользователя. Но если он открыл общий файл вручную, то файл Открыто.txt не будет создан, соответственно, будет считаться, что общий файл доступен для записи.
Я тут подумал (извините, если глупость скажу:), а что если в общем файле создать ячейку с формулой типа А1=ТДАТА() ? И взять значения из этой ячейки без открытия файла. Если файл кем-то открыт, то значение ячейки будет равно текущему времени. А если закрыт, то там будут храниться дата и время на момент последнего сохранения файла, т.е. значение будет меньше текущего времени. Или не так? The_Prist, спасибо! Я, правда, пока только начал постигать азы, но попробую разобраться:) |
|
|
|
|