Доброго дня всем Есть некоторый макрос, который сравнивает 3 различных диапазона в двух книгах и если значения совпадают выполняет перенос значений ячеек из одной книги в другую. Но суть не в этом. Прикрутил я к макросу userform для удобства отображения хода выполнения задачи. Целый progressbar мне не нужен, поэтому процесс выполнения отображается по типу "выполнено Х/из всего У". Перед началом работы макрос отключает обновление экрана и авторасчёт формул. Но почему-то окошко userform и всё окно excel виснет через некоторое время после начала работы макроса и вся красота с отображением процесса работы не работает При этом макрос продолжает выполняться и через некоторое время корректно выполняет задачу и завершается с отвисанием окон. Работает всё это на excel 2007.
Маленькая гифка с моей userform
На картинке видно, как в заголовке окна userform появляется приписка "(Не отвечает)" и прогресс перестаёт отображаться.
Что можно сделать что бы окна userform и excel не зависали и процесс работы продолжал показываться до завершения макроса? Самое очевидное, как я понимаю, либо как-то облегчить макрос, либо апгрейд железа? Но может есть другие варианты и можно как-то где-то поковыряться в настройках чего-то?
Доброго дня всем ) Хочу попросить помощи в оптимизации кода vba. Так-то всё работает, но чувствую, что есть более изящное и менее громоздкое решение. Есть книга с 31 листом. На каждом листе есть именованный диапазон. Размерность диапазонов на всех листах по столбцам - одинаковая, по строками - разная, заранее не известная. Нужно макросом собрать значение формул всех ячеек одного столбца каждого диапазона с 31 листа. Затем заполнить значения всех ячеек столбца каждого диапазона единицей. Далее производятся некоторые действия и в конце нужно вернуть значения записанные в переменную обратно в ячейки столбцов диапазонов на листы.
Сейчас работает так:
Код
Ax = Worksheets("Ay").Range("Az").Columns(7).Formula 'сохранил значения формул столбца в переменную
Worksheets("Ay").Range("Az").Columns(7).Value = 1 'заполнил ячейки столбца единицей
'ещё 60 строк с аналогичными действиями для других 30 листов
'...
'некоторое действие
'...
Worksheets("Ay").Range("Az").Columns(7).Formula = Ax 'вернул формулы из переменной в ячейки
'еще 30 строк для 30 листов
И так 31 раз для каждого листа, с другими именами соответственно, Bx, By, Bz для второго листа и т.д.... Постоянный только номер столбца - всегда 7.
Если бы листов было 1...5, всё просто, но листов 31 ))) и для каждого писать три строчки кода кажется неразумно. Чувствую, что логичнее было бы собирать всё циклом в один многомерный массив, но тут мои познания заканчиваются ) С многомерными массивами дела ещё не имел
С vba знаком на любительском уровне самоучки. Сильно не ругайтесь )
Всем доброго дня. Помогите, пожалуйста, решить следующую задачу: Условия: есть две книги с неизвестными но одинаковыми (за исключением последнего слова) именами и расширениями: "Книга пример ПЕРВАЯ.xlsm" и "Книга пример ВТОРАЯ.xlsm"; обе книги всегда лежат в одной папке; "Книга пример ВТОРАЯ.xlsm" не всегда открыта. Задача:
Макросом из первой получить её имя
Подменить последнее слово полученного имени, что бы получить имя второй книги
Проверить, открыта ли вторая книга, если нет - завершить, если да:
Запустить макрос из второй книги в Modul1 (отработать должен на второй книге)
Если вторая книга стала активной - вернуться в первую.
Всем доброго дня. Помогите пожалуйста написать формулу, которая суммировала бы произведения, удовлетворяющие нескольким критериям, объединяющимся не только по И но и по ИЛИ. Конкретный пример к приложенному файлу. В ячейке D19 получить сумму произведений строк в столбцах А и В, одновременно удовлетворяющих условиям: Критерий 1 = или(Январь;Сентябрь), Критерий 2 = или(Красный;Зелёный), Критерий 3 = не(Дерево). С такими условиями должны просуммироваться произведения строк 2 и 10, и в результате должно получиться 222. В столбцах Число 1 и Число 2 - только числовые значения до 3 знаков после запятой, в столбцах критериев - только текстовые значения, могут и будут повторяться. Критерии задаются внутри формулы. Дополнительных ячеек и ячеек с промежуточным результатом быть не может. Не имею ничего против формул массива.
Всем добрый день. Помогите советом в решении небольшой задачи. Имеем исходный условный отрезок длиной в 100, и два дополнительных отрезка, один 15, второй 12. Задача: разместить на исходном отрезке малые в любой последовательности, любым сочетанием с повторениями, но так, что бы из всех возможных вариантов иметь наименьший остаток, если есть несколько вариантов размещения, предпочтение отдаётся тому, где число число размещаемых элементов наименьшее. Ответ должен быть один: количество отрезков длиной 15, количество отрезков длиной 12, остаток. Хотелось бы сделать это с наименьшим количеством дополнительных расчётных ячеек. Если можете подсказать решением с помощью макроса - тоже хорошо.
Сложный цикл с подстановкой из одной книги в другую и обратно, Взять данные из одной книги, вставить в другу, получить результат и с ним вернуться в первую книгу
Народ, помогите решить задачу. Имеем две книги: Книга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. И храниться этот макрос должен в таблице собирающей данные, а не расчетной.