|
![]() |
#1 |
Moderator
|
![]() Цитата:
Сообщение от Poleax
![]() при вставки объединенной ячейки появляется сообщение "Данная операция приведет к отмене объединения ячеек" т.е. ниже в файле Excel есть объединенные ячейки. Объединение с них снимается и в итоге данные передаваемые в именованную ячейку вставляются не в 3-ную объединенную, а самую первую. А две остальных даже не копируются вниз.
![]() Как сделать так чтоб можно было копировать и дублировать именованную ячейку без потери объединения? Если всё-таки хочется решать задачу именно в вашей постановке, то видится такой извратный вариант - сдвигать все оставшиеся ячейки шаблона ниже места вставки вправо (как дверь шкафа-купе), потом делать копирование, потом возвращать "дверь" обратно. Стоит ли игра таких свеч? |
|
![]() |
#2 |
Модератор
|
Цитата:
Сообщение от Gustav
![]() ![]() Цитата:
Сообщение от Gustav
Самый простой вариант решения проблемы - вернуться к вставке полных строк. Еще вариант - отказаться от объединенных ячеек. В подавляющем большинстве практических случаев они могут быть безболезненно для отображения заменены центрированием по выделению (Формат \ Ячейки \ Выравнивание \ По горизонтали \ По центру выделения).
Если всё-таки хочется решать задачу именно в вашей постановке, то видится такой извратный вариант - сдвигать все оставшиеся ячейки шаблона ниже места вставки вправо (как дверь шкафа-купе), потом делать копирование, потом возвращать "дверь" обратно. Стоит ли игра таких свеч? ![]() В отчете ячейки слишком мелкие и они объединены в "по больше". Как у именованной ячейки узнать с кем она объединена? (сколько ячеек в право и сколько вниз.) А потом после вставке основной первой именованной все остальные продублировать также и после всего их объединить? ![]() |
|
![]() |
#3 |
Moderator
|
Ну-ну! Идём в Excel в редактор кода VBA по Alt+F11, пишем в окне отладки: Range("A1").Insert
Щелкаем мышкой в середине слова Insert и жмем F1 - появляется топик хелпа Читая топик, видим интересующую нас константу xlShiftDown. Копируем эту строку в окно отладки и ставим перед ней восклицательный знак (сократитель команды Print), после чего нажимаем Enter Ну это-то конечно. Типа "пусть работает железная пила" ![]() См. MergeArea - cвойство объекта Range. Возвращает тоже Range. Например, если объединены ячейки A1:C2, то Range("A1").MergeArea.Address вернет $A$1:$C$2. Еще есть булевское свойство MergeCells объекта Range - возвращает True, если ячейка входит в объединение. |
|
![]() |
#4 |
Moderator
|
Цитата:
Код: Sub Macro1() Range("A6:C12").Insert xlShiftToRight 'xlShiftToRight = -4161 End Sub Sub Macro2() Dim rng As Range Set rng = Range("B3") rng.Insert xlShiftDown 'xlShiftDown = -4121 rng.Copy rng.Offset(-rng.Rows.Count) End Sub Sub Macro3() Range("A6:C12").Delete xlShiftToLeft 'xlShiftToLeft = -4159 End Sub После отработки Macro1 - сдвинули "дверь" вправо: После отработки Macro2 - выполнили размножение (объединенная голубая ячейка не мешает): После отработки Macro3 - вернули "дверь" назад: |
|
|
За это сообщение автора поблагодарили: aidsua (1). |