Vba excel скопировать строку и вставить ниже
Добрый день! Ребят, подскажите пожалуйста, что то не соображу:
Создал форму с кнопками Скопировать, Вставить, Вырезать, Удалить.
Функции макроса должны работать с целой строкой, а не с отдельными ячейками. В строке есть формулы. Так же нужно предусмотреть copy/cut нескольких строк.
Вставка скопированной/вырезанной строки должна перезаписывать строку, которую выделили мышкой.
Проблема:
После Selection.EntireRow.Copy вставка методом Rows(ActiveCell.Row).PasteSpecial Paste:=xlPasteAll проходит как надо.
Но этот метод не работает для Selection.EntireRow.Cut.
Полагаю надо использовать Insert для вставки вырезанной строки. Или как?
Вопрос: Как вставить строку без сдвига, а с перезаписью выделенной строки??
__________________Помощь в написании контрольных, курсовых и дипломных работ здесь
[Excel] скопировать/вырезать диапазон ячеек и вставить
Всем привет! Не получается реализовать Cut и Copy (можно и для Range). Хочу на первом листе Excel.
Как вставить, скопировать, вырезать текст в консольном приложении?
Я знаю, что это как бы большой скачок назад после WPF и WinForms, но всё же, понадобилось. Как.
Вырезать и вставить строку из одного xml в другой
Имеется такого вида xml файл <?xml version="1.0" encoding="UTF-8"?> <ns:Documents.
К сожалению тут не известно заранее куда вставлять скопированную строку. mr_eas, Я указал конкретный адрес для примера, а обычно я делаю (к вашему сожалению вы не первый, кто это делает) так. Формирую адрес ячейки в строчной переменной, например, S и вместо [A7] ставлю Range(S) или Cells(i,j)
В таком случае не получится сперва ткнуть мышкой в строку, скопировать ее макросом, потом ткнуть на другую строку и вставить макросом? У меня подвязка будет и на гор. клавиши и на кнопки формы, вызывать дополнительные окна в которых можно указать диапазон вставки строк не пойдет.
Вот такой вариант почти работает верно, только когда происходит вставка после cut, на этом месте остается пустая строка, не пойму почему =(
Не подскажите, в чем может быть дело - в какой то момент после вставки строк с помощью комбинаций ctrl+c/ctrl+x и ctrl+v появляется ошибка и ексель виснет намертво: "Ошибка автоматизации: вызванный объект отключен от своих клиентов"
Подскажите пожалуйста, правильно ли я вообще работаю со строками ?
При открытии, если включены макросы, срабатывает функция Auto_Open, которая назначает комбинации и снимает защиту листа.
mr_eas, а что за ерунда у вас написана, даже не могу расшифровать, чтобы вам было понятно, что этот обработчик события по клику на этой кнопке должен делать. Сама себя копировать?Наверно вы хотите иметь что-то типа Rows(какая вам нужна). Copy C этой кнопки вызвается функция, которая описана в Module1
mr_eas, я скопировал ваши строки из файла, они не похожи на те, что вы привели сейчас
И в чём теперь проблемы?
Вы привели код формы, я код модуля на который ссылается код формы, сделал скриншот для наглядности.
Проблемы:
1) В какой то момент после вставки строк появляется ошибка: "Ошибка автоматизации: вызванный объект отключен от своих клиентов". После чего либо виснет эксель или начинает себя странно вести - теряется выделение строк, не верно определяет активную ячейку при редактировании текста. Появляется в разное время не смог отследить зависимости от чего либо.
2) Иногда выскакивает ошибка: "метод copy из класса range завершен неверно"
Если есть возможность, пожалуйста проверьте, возникает ли проблема 1 и у вас при копировании и вставки с использованием горячих клавиш ctrl+ [x/z/v]
Запускал вашу форму вручную, копировал, вырезал, вставлял. Было всё нормально. При вырезке, если активной ячейкой остается вырезаемая, то вылетает. Надо в макросе предусмотреть такую ситуацию, а то ведь юзеры всякие бывают.
По поводу отключки от клиента посмотрите ссылки, может там появилась какая-то ненужная ссылка. При использовании Paste можно и не писать EntireRow, достаточно выделенной ячейки. А вы сами запускать вашу программу на компьютерах своих друзей не пробовали? А то что-то много проблем на таких простых операциях. Спасибо! Да я пробовал на разных компьютерах, в какой то момент везде выскакивает ошибка автоматизации. Тут ломаться то не чему =( Есть предположение что этот файл редактировался когда то на макбуке, а теперь какие то проблемы с совместимостью.
mr_eas, откройте новый файл (пустой), скопируйте туда отдельно все макросы. скопируйте ваши листы, лучше просто выделив блоки с информацией и убрав на всякий случай ваши плюсики со строк. Есть ещё команда DoEvents, у меня был человек, на компе, которого было что-то похожее на ваши проблемы (у него быстрый ноут), тогда как у меня всё было нормально (у меня старенький ноут). Этот оператор попробуйте поставить в макрос с Paste, до или после строки с командой (а можно и с обеих сторон для проверки)
Добавлено через 6 минут
а связи с другими файлами вы смотрели?
Burk, на листе есть еще 2 вкладки, я сперва не обратил внимание, что они ссылаются друг на друга. Проблема судя по всему из-за них, т.к. удалив их все нормально отрабатывает.
Обновил тестовый файлик, посмотрите пожалуйста. На странице main, ведется вся работа, копипастятся строки, на dop и dop2 строются какие то сводные таблицы. Формулы при вставке на странице main протягиваются нормально, и подхватываются на остальных страницах. В какой то момент на методе .insert выдает "Ошибка автоматизации. ", ексель виснет, закрывается только через диспетчер задач, последовательность ошибки не смог отловить =(
Не подскажите, как-то может с другой стороны походить к этой задаче?
Файл обновил, снял защиту листа, чтобы гор. клавиши привязались нужно выполнить ф-ию SetOnKeys.
Вырезать строку запросм из одной таблицы и вставить в другую
Ребята, подскажите, пожалуйста как можно вырезать строку запросом из одной таблицы и вставить их в.
Как скопировать строку c одного файла и вставить в другой файл эту же строку с символом в конце “_”
Подскажите, как можно через cmd скопировать строку с одного файла 1.txt и вставить в другой 2.txt.
Вырезать нужный фрагмент из строки и вставить его в новую строку
Здравствуйте. Возникла такая задача: у нас есть ссылка на презентацию, например эта.
Как в Visual Basic вырезать строку с одной команды и вставить в другую?
Как в Visual Basic вырезать строку с одной команды и вставить в другую? Потом эта строка должна.
Подобно функции листа в Excel, мы также можем копировать данные вставки или набор значений в VBA. В обычных данных мы используем CTRL + C, чтобы скопировать выборку данных, а затем CTRL + V, чтобы вставить выбранные данные в целевую ячейку. Но то же самое в VBA делают определенные коды, которые мы узнаем в этой статье.
Как мы используем копирование и вставку в Excel VBA? Для этого сначала нам нужно активировать целевой лист или рабочую книгу, из которой мы хотим скопировать любой диапазон данных, и этот выбор копируется определенным кодом, когда этот выбор успешно скопирован, мы можем продолжить и вставить данные в целевой диапазон ячеек.
Синтаксис для копирования данных в VBA выглядит следующим образом:
Теперь синтаксис для вставки данных в другой лист или в любой другой диапазон ячеек выглядит следующим образом:
Мы используем оператор Dot (.) Для использования методов копирования и вставки в VBA.
Мы можем скопировать весь столбец и вставить его в другой столбец, а также мы также можем скопировать всю строку и вставить ее в другую строку. Мы узнаем все это в этой статье.
Примечание. Чтобы использовать VBA в Excel, убедитесь, что вкладка «Разработчик» включена из вкладки «Файл», а затем в раздел настроек параметров.
Как использовать Excel VBA Copy Paste?
Мы научимся использовать VBA Copy Paste с несколькими примерами в Excel.
Вы можете скачать этот шаблон VBA Copy Paste Excel здесь - Шаблон VBA Copy Paste Excel
VBA Copy Paste - Пример № 1
Для демонстрации у меня есть случайное значение в ячейке A1, которое я хочу скопировать и вставить в ячейку B1, используя код VBA. Посмотрите, какие данные находятся в ячейке A1, а ячейка B1 пуста.
Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:
Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.
Шаг 2: Как только редактор VB откроется, нажмите на кнопку вставки, а затем на кнопку Вставить модуль, чтобы вставить окно кода.
Шаг 3: Объявите подфункцию, чтобы начать писать код.
Код:
Шаг 4. Сначала активируйте лист, чтобы использовать свойства листа с помощью следующего кода.
Код:
Шаг 5: Скопируйте данные, которые находятся в ячейке A1, с помощью следующего кода.
Код:
Шаг 6: Теперь вставьте скопированные данные в целевую ячейку, которая является ячейкой B1, с помощью следующего кода.
Код:
Шаг 7: Запустите приведенный выше код с помощью кнопки запуска и посмотрите результат в ячейке B1.
VBA Copy Paste - Пример №2
У меня есть данные в столбце C, и я хочу скопировать все данные или значения и вставить их в столбец D, используя код VBA. Посмотрите ниже, что это за данные в столбце C, и что столбец D пуст.
Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:
Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.
Шаг 2: Нажмите на вставленный модуль, чтобы открыть окно кода,
Шаг 3: Объявите подфункцию, чтобы начать писать код.
Код:
Шаг 4. Сначала активируйте рабочий лист с помощью следующего кода.
Код:
Шаг 5: Скопируйте данные в столбце C с помощью следующего кода.
Код:
Шаг 6: Теперь, чтобы вставить данные в столбец D, используйте следующий код.
Код:
Шаг 7: Запустите следующий код с помощью кнопки запуска или нажмите F5.
Запустите код, чтобы увидеть следующий результат.
VBA Copy Paste - Пример № 3
Теперь для этого примера у меня есть целый диапазон данных в диапазоне ячеек G1: H3, и я хочу скопировать данные в диапазоне ячеек I1: J3. Посмотрите ниже на данные, которые у меня есть в диапазоне ячеек G1: H3, а диапазон ячеек I1: J3 пуст.
Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:
Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.
Шаг 2: Нажмите на вставленный модуль, чтобы открыть окно кода,
Шаг 3: Объявите подфункцию, чтобы начать писать код.
Код:
Шаг 4. Сначала активируйте лист, чтобы использовать его свойства с помощью следующего кода.
Код:
Шаг 5: Скопируйте данные в целевой диапазон ячеек с помощью следующего кода.
Код:
Шаг 6: Теперь, чтобы вставить данные в ячейку назначения, используйте следующий код.
Код:
Шаг 7: Запустите приведенный выше код с помощью кнопки запуска или нажмите F5, чтобы увидеть следующий результат.
VBA Copy Paste - пример № 4
Для этого примера у меня есть данные в строке 10, и я хочу вставить данные в строке 11. Посмотрите ниже, чтобы увидеть, какие данные находятся в строке 10, а строка 11 свободна.
Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:
Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.
Шаг 2: Нажмите на вставленный модуль, чтобы открыть окно кода,
Шаг 3: Объявите подфункцию, чтобы начать писать код.
Код:
Шаг 4. Активируйте рабочий лист, чтобы использовать свойства рабочего листа.
Код:
Шаг 5: Скопируйте строку 10 со следующим кодом.
Код:
Шаг 6: Вставьте данные строки 10 в строку 11 с помощью следующего кода.
Код:
Шаг 7: Запустите приведенный выше код, нажав F5, чтобы увидеть следующий результат.
То, что нужно запомнить
- Чтобы использовать данные из любого листа для их копирования, нам нужно сначала активировать лист.
- Точно так же, когда нам нужно вставить данные в любой другой лист в VBA, нам нужно сначала активировать целевой лист.
- Если мы копируем весь столбец или строку и вставляем данные в любой другой столбец, тогда данные в любом месте строки или столбца в целевых ячейках копируются и вставляются в целевые ячейки. Это может привести к определенным нежелательным данным.
- Лучший способ скопировать данные - скопировать определенный диапазон и вставить данные в целевые ячейки.
Рекомендуемые статьи
Это было руководство к VBA Copy Paste. Здесь мы обсудили, как использовать Excel VBA Copy paste, а также некоторые практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
Читайте также: