Уважаемые, вставку скопированного формата и ширину столбца с применением специальной вставки я описываю аж вот так для того, чтобы скопировать и форматы и значения и ширину столбцов:
.Range(irange).PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
.Range(irange).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
, где irange, понятно, переменная содержащая конкретное указание на адрес куда вставляю данные.
Нельзя ли это же сделать без Paste, то есть через ".copy destination:=" к примеру? В общем как-то избавиться от обращения к буферу и от Paste. Не то чтобы очень нужно, но раздражает что помимо доп. строк с этим пасте надо еще помнить, что буфер надо почистить.
И второй вопрос сразу: если копирование прописываешь как к примеру workbook1.sheet1.range1 = workbook2.sheet2.range2, то буфер после этих операций чистить не надо. Правильно понимаю?
альтернатива SpecialPaste
Модератор: Naeel Maqsudov
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Только если сделать .copy, а потом еще и ширину столбца присвоить следом. Т.е. в 2 команды." писал(а):Нельзя ли это же сделать без Paste, то есть через ".copy destination:=" к примеру?
Сорри, а поподробнее можно
? Я сейчас в исходном примере делаю .copy (оставил за рамками за очевидностью) и затем два paste: форматов и ширины столбцов. Затем чищу буфер. Итого четыре команды. Как это делается двумя командами? И .copy - это по-любому использование буфера. Правильно?
И во втором вопросе-примере буфер используется или нет? Надо ставить команду чистки буфера после применения такого кода?

И во втором вопросе-примере буфер используется или нет? Надо ставить команду чистки буфера после применения такого кода?
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Код: Выделить всё
Range("A:A").Copy Range("E1") 'копируем данные с форматом
Range("E1").ColumnWidth = Range("A:A").ColumnWidth 'копируем ширину столбца
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Для нескольких столбцов это тоже пожходит!
Код: Выделить всё
Range("A:B").Copy Range("E1")
Range("E1:F1").ColumnWidth = Range("A:B").ColumnWidth
Сорри, не разобрался: помимо переноса ширины еще добавлять нужно перенос высоты строки? Разве excel при отсутствии указаний не будет использовать здесь высоту по умолчанию?
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Именно что что
Т.е если в источнике была другая при простом копировании, скажем на другой лист, исходная высота строк пропадёт. Поэтому либо SpecialPaste, либо установка
ширины и высоты.
.будет использовать высоту по умолчанию
Т.е если в источнике была другая при простом копировании, скажем на другой лист, исходная высота строк пропадёт. Поэтому либо SpecialPaste, либо установка
ширины и высоты.
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com