а вставку на лист 000 делать по размеру выделенного диапазона.
07.12.2023 04:01:37
Sanja, я попробовал, ошибки не появляется. А как увидеть, что попадает в массив?
UPD/ после ошибки пошел в дебаг, в
как понять, что он хочет? subscript out of range, индекс за пределами диапазона...
Изменено: |
|||||
|
06.12.2023 16:26:32
МатросНаЗебре, это первый элемент массива?
первую координату последнего элемента можно получить через номер последней строки из выделенной области в ColSearch, а вторую через через номер столбца ColSearch (переменная iCSc) с добавлением смещения для вставки данных (переменная iOPc)? |
|
|
06.12.2023 15:35:27
Sanja, извините, но можете еще подсказать?
вот здесь
если так, то получается первый элемент массива можем получить из
|
|||||
|
06.12.2023 03:56:16
Sanja, подход с применением формы ввода данных и/или выбора диапазона выбран по причине возможного использования данного макроса не только мной.
Если углубиться в суть вопроса и откуда пошло желание найти решение моего вопроса через макрос, то получается следующая история: - есть 2 файла, первый - тот что с номерами листов от 1 до 10, второй - с именем 000. - перед проверкой лист из второго файла копируется в первый. - на каждом листе имеется шапка с текстовыми данными. Отсюда и желание ускорить процесс проверки. Данные в файле №2 считаем правильными, а данные на листах файла №1 остается сверить. Определять каждый раз в новом файле ячейки для ввода диапазона поиска и смещений для меня не проблема. А человек (далекий от темы макросов, да и в принципе в формулах экселя разбирающийся на уровне сложить/поделить/получить среднее значение) может не понять принципа работы и подготовки листа для правильной работы (да и вообще работы) макроса. Ну и, к тому же, при успешной отладке данного решения, есть желание сделать данный макрос надстройкой. Попрошу Вас, по возможности, оценить работоспособность такого решения. Если нет, будем думать... UPD/ В таком виде ...
Изменено: |
|||
|
05.12.2023 15:17:23
Sanja,
|
|||
|
05.12.2023 08:13:31
Sanja, Данные на всех листах, кроме "000" одинаковой структуры, как и смещение ячейки, которую нужно копировать (и суммировать при количестве более 1 позиции). Данные на листе "000" по структуре будут отличаться. Разве что номер столбца с поиском может совпадать, а смещение может быть рандомным.
Как я вижу реализацию запросов:
|
|||
|
05.12.2023 04:07:46
Sanja, Я вот понять не могу, как перейти от выделенного столбца к поиску значений, в нем находящихся.
Если при вызове
чтобы дальше с ним работать? UPD/ Хотя вроде начал понимать логику Вашего решения. Макрос пробегает по листам и из заранее указанного диапазона формирует массив, из которого извлекает необходимые данные. Если допустить, что макрос не знает заранее по каким столбцам искать, и в каком соседнем столбце нужное для суммирования значение. Тогда перед подсчетами спросить у пользователя, какие исходные данные, офсет для суммируемых значений, офсет для вставки суммы на листе с которого идет выборка и поиск... Насколько сложно поменять логику подсчета? Т.е. не заранее в коде указать столбцы для формирования массива, а спросить какие данные ищем и искать их по листам?
Изменено: |
|||||
|
03.12.2023 06:17:01
Да и будущем может что-то измениться, думал об универсальном решении... А может и что-то типа надстройки сделать.
А за решение - огромное спасибо!!! |
|||||
|
02.12.2023 19:26:50
Доброго времени суток!
Возникла необходимость с помощью макроса произвести поиск по книге, с определенными условиями: 1. Выбирается столбец с данными, которые поочередно нужно найти в книге. 2. Выбирается столбец для вставки значений. 3. При успешном поиске, необходимо значение в соседней ячейке (в моем случае - через 2 ячейки справа) скопировать на лист, с которого осуществляется выборка значений (п. 1), и вставить в ячейку в той строке, из которой идет поиск (номер столбца ячейки выбрали в п. 2). 4. Если искомое значение присутствует в книге несколько раз, то у каждой из найденных ячеек соседнее (или через 2 справа) значение суммировать и вставить на лист со столбцом, по которому идет поиск (по аналогии с п. 3). Пока получилось организовать поиск (без суммирования) с копированием значений в ячейке через 2 справа. Но заполняет только первые 15 строк. При попытке суммировать - почему то некорректно считает. Есть умельцы, кто подскажет решение вопроса? |
|
|
01.04.2019 09:36:10
Дмитрий(The_Prist) Щербаков, поставил. Создается только первый файл, далее вывод "Успешно". И все, остальные не создаются
|
|
|
01.04.2019 07:05:02
Доброго времени суток, дамы и господа.
Есть макрос в Excel, который заполняет шаблон в Word. Раньше выбирал каждую строку вручную через Combobox, проблем не было. Но лень - двигатель прогресса, и теперь есть 2 Combobox'а, в первом выбирается начальная строка, во втором - конечная, и макрос, обрабатывая это, должен создать такое же количество файлов, сколько строк между значениями этих Combobox'ов. Но есть одно НО. Макрос создает только первый файл (от первой строки), а далее происходит ошибка "microsoft ожидает пока другое приложение завершит действие ole".
Как это победить? Если есть у кого какие мысли по этому поводу, поделитесь, пожалуйста. |
|||
|
21.02.2019 17:34:41
Nordheim, возможно. В силу своих навыков я видел это возможным сделать так.))) в access вроде AfterUpdate можно обработать в Form_Load...
Возможно, выхожу за рамки темы, но если знаете, как реализовать заполнение маршрутов, именно с таким функционалом и последовательностью, как у меня в Combobox'ах, буду Вам очень признателен. |
|
|
21.02.2019 13:10:03
- из пункта "А" - в пункт "Б" - из пункта "Б" - в пункт "В" - и т.д. Добиться желаемого результата помогло использование ComboBox с событием AfretUpdate. Была проблема с накоплением данных, здесь - |
|||
|
20.02.2019 10:01:07
Nordheim, не должна, а работает. Когда ввожу слово в комбобокс, начиная с первой буквы, если такое слово или слова с одинаковыми буквами вначале есть, то они подставляются автоматически. Если слово уникальное - вводим целиком, после переключаемся на другой комбобокс, а наше новое слово, если начинать вводить с первой буквы, автоматически подставится в следующий раз.
По сути, это то же самое что вводить одинаковые слова в ячейках листа Excel, но теперь уже в рамках формы. |
|
|
19.02.2019 16:18:33
Nordheim, ComboBox в данном случае работает на то, чтобы при вводе первых букв находить значение, которые собираются на листе, и вставлять его. Если такого значения нет, то записывать его, после того, как текст будет введён целиком, чтобы в следующий раз можно было также при вводе первых букв предложить его для вставки. В процедуре AfterUpdate это работало, но там для каждого ComboBox прописана своя процедура. Я же хочу все это объединить в класс, чтобы было компактнее.
|
|
|
19.02.2019 15:53:04
Nordheim, не совсем. если убрать из формы весь код, что идет ниже (для каждого updateafter) добавление новых данных не происходит сразу, а только после закрытия формы. И, причем, добавление происходит побуквенно. А если слово будет длиной 10 букв, то будет 10 строк, и каждой на 1 букву больше. Я понимаю, что Вы скинули пример, но не могли бы помочь до конца разобраться?
Изменено: |
|
|
19.02.2019 13:37:01
И снова здравствуйте! Недавно разобрались с написанием класса для многих textbox_change, спасибо всем за помощь.
Понимаю, что, возможно, надоел, но хочу разобраться с написанием (скорее всего функции) для множества процедур для Combobox со свойством AfterUpdate. Если в частном виде для одной процедуры мы имеем код
|
|||
|
19.02.2019 06:22:48
Дмитрий(The_Prist) Щербаков, да, все работает, спасибо Вам.
Ну я только учусь время от времени. По профессии не программист, но порой приходится делать вещи, которые облегчают жизнь. И, кстати, вопрос такой: сделать класс на процедуру After Update тоже получится, или через функцию делать. |
|
|
18.02.2019 15:27:06
Дмитрий(The_Prist) Щербаков, я тоже думал через функцию или класс.
попробовал сделать согласно инструкции, но где то ошибка. |
|
|
18.02.2019 07:02:39
Доброго времени суток, господа и дамы!
Я к Вам снова за помощью. Сложилась следующая ситуация: имеем на форме несколько текстбоксов. В этих текстбоксах через код
Так вот, есть ли способ сделать что-то наподобие цикла, но для процедуры в целом (включая ее имя) или идея бессмысленна? |
|||
|
13.02.2019 12:45:23
Здравствуйте, уважаемые участники сообщества!
Сделал я в Экселе на основе форм и макросов программу для списания ГСМ. Изначально она работала с шаблоном на листе в этом же Экселе, но по определенным причинам решил вынести шаблон в Ворд. Но при попытке скопировать данные из ячеек и разнести их по ссылкам шаблона в Ворде выскакивает ошибка "Compile error: Invalid or unqualified reference" и выделяется ".Cells" в строке "FindText = Cells(3, k): ReplaceText = Trim(.Cells(k))". Подскажите, пожалуйста, в каком месте я делаю ошибку.
Изменено: |
|
|