Как скопировать с листа на лист с сохранением форматирования

Программирование на Visual Basic for Applications
qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Как скопировать с листа на лист с сохранением форматирования

Сообщение qwertyhp » 09.06.2010 (Ср) 22:53

Есть ячейка с адресом Sheets(Лист1).Range("A1").Select. В другом листе есть другая ячейка с адресом Sheets(Лист2).Range("A3").Select.
Требуется скопировать первую ячейку с её содержимым в адрес второй ячейки с полным сохранением форматирования первой - теми же шрифтами, цветами, выравниваниями и т.п. Но при этом не прыгать с листа на лист, вызывая мелькание на экране (ячеек много), а так же скрытно, как если бы из ячейки в ячейку копировались только данные. То есть визуально оставаясь на одном листе.
Клевал я эту Range, клевал - ничего не выходит. :(
И еще. Есть такая штука - ActiveCell.Characters(Start:=i, Length:=j).Insert(x) = x, которая позволяет вставлять (заменять) фрагменты строки с сохранением форматирования оной. Но работает она, как видно из названия, только с активной ячейкой. А как аналогично работать с неактивной?
Кто знает - пожалуйста, подскажите.
Пятачок Forever! :)

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Как скопировать с листа на лист с сохранением форматирования

Сообщение Alec » 09.06.2010 (Ср) 23:32

qwertyhp писал(а):Есть ячейка с адресом Sheets(Лист1).Range("A1").Select

Э, а что, по-твоему, такое Select, как слово иностранного языка, и как элемент используемого языка программирования?
И вообще, что означает каждая часть этого "адреса" (в котором, возможно, не хватает пару кавычек)?
qwertyhp писал(а):Клевал я эту Range, клевал - ничего не выходит.

Интересно, каким это образом?
PS. Excel, кстати, содержит неплохую справку по VBA...
Иногда лучше вовремя остановиться...
И начать заново!

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Как скопировать с листа на лист с сохранением форматирования

Сообщение qwertyhp » 09.06.2010 (Ср) 23:58

Согласен. Следовало написать "На листе MS Excel с именем "Лист1" есть ячейка с адресом "A1"", и далее - в том же духе. Написал короче и интуитивно понятнее (наверное). А Select - это по-заумному, по-иноземному. Клевал по-разному, не выходит. Помогите, кто знает.
Пятачок Forever! :)

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Как скопировать с листа на лист с сохранением форматирования

Сообщение Alec » 10.06.2010 (Чт) 0:33

Иногда лучше вовремя остановиться...
И начать заново!

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Как скопировать с листа на лист с сохранением форматирования

Сообщение qwertyhp » 10.06.2010 (Чт) 1:29

Сообщение удалено как потерявшее актуальность.
Последний раз редактировалось qwertyhp 10.06.2010 (Чт) 1:50, всего редактировалось 1 раз.
Пятачок Forever! :)

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Как скопировать с листа на лист с сохранением форматирования

Сообщение qwertyhp » 10.06.2010 (Чт) 1:46

Нашёл. Проблема решена.
Была ячейка, в которой текст набран РАЗЛИЧНЫМИ шрифтами *цветом, и т.п. - буквально винегрет из размеров, выделений и т.д. - и мне всё это нужно было без потерь и визуальной смены листа скопировать на другой лист.
Привожу код, вдруг кому пригодится:
Код: Выделить всё
Sub КопированиеЯчейки()
' Копирование ячейки "как есть", один-в-один :
    Sheets("Лист1").Range("A2").Copy
    Sheets("Лист2").Range("A8").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.CutCopyMode = False
End Sub

Alec, спасибо за совет обратиться к Справке. Помогло. Пошёл шКодить дальше))))).
Последний раз редактировалось qwertyhp 10.06.2010 (Чт) 1:54, всего редактировалось 1 раз.
Пятачок Forever! :)

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Как скопировать с листа на лист с сохранением форматирования

Сообщение Alec » 10.06.2010 (Чт) 1:54

qwertyhp писал(а):Требуется скопировать первую ячейку с её содержимым в адрес второй ячейки с полным сохранением форматирования первой - теми же шрифтами, цветами, выравниваниями и т.п.

qwertyhp писал(а):Сам я нашел решение

Запись макросов + избавление от выделения ячеек. Только, когда ты то же самое делаешь без макросов, ты тоже во второй ячейке заново набираешь текст, а потом делаешь специальную вставку? Или просто - скопировать/вставить?
Код: Выделить всё
    Sheets("Лист1").Range("A2").Copy
    Sheets("Лист2").Paste Range("A8")
    Application.CutCopyMode = False


Добавлено позже.
Первоначально это был ответ на твой стертый пост...
Иногда лучше вовремя остановиться...
И начать заново!

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Как скопировать с листа на лист с сохранением форматирования

Сообщение qwertyhp » 10.06.2010 (Чт) 2:06

Всё равно спасибо. Только поправка - Sheets("Лист2").Paste Range("A8") в Вашем коде вставляет в активный лист, не в указанный.
Пятачок Forever! :)

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Как скопировать с листа на лист с сохранением форматирования

Сообщение Alec » 10.06.2010 (Чт) 2:09

Однако... Точно!
Код: Выделить всё
    ActiveSheet.Paste Sheets("Лист2").Range("A8")
Иногда лучше вовремя остановиться...
И начать заново!

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Как скопировать с листа на лист с сохранением форматирования

Сообщение Alec » 11.06.2010 (Пт) 1:24

Оказывается, можно и одной строчкой:
Код: Выделить всё
Sheets("Лист1").Range("A2").Copy Sheets("Лист2").Range("A8")
Иногда лучше вовремя остановиться...
И начать заново!

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Как скопировать с листа на лист с сохранением форматирования

Сообщение qwertyhp » 11.06.2010 (Пт) 16:57

Отличное решение! Элегантное и компактное! Спасибо!
Пятачок Forever! :)


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList