Здравствуйте, не могу разобраться, использую VBA метод вставки Range("").Copy Range("").Insert в одном случае диапазон вставляется корректно на то количество строк, которое имеет сам, в другом случае диапазон вставляется размером с диапазон конечный
написал: проблема может быть в том, что вам нужен не .Insert задачу опишите, которую решаете
есть статичная таблица на 20000 строк и есть запрос PQ к интернет-ресурсу который загружает ежедневно при открытии файла 3-10 строк. Эти строки надо вставить в статичную таблицу. Знаю что можно использовать "добавить запросы" PQ и получить объединенную по строкам таблицу, но применение невозможно из-за хитрых фильтров дат, которые используются в запросе к интернет-ресурсу, поэтому нужна "грубая" вставка через VBA при нажатии кнопки. Все как в примере. Проблема в том что я используя .Insert на диапазон из 3-х полученных строчек и получаю статичную таблицу не на 20003 строки, а на 40003 строк, потому что эти 3 строчки вставились 20000 раз
да! именно в этом проблема)) 1 проблема в том, что вы используете непригодный для решения задачи инструмент; вы решили носить воду решетом, как только возьмете ведро - сразу получится наносить воды 2 проблема в том, что я спрашиваю какую задачу вы решаете, а вы рассказываете как все не получается с Insertом
и... я больше в этом не участвую - я быстро устаю умоляя кого-то обьяснить задачу) сил на решение уже не остается
да! именно в этом проблема)) 1 проблема в том, что вы используете непригодный для решения задачи инструмент; вы решили носить воду решетом, как только возьмете ведро - сразу получится наносить воды 2 проблема в том, что я спрашиваю какую задачу вы решаете, а вы рассказываете как все не получается с Insertом
и... я больше в этом не участвую - я быстро устаю умоляя кого-то обьяснить задачу) сил на решение уже не остается
типичный завсегдатай, максимум флуда 0 ответов) задача конкретная, в примере максимально понятно и упрощенно расписана, из таблички А скопировать строки в табличку Б, ошибки есть? Есть. Где и как применяется не имеет разницы, не знаешь ответ - листай дальше, умные люди ответят
Эта "мистика какая-то" происходит, если число строк в исходном и конечном диапазонах кратное. У лист1таблица1 - 2 строки, лист1таблица2 - 20: значения кратные, поэтому вставляется 20 строк вместо 2. А у лист2таблица1 - 4 строки, лист2таблица2 - 11 строк: некратное, поэтому вставляется правильно. И если в лист2таблица2 добавить строку, т.е. будет 12, то опять вставится 12 строк вместо 4. И это не зависит от того, таблица это или именованный диапазон. Почему так происходит - ХЗ! В интернетах причину не нашёл (плохо искал). Сейчас настоящие спецы придут и, возможно, пояснят. Но такого рода "мистики" можно попробовать обойти. Например, так работает:
написал: Эта "мистика какая-то" происходит, если число строк в исходном и конечном диапазонах кратное. У лист1таблица1 - 2 строки, лист1таблица2 - 20 : значения кратные, поэтому вставляется 20 строк вместо 2. А у лист2таблица1 - 4 строки, лист2таблица2 - 11 строк: некратное, поэтому вставляется правильно. И если в лист2таблица2 добавить строку, т.е. будет 12, то опять вставится 12 строк вместо 4. И это не зависит от того, таблица это или именованный диапазон. Почему так происходит - ХЗ! В интернетах причину не нашёл (плохо искал). Сейчас настоящие спецы придут и, возможно, пояснят. Но такого рода "мистики" можно попробовать обойти. Например, так работает:
Отлично, то что надо, спасибо! Действительно ошибка вставки из-за размера конечной таблицы, кто бы мог подумать. В оф. документации по методу ни слова про это