Всем привет. Пишу с телефона поэтому не могу весь код сюда скопировать. Возникла проблема со следующей строкой: [vba]
Код
Range("B7").FormulaR1C1 = "=ROUND(RC [8],1),0)"
[/vba] Почему-то макрос на этом моменте задумывается на 2-3 секунды. Таких формулы две. Суть в чем, есть числа которые сначала надо округлить до десятых затем сразу до целых. Макрос подвисает именно на этой строчке. Хотя например при растягивании формулы ( autofill) зависания нет. Как можно округлить по другому? Зачем вообще я так округляю? Есть числа у которых после запятой должен быть или 0 или 5. Но это не всегда так. Может быть например 240.000000456 или 870.5000000078 или 450.49999999567 мне надо чтобы числа стали целыми 240, 871, 451.
Всем привет. Пишу с телефона поэтому не могу весь код сюда скопировать. Возникла проблема со следующей строкой: [vba]
Код
Range("B7").FormulaR1C1 = "=ROUND(RC [8],1),0)"
[/vba] Почему-то макрос на этом моменте задумывается на 2-3 секунды. Таких формулы две. Суть в чем, есть числа которые сначала надо округлить до десятых затем сразу до целых. Макрос подвисает именно на этой строчке. Хотя например при растягивании формулы ( autofill) зависания нет. Как можно округлить по другому? Зачем вообще я так округляю? Есть числа у которых после запятой должен быть или 0 или 5. Но это не всегда так. Может быть например 240.000000456 или 870.5000000078 или 450.49999999567 мне надо чтобы числа стали целыми 240, 871, 451.fairylive
Скорее всего,вы вставляете не одну формулу. Или от этой ячейки зависят другие, "и-и-и-и - автопересчёт!". Плюс ещё RC-формат со скобками (т.е. относительным смещением). Ну и формула какая-то странная, с непарной скобкой...
А зачем вообще вставлять формулу, если нужно именно значение, причем уже в макросе прямо посчитать можно? [vba]
Хотя да, если вы макросом желаете сформировать формулу, чтобы потом её же руками растянуть... Это да, это вин
Скорее всего,вы вставляете не одну формулу. Или от этой ячейки зависят другие, "и-и-и-и - автопересчёт!". Плюс ещё RC-формат со скобками (т.е. относительным смещением). Ну и формула какая-то странная, с непарной скобкой...
А зачем вообще вставлять формулу, если нужно именно значение, причем уже в макросе прямо посчитать можно? [vba]
AndreTM, скобку пропустил. С телефона сижу. Интернета на компенсации временно нет... все правильно я растягиваю формулу. Подумаю на счет округления макросов. Цикл надо будет замутить.
AndreTM, скобку пропустил. С телефона сижу. Интернета на компенсации временно нет... все правильно я растягиваю формулу. Подумаю на счет округления макросов. Цикл надо будет замутить.fairylive
))) понятно что мои проблемы. Округление макросом с диапазоном из одной ячейки работает. А вот с большим диапазоном ошибка не соответствия типов. Походу дела косяк был не в формуле. Еще раз походил пошагово по коду. Макрос зависал на строке которая была перед вставкой формулы в ячейку. [vba]
Код
Range ("b7:c27").copy range ("j7")
[/vba] Эта строчка стала такой после того как я причесал то что записал макрорекордер. Заменил ее на [vba]
Код
Range ("b7:c7").copy Range ("j7").pastespecial
[/vba] Вобщем все стало летать. Спасибо всем за участие!
))) понятно что мои проблемы. Округление макросом с диапазоном из одной ячейки работает. А вот с большим диапазоном ошибка не соответствия типов. Походу дела косяк был не в формуле. Еще раз походил пошагово по коду. Макрос зависал на строке которая была перед вставкой формулы в ячейку. [vba]
Код
Range ("b7:c27").copy range ("j7")
[/vba] Эта строчка стала такой после того как я причесал то что записал макрорекордер. Заменил ее на [vba]
Код
Range ("b7:c7").copy Range ("j7").pastespecial
[/vba] Вобщем все стало летать. Спасибо всем за участие!fairylive
fairylive, "объединенные ячейки - зло" (с), "макрорекордер - порождение хаоса" (с) Ну и если надо копировать что-то диапазонами, и именно через ".Copy" - то .Pastespecial имеет много гитик, как вы уже успели заметить, наверное
Михаил, ты пишешь то же самое,что и с With же
fairylive, "объединенные ячейки - зло" (с), "макрорекордер - порождение хаоса" (с) Ну и если надо копировать что-то диапазонами, и именно через ".Copy" - то .Pastespecial имеет много гитик, как вы уже успели заметить, наверное AndreTM
Skype: andre.tm.007 Donate: Qiwi: 9517375010
Сообщение отредактировал AndreTM - Суббота, 24.06.2017, 21:32
Ребят я извиняюсь конечно. Но проблема как исчезла сама так снова сама вернулась. Засыпал когда, макрос работал мгновенно. Сегодня проснулся и опять тормозит. Видимо у меня что то с самим Excel. Причем если зажать f8 пошагово макрос выполнится быстрее чем через f5. В любом случае спасибо за ответы!
Ребят я извиняюсь конечно. Но проблема как исчезла сама так снова сама вернулась. Засыпал когда, макрос работал мгновенно. Сегодня проснулся и опять тормозит. Видимо у меня что то с самим Excel. Причем если зажать f8 пошагово макрос выполнится быстрее чем через f5. В любом случае спасибо за ответы!fairylive
Обновление экрана отключаю всегда. А вот вычисления в ручном режиме портят правильность вычислений видимо как раз из-за формулы на листе и главное не ускоряют работу.
Бляяяяяаааа... пока писал вспомнил что вчера еще делал перед тем как само все стало быстро работать. Я закрыл Download Master. Видимо когда нет интернета он каким-то образом мешает Excel. Проверил сейчас - так и есть. Все опять летает. При этом закачек никаких нет. DM просто висит в трее. Стоит его закрыть макрос начинает исполняться мгновенно. Если снова открыть - макрос исполняется 6 секунд. Чудеса! Если что версия DM 6.12.4.1555. Ms Office 2016. Напишу потом разработчикам DM.
Обновление экрана отключаю всегда. А вот вычисления в ручном режиме портят правильность вычислений видимо как раз из-за формулы на листе и главное не ускоряют работу.
Бляяяяяаааа... пока писал вспомнил что вчера еще делал перед тем как само все стало быстро работать. Я закрыл Download Master. Видимо когда нет интернета он каким-то образом мешает Excel. Проверил сейчас - так и есть. Все опять летает. При этом закачек никаких нет. DM просто висит в трее. Стоит его закрыть макрос начинает исполняться мгновенно. Если снова открыть - макрос исполняется 6 секунд. Чудеса! Если что версия DM 6.12.4.1555. Ms Office 2016. Напишу потом разработчикам DM.fairylive
Вы там случайно у себя в макросе не используете копирование через буфер обмена? А то ведь да, при включенной в DM опции контроля буфера по поводу поиска ссылок на закачки - он вам тормоза и устроит...
Вы там случайно у себя в макросе не используете копирование через буфер обмена? А то ведь да, при включенной в DM опции контроля буфера по поводу поиска ссылок на закачки - он вам тормоза и устроит...AndreTM
Так собственно copy. Копирую сначала исходные данные в сторонку. Затем округляю их до десятых. Затем копирую опять и вставляю только значение на место исходных данных. Потом все это повторяется с округлением до целых. Операций много конечно и наверно есть способ лучше. Но без DM все происходит мгновенно а большего мне и не надо. Собственно как я уже писал выше тормоза были на строчке с копированием.
Так собственно copy. Копирую сначала исходные данные в сторонку. Затем округляю их до десятых. Затем копирую опять и вставляю только значение на место исходных данных. Потом все это повторяется с округлением до целых. Операций много конечно и наверно есть способ лучше. Но без DM все происходит мгновенно а большего мне и не надо. Собственно как я уже писал выше тормоза были на строчке с копированием.fairylive