Страницы: 1
RSS
Пропадает объединение ячеек после Copy-Paste
 
Имеем: Предположим 4 смежные ячейки в одной строке объединены в одну. После вставки из буфера обмена, данное форматирование пропадает! Достаточно даже просто нажать Ctrl-C/Ctrl-V и все! Ячейки разделены!
Как с этим бороться? Не хочется полностью запрещать вставку, т.к. пользователю может быть удобно копировать значения в ячейку. На форуме первый раз, просьба ногами не бить!
 
Чем докажете? Мо быть это не в XL'e?..  ;)
ps Объединенные ячейки - зло!
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Я уже изрядно с ними намучился, но для красоты таблицы создал колонки из объединенных ячеек, и все вроде неплохо, но при вставке в них значений из буфера обмена, форматирование теряется. Конечно, есть "специальная вставка", но операторам, которые должны будут заполнять табличку я этого не объясню. Пример не привожу, т.к. он слишком примитивный. Просто 4 ячейки объединены в одну. И вот при вставке через Ctrl-V они снова разделяются...
 
Проверил: объединил 4 ячейки в строке, скопировал значение из пятой ячейки и вставил его в объединённую - объединение никуда не делось.
 
Вот только что проделал эксперимент с объединенными ячейками и все отлично у меня вставляется.
 
Цитата
Пример не привожу, т.к. он слишком примитивный.
Вам нужно или нам?! Или нам делать не фига, чтобы по вашей хотелке сотню варьянтов проверять?! Как, откуда копировали, как, куда вставляли?..
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Самый просто случай выделяете сгруппированные ячейки (они выделяются одним кликом, они ведь сгруппированные!), нажимаете Ctrl-C, затем Ctrl-V (в то же место, не двигая фокус) и вуаля! Они разъединенны!

Файлы удалены: превышение допустимого размера вложения [МОДЕРАТОР]
 
caban_2001, формулируйте правильно СРАЗУ! Из стартового сообщения я понял, что пропадает при вставке из буфера обмена. Про КОПИРОВАНИЕ ИМЕННО объединённой не было ни слова!
Если без объединённых ячеек никак не обойтись (а это зло),- имитируйте объединение выравниванием по центру выделения.
 
Цитата
Самый просто случай...
ЗАЧЕМ копи-пастить то, что уже есть на своем месте?!
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Чуть более сложный случай. В таблице ячейки объединены по-строчно. (файл Таблица_с_объед.ячейками.xlsx)
Копируем ячейку в буфер обмена.
Выделяем все строки, как показано на рисунке ВыделеноНесколькоСтрок.jpg
И вставляем ее! Результат - потеря форматирования, разделение объединенных ячеек.
Тут я еще могу немного понять логику Excel. Он использовал форматирование исходной ячейки, что в принципе логично.
НО, мне надо изменить его логику. Надо что бы всегда вставлялось как не форматированный текст, не затрагивая исходного форматирования.
Почему и прошу помощи на форуме у опытных и мудрых.


Рисунки удалены: превышение допустимого размера вложения [МОДЕРАТОР]
Изменено: caban_2001 - 30.09.2016 16:43:42
 
Спецвставка не подходит?
 
И какая связь между первым и вторым вопросами? Там объединение, здесь форматирование текста... При копировании всегда сохраняется формат. Объясняйте всё же оператором про спец. вставку - не думаю, что они у Вас совсем бестолковые.
 
Цитата
Объясняйте всё же оператором про спец. вставку - не думаю, что они у Вас совсем бестолковые.

Ох, они ужасно бестолковые! Видели бы вы что они чудят в таблицах, которые я отсылаю им на е-mail для заполнения! Защищаю от изменений все и вся... И все равно обратно присылают черти-что!
Ну, это лирика, извиняюсь отвлекся от темы.

Связь та что в обоих случаях такой момент в форматировании как признак объединенных ячеек теряется.
Событий по вставке я не обнаружил, сколько не читал документацию по XL. Единственная мысль, которая крутиться в голове - по Worksheet_Change возвращать форматирование назад. Но это как-то грубо и не по фен-шую...

Может все же есть какая-нибудь милая опция xlCopyPaste = FormatOnly ?

Или другое решение?
 
Варианты:
1. Поменять операторов.
2. Запретить вставку. Темы по запрету уже обсуждались.
 
По-первому пункту, обеими руками за. Но кстати, из специальных вставок нормально в моем примере корректно (т.е. как мне надо) работала только одна и уж совсем хитрая для блондинок, а именно "значение и форматы чисел"
По-второму, можно не просто запретить вставку, а переопределить через OnKey Ctrl-V принцип вставки?
Изменено: caban_2001 - 11.08.2013 19:46:41
 
А попробовать?
Я сам - дурнее всякого примера! ...
 
А кстати в World Of Tanks не играете? Тут такое обсуждалось:
http://www.excelworld.ru/forum/2-5724-1
Я сам - дурнее всякого примера! ...
 
Дабы не плодить отдельную тему, использую эту.
Имеется строка с объединенными ячейками (merged cells). При копировании сроки и ее последующей вставке выше следующим кодом объединение ячеек пропадеет.
Код
    Rows(lFirstRow).Offset(1).Resize(1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Если попытаться скопировать строку и вставить ее выше вручную, то объединение ячеек остается, а макрорекордер выдает следующих код:
Код
    Rows(lFirstRow).Select
    Selection.Copy
    Selection.Insert Shift:=xlDown
    Selection.Deselect
Вопрос: есть ли способ сделать код более лаконичным(в т.ч.) без команды Select и сохранив функционал (объединение ячеек остается)?
Или единственный способ это затем отдельным куском кода объединять ячейки? Это вариант, если заранее известны все диапазоны с объединенными ячейками в строке, но если их много, то вычисления этих диапазонов не стоят труда и сделают код более громоздким.

Пример прилагаю. Оба варианта записаны в макросы КопированиеСтроки_wrong (неправильный вариант) и КопированиеСтроки_right (правильный вариант)
Изменено: Radament - 30.09.2016 16:30:07
Страницы: 1
Читают тему
Наверх