Страницы: 1
RSS
Вставка строки в таблицу, содержащую объединённые по вертикали ячейки
 
Добрый день!

Имеется таблица с объединёнными ячейками по вертикали. Требуется скопировать имеющуюся строку в эту таблицу.
Последовательность действий видится такой:
1. Выделить нужную строку, которая проходит через объединённые ячейки по вертикали.
2. Скопировать.
3. Вставить на одну строку выше.
4. Сбросить диапазон копирования.

Метод Select для 1-го пункта не подходит, поскольку выделяет не одну строку, а несколько - в количестве объединённых по вертикали ячеек.
Метод
Код
Application.Goto Reference:=ActiveCell.Address(ReferenceStyle:=xlR1C1) & "," & ActiveCell.EntireRow.Address(ReferenceStyle:=xlR1C1) 
выделяет нужную строку и ещё одну ненужную ячейку, при копировании которых Selection.Copy выдаёт ошибку "Данная команда неприменима для нескольких фрагментов.
Как быть?
[
 
Смотря как вы хотите копировать. Если просто строку одну, то
Код
Rows(r).Copy
Rows(r).Insert Shift:=xlDown
Application.CutCopyMode = False
Но из объединённых ячеек не скопируется информация.
Если вы хотите вставить посреди объединённого диапазона то так же.
А вот если вы хотите скопировать строку, в которой имеются данные в объединённых диапазонах и вы хотите так же скопировать данные из этих диапазонов и вставить строкой выше, то тут сложнее. Что вам именно надо?
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Т.е. последовательность действий получается такой:
Код
        With ActiveCell
          r = .EntireRow.Address(ReferenceStyle:=xlR1C1)
          Application.Goto Reference:=.Address(ReferenceStyle:=xlR1C1) & "," & r
        End With
        Rows(r).Copy
        Rows(r).Insert Shift:=xlDown
        Application.CutCopyMode = False
но в этом случае возникает ошибка в строке:
Код
Row(r).Copy
из объединённых ячеек копировать инфо не нужно.
Нужно вставить строки в пределах объединённого диапазона (во вложенном примере C1:C5).
 
Решение пока не найдено.
 
Цитата
RDT написал:
1. Выделить нужную строку, которая проходит через объединённые ячейки по вертикали. 2. Скопировать. 3. Вставить на одну строку выше. 4. Сбросить диапазон копирования.
Привет!
Код
'Не надо выделять
    Rows(4).Copy
    Rows(4).Insert Shift:=xlDown
    Application.CutCopyMode = False
Сравнение прайсов, таблиц - без настроек
Страницы: 1
Наверх