Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Зависает окно userform, но макрос продолжает выполняться
 
Доброго дня всем
Есть некоторый макрос, который сравнивает 3 различных диапазона в двух книгах и если значения совпадают выполняет перенос значений ячеек из одной книги в другую. Но суть не в этом. Прикрутил я к макросу userform для удобства отображения хода выполнения задачи. Целый progressbar мне не нужен, поэтому процесс выполнения отображается по типу "выполнено Х/из всего У". Перед началом работы макрос отключает обновление экрана и авторасчёт формул. Но почему-то окошко userform и всё окно excel виснет через некоторое время после начала работы макроса и вся красота с отображением процесса работы не работает :cry: При этом макрос продолжает выполняться и через некоторое время корректно выполняет задачу и завершается с отвисанием окон. Работает всё это на excel 2007.
Маленькая гифка с моей userform

Что можно сделать что бы окна userform и excel не зависали и процесс работы продолжал показываться до завершения макроса?
Самое очевидное, как я понимаю, либо как-то облегчить макрос, либо апгрейд железа? Но может есть другие варианты и можно как-то где-то поковыряться в настройках чего-то? :)
Изменено: kenigfinn - 12.05.2022 12:17:21
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
 
Доброго дня всем )
Хочу попросить помощи в оптимизации кода 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 знаком на любительском уровне самоучки. Сильно не ругайтесь )
Изменено: kenigfinn - 31.08.2021 11:59:19
Запуск макроса в другой книге с неизвестным именем
 
Всем доброго дня.
Помогите, пожалуйста, решить следующую задачу:
Условия: есть две книги с неизвестными но одинаковыми (за исключением последнего слова) именами и расширениями: "Книга пример ПЕРВАЯ.xlsm" и "Книга пример ВТОРАЯ.xlsm"; обе книги всегда лежат в одной папке; "Книга пример ВТОРАЯ.xlsm" не всегда открыта.
Задача:
  1. Макросом из первой получить её имя
  2. Подменить последнее слово полученного имени, что бы получить имя второй книги
  3. Проверить, открыта ли вторая книга, если нет - завершить, если да:
  4. Запустить макрос из второй книги в Modul1 (отработать должен на второй книге)
  5. Если вторая книга стала активной - вернуться в первую.
Суммирование произведений, удовлетворяющим нескольким условиям, Условно И() ИЛИ() внутри СУММПРОИЗВ()
 
Всем доброго дня. Помогите пожалуйста написать формулу, которая суммировала бы произведения, удовлетворяющие нескольким критериям, объединяющимся не только по И но и по ИЛИ.
Конкретный пример к приложенному файлу. В ячейке D19 получить сумму произведений строк в столбцах А и В, одновременно удовлетворяющих условиям: Критерий 1 = или(Январь;Сентябрь), Критерий 2 = или(Красный;Зелёный), Критерий 3 = не(Дерево). С такими условиями должны просуммироваться произведения строк 2 и 10, и в результате должно получиться 222. В столбцах Число 1 и Число 2 - только числовые значения до 3 знаков после запятой, в столбцах критериев - только текстовые значения, могут и будут повторяться. Критерии задаются внутри формулы. Дополнительных ячеек и ячеек с промежуточным результатом быть не может. Не имею ничего против формул массива.
Изменено: kenigfinn - 23.10.2019 11:43:29
Перебор комбинаций с выбором одной наилучшей по условиям
 
Всем добрый день. Помогите советом в решении небольшой задачи.
Имеем исходный условный отрезок длиной в 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.
И храниться этот макрос должен в таблице собирающей данные, а не расчетной.
Изменено: kenigfinn - 20.07.2016 16:57:27
Страницы: 1
Наверх