Зависает окно userform, но макрос продолжает выполняться
Зависает окно userform, но макрос продолжает выполняться
12.05.2022 12:53:09
Jack Famous, спасибо за ответ!
Видится мне, что с самим макросом у меня всё ок. Об этом говорит то, что вначале всё отображается корректно, а в коде макроса после 16 итерации следует точно такая же 17-ая (обычный цикл For...Next), и ничего в тексте макроса не меняется, что могло бы как-то объяснить подвисание. При этом виснет не всегда после 16, это зависит от того, по каким книгам сейчас работает макрос. В процессе выполнения книги, опять же, не меняются.
Изменено: |
|||||
|
Зависает окно userform, но макрос продолжает выполняться
12.05.2022 12:11:10
Доброго дня всем
Есть некоторый макрос, который сравнивает 3 различных диапазона в двух книгах и если значения совпадают выполняет перенос значений ячеек из одной книги в другую. Но суть не в этом. Прикрутил я к макросу userform для удобства отображения хода выполнения задачи. Целый progressbar мне не нужен, поэтому процесс выполнения отображается по типу "выполнено Х/из всего У". Перед началом работы макрос отключает обновление экрана и авторасчёт формул. Но почему-то окошко userform и всё окно excel виснет через некоторое время после начала работы макроса и вся красота с отображением процесса работы не работает ![]()
Что можно сделать что бы окна userform и excel не зависали и процесс работы продолжал показываться до завершения макроса? Самое очевидное, как я понимаю, либо как-то облегчить макрос, либо апгрейд железа? Но может есть другие варианты и можно как-то где-то поковыряться в настройках чего-то? ![]()
Изменено: |
|||
|
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
31.08.2021 16:15:50
Всем спасибо! Что-то очень даже компактное получилось )
Объединил два варианта от МатросНаЗебре и No Name:
Изменено: |
|||
|
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
31.08.2021 13:27:19
No Name, Юрий М, я понял, недорассказал деталь. "Некоторое действие" должно остаться вне цикла, т.е. первый цикл берет формулы, ставит единицы и завершается. Далее действие. Второй цикл возвращает формулы.
Т.е. первым циклом нужно собрать сразу все формулы столцов со всех листов и поставить единицы. Вторым вернуть сразу все формулы столбцов на все листы. Предложенный No Name вариант подходит, если бы не это "но".
Изменено: |
|
|
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
31.08.2021 12:17:51
Ігор Гончаренко, не совсем понял, что мы выиграем этим циклом, ведь всё имена диапазонов и переменных всё равно остаются уникальными для каждого листа и нужно написать всё те же 31х3 строк
Изменено: |
|
|
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
31.08.2021 11:52:39
Доброго дня всем )
Хочу попросить помощи в оптимизации кода vba. Так-то всё работает, но чувствую, что есть более изящное и менее громоздкое решение. Есть книга с 31 листом. На каждом листе есть именованный диапазон. Размерность диапазонов на всех листах по столбцам - одинаковая, по строками - разная, заранее не известная. Нужно макросом собрать значение формул всех ячеек одного столбца каждого диапазона с 31 листа. Затем заполнить значения всех ячеек столбца каждого диапазона единицей. Далее производятся некоторые действия и в конце нужно вернуть значения записанные в переменную обратно в ячейки столбцов диапазонов на листы. Сейчас работает так:
И так 31 раз для каждого листа, с другими именами соответственно, Bx, By, Bz для второго листа и т.д.... Постоянный только номер столбца - всегда 7. Если бы листов было 1...5, всё просто, но листов 31 ))) и для каждого писать три строчки кода кажется неразумно. Чувствую, что логичнее было бы собирать всё циклом в один многомерный массив, но тут мои познания заканчиваются ) С многомерными массивами дела ещё не имел С vba знаком на любительском уровне самоучки. Сильно не ругайтесь )
Изменено: |
|||
|
Программно посчитать количество всех страниц (на печать) в книге Excel - VBA
Запуск макроса в другой книге с неизвестным именем
25.12.2019 15:55:39
Ігор Гончаренко, Михаил Лебедев, всем ещё раз спасибо!
Действительно, как сказал Ігор Гончаренко, самый простой способ оказался положить макрос в первую книгу. |
|
|
Запуск макроса в другой книге с неизвестным именем
25.12.2019 12:50:32
Ігор Гончаренко, Михаил Лебедев, большое спасибо за ответы! Почти получилось то, что нужно.
С Activate всё работает, но мне не очень хочется что бы вторая книга активировалась. Получится у меня обойтись с помощью Application.Run ("Книга!Модуль.Макрос")? Если да, то помогите, пожалуйста, склеить строку аргументов, что бы вместо "Книга" вставлялся результат Replace(ThisWorkbook.Name, "ПЕРВАЯ", "ВТОРАЯ") |
|
|
Запуск макроса в другой книге с неизвестным именем
Суммирование произведений, удовлетворяющим нескольким условиям, Условно И() ИЛИ() внутри СУММПРОИЗВ()
Суммирование произведений, удовлетворяющим нескольким условиям, Условно И() ИЛИ() внутри СУММПРОИЗВ()
23.10.2019 12:41:51
IKor, нет, такой статьи не видел, но про БДСУММ() слышал. Единственный вопрос тогда встаёт о том, что эта функция берёт значения условий из ячеек, а мне нужно, что бы значения условий были записаны только внутри формулы, без дополнительных ячеек. Но спасибо за наводку, покопаю в сторону БДСУММ() поглубже.
|
|
|
Суммирование произведений, удовлетворяющим нескольким условиям, Условно И() ИЛИ() внутри СУММПРОИЗВ()
Суммирование произведений, удовлетворяющим нескольким условиям, Условно И() ИЛИ() внутри СУММПРОИЗВ()
23.10.2019 11:42:26
Всем доброго дня. Помогите пожалуйста написать формулу, которая суммировала бы произведения, удовлетворяющие нескольким критериям, объединяющимся не только по И но и по ИЛИ.
Конкретный пример к приложенному файлу. В ячейке D19 получить сумму произведений строк в столбцах А и В, одновременно удовлетворяющих условиям: Критерий 1 = или(Январь;Сентябрь), Критерий 2 = или(Красный;Зелёный), Критерий 3 = не(Дерево). С такими условиями должны просуммироваться произведения строк 2 и 10, и в результате должно получиться 222. В столбцах Число 1 и Число 2 - только числовые значения до 3 знаков после запятой, в столбцах критериев - только текстовые значения, могут и будут повторяться. Критерии задаются внутри формулы. Дополнительных ячеек и ячеек с промежуточным результатом быть не может. Не имею ничего против формул массива.
Изменено: |
|
|
Перебор комбинаций с выбором одной наилучшей по условиям
Перебор комбинаций с выбором одной наилучшей по условиям
Перебор комбинаций с выбором одной наилучшей по условиям
Перебор комбинаций с выбором одной наилучшей по условиям
Перебор комбинаций с выбором одной наилучшей по условиям
15.02.2018 19:00:11
|
|
|
Перебор комбинаций с выбором одной наилучшей по условиям
Перебор комбинаций с выбором одной наилучшей по условиям
Перебор комбинаций с выбором одной наилучшей по условиям
Перебор комбинаций с выбором одной наилучшей по условиям
Сложный цикл с подстановкой из одной книги в другую и обратно, Взять данные из одной книги, вставить в другу, получить результат и с ним вернуться в первую книгу
20.07.2016 20:24:09
МатросНаЗебре,почти собрал свой макрос с последними хотелками на основе Вашего, только не могу пока разобраться с последними строчками
Изменено: |
|||||
|
Сложный цикл с подстановкой из одной книги в другую и обратно, Взять данные из одной книги, вставить в другу, получить результат и с ним вернуться в первую книгу
20.07.2016 18:01:59
Чуть изменил задачу и набросал примерную схему, старался как можно проще изложить. Как я понимаю, должно получиться 4 уровня вложенных циклов.
Первый уровень: Книга1Лист1Значение1, Книга1Лист1Значение2, Книга1Лист1Значение3 изменяются наборами сразу втроем, либо один набор из трёх значений, либо второй, и становятся в Книга2Лист1Значение1, Книга2Лист1Значение2, Книга2Лист1Значение3. Второй уровень: Книга1Лист1Значение4 и Книга1Лист1Значение5 так же меняется сразу парой от 0 до 1, если одно единица - второе ноль, либо наоборот (1-0, 0-1), становятся в Книга2Лист1Значение4 и Книга2Лист1Значение5. Третий уровень: Книга1Лист1Значение6, Книга1Лист1Значение7 и Книга1Лист1Значение7 меняется сразу набором в три положения 1-0-0, 0-1-0 и 0-0-1, становятся в Книга2Лист1Значение6, Книга2Лист1Значение7 и Книга2Лист1Значение8. Четвёртый уровень: Книга2Лист1Материал1 меняется от 25 до 125 с шагом 5. Затем так же Книга2Лист1Материал2 ... Книга2Лист1Материал10. Результирующие значения снимаем с Книга2Лист2Результат и вставляем в соответствующую ячейку Книга1Лист1. МатросНаЗебре, спасибо большое, а можно с пояснениями, какая строка что делает? |
|
|
Сложный цикл с подстановкой из одной книги в другую и обратно, Взять данные из одной книги, вставить в другу, получить результат и с ним вернуться в первую книгу
20.07.2016 16:33:13
Народ, помогите решить задачу.
Имеем две книги: Книга1 и Книга2, для простоты объяснения в файле-примере объединил в одну книгу, но вообще они раздельные. В Книге1Лист1 имеем исходные данные и поля для результатов. В Книге2Лист1 - вводные ячейки для расчета, на Книга2Лист2 - выходная ячейка с результатом. Описание процесса: Книга1Лист1 берем Значение1, Значение2, Значение3 и вставляем их в соответствующие ячейки в Книга2Лист1, далее по-порядку для Материал1 подставляем значения от 25 до 125 в Книга2Лист1!А2. Забираем результат с Книга2Лист2!В1 и помещаем в Книга1Лист1 в графу для Материал1. Затем обнуляем Материал1 на Книга2Лист1 и повторяем тоже самое для Материал2: берем значения от 25 до 125 и вставляем в Книга2Лист1!А2. Забираем результат, вставляем в Книга1Лист1 графу 4 для Материал2. И т.д. Когда закончим проходить все материалы ТаблицаРезультатов1, переходим на ТаблицаРезультатов2, но к ней будут другие Значение1-3. И храниться этот макрос должен в таблице собирающей данные, а не расчетной.
Изменено: |
|
|
Смена текста в колонтитулах с помощью макроса (по заданным условиям)