Программно копирую диапазон ...
Range("B13:L13").Copy
Range("N13").Select
ActiveSheet.Paste
После этого остается выделенным "пунктирной рамкой копирования" диапазон B13:L13
и просто выделенным диапазон, куда копировали.
Как снять эти выделения. При ручном способе достаточно нажать ESC.
Так как правильно сделать, программно посылать ESC или еще как-то?
Как избавиться от выделения диапазона после копирования в Excel
Модератор: Naeel Maqsudov
Избавиться о пунктирной линии можно, если использовать, например :
Хотя в Вашем случае достаточно просто использовать :
P.S. Если параметры форматирования ячеек копировать не надо, то от применения метода .Copy можно отказаться.
Код: Выделить всё
Application.CutCopyMode = False
Код: Выделить всё
Range("B13:L13").Copy Destination:=Range("N13")
' Or
Range("B13:L13").Copy Range("N13")
pashulka,
Ваши варианты копирования диапазонов я взял на вооружение,
Application.CutCopyMode = False - у меня работает только когда его устанавливаешь в конце всех операций,
почему-то при автоматической записи макроса, Excel ставит ее перед командой Copy, и функция не работает.
Мой исходный вариант:
Ваши варианты копирования диапазонов я взял на вооружение,
Application.CutCopyMode = False - у меня работает только когда его устанавливаешь в конце всех операций,
почему-то при автоматической записи макроса, Excel ставит ее перед командой Copy, и функция не работает.
А можно ли упростить код для случая копирования только формата диапазона?Sub Макрос1()
' Макрос1 Макрос
' Макрос записан 10.11.2005 (HomePC)
Range("B5:B12").Select
Application.CutCopyMode = False
Selection.Copy
Range("G5").Select
ActiveSheet.Paste
End Sub
Мой исходный вариант:
Range("B13:L23").Copy
Range("N13").Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Устанавливать значение свойства .CutCopyMode действительно необходимо после применения метода .Copy
Что касается копирования форматов ячеек, то могу предложить вот этот вариант :
Что касается копирования форматов ячеек, то могу предложить вот этот вариант :
Код: Выделить всё
Range("B13:L23").Copy
Range("N13").PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
' Or
With Application
.Range("B13:L23").Copy
.Range("N13").PasteSpecial Paste:=xlFormats
.CutCopyMode = False
End With
Спасибо,
устраняется как я понял лишнее действие выделения диапазона,
и лишние операнды в функции PasteSpecial также можно опустить.
Вот какой заботливый редактор записи макросов
А снятие обычного выделения с конечного диапазона после завершения копирования я решил простым выделение одной из ячеек, например Range("A1").Select.
устраняется как я понял лишнее действие выделения диапазона,
и лишние операнды в функции PasteSpecial также можно опустить.
Вот какой заботливый редактор записи макросов

А снятие обычного выделения с конечного диапазона после завершения копирования я решил простым выделение одной из ячеек, например Range("A1").Select.
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Он просто повторяет то что делаешь ты - максимально точнозаботливый редактор записи макросов

А уж ты, как программер, лезешь в доки и хелпы и убираешь лишнее


Да нет, претензий к редактору макросов у меня нет, наоборот код узнаешь при его работе.
А "заботливый" употребил в добром и благодарном смысле.
А "заботливый" употребил в добром и благодарном смысле.