Вы здесь
"Специальная вставка" в Excel. Горячие клавиши для специальной вставки на VBA

Пользователи, которые постоянно работают с Excel, наверняка сталкивались с проблемой копирования данных ячейки и их вставки в другие книги (листы), а именно, проблема в том, что при копировании формул и функций, возникают проблемы смещения, да и форматы ячеек могут мешать. Чтобы это избежать в Excel для этого предусмотрена "Специальная вставка", и возможно копию вставить как: "Значения", "Формулы", "Форматы" и т.д. Вот только на варианты этой вставки почему-то не предусмотрены "горячие клавиши", а без "горячих клавиш" очень замедляется процесс работы. Я решил для себя проблему с помощью макросов и сейчас расскажу как.
Итак, создадим новую книгу, сохраним ее под именем "Вставка.xls" и перейдем в Редактор Visual Basic (Alt+F11).
Вставим новый модуль "Insert->Module" (как создать макросы, описано здесь). Теперь добавим туда следующий код:
Sub ВставитьЗначАнгл()
'Сочетание клавиш: Ctrl+q
ВставитьКак 1
End Sub
Sub ВставитьЗначРус()
'Сочетание клавиш: Ctrl+й
ВставитьКак 1
End Sub
Sub ВставитьФормулаАнгл()
' Сочетание клавиш: Ctrl+e
ВставитьКак 2
End Sub
Sub ВставитьФормулаРус()
' Сочетание клавиш: Ctrl+у
ВставитьКак 2
End Sub
Private Sub ВставитьКак(id As Byte)
If Application.CutCopyMode = xlCopy Then 'проверка скопированы ячейки или нет
Select Case id
Case 1: Selection.PasteSpecial Paste:=xlPasteValues 'вставляет в выбранную ячейку значение
Case 2: Selection.PasteSpecial Paste:=xlPasteFormulas 'вставляет в выбранную ячейку формулу
End Select
End If
End Sub
Процедуры "ВставкаЗначАнгл" и "ВставкаЗначРус" вставляют скопированную ячейку как значение.
Процедуры "ВставкаФормулаАнгл" и "ВставкаФормулаАнгл" вставляют как формулы.
Процедура "ВставитьКак (id as byte)"
id - идентификатор команды, указывающий как необходимо вставить (1- Значения, 2 - Формулы, ....)
В условии If проверятся, есть ли скопированные ячейки(-ка) в приложении Excel (Application.CutCopyMode = xlCopy, для определения "Вырезать" значение xlCut).
Внимание: Если не предусмотреть проверку копирования ячейки, то при отсутствии скопированных ячеек, выполнение макроса завершится ошибкой.
Если есть скопированные ячейки, то Select Case id:
- если id = 1, то выполняем команду Selection.PasteSpecial Paste:=xlPasteValues (вставка значения)
- если id = 2, то Selection.PasteSpecial Paste:= xlPasteFormulas (вставка формулы)
- и т.д.
Как работает Select Case читаем в статье "Пример работы с оператором Select..Case в VBA ".
Для того чтоб сократить код программы, я вынес весь функционал в отдельную процедуру ВставитьКак, иначе б пришлось в каждой процедуре дублировать один и тот же код.
В процедурах "ВставкаЗначАнгл", "ВставкаЗначРус", "ВставкаФормулаАнгл" и "ВставкаФормулаАнгл" происходит вызов процедуры ВставитьКак с указанием в ней идентификатора команды 1 или 2.
Закрываем редактор Visual Basic и переходим в окно управления макросами "Сервис->Макрос->Макросы..." (Alt+F8). Мы видим наши четыре макроса:
Теперь необходимо каждому макросу присвоить горячую клавишу. Запуск макросов в Excel может осуществляться с помощью комбинации "Ctrl + назначенная клавиша". Из клавиш, сочетающихся с ctrl, я нашел свободные Q(Й) и E(У). Для удобства в самый раз, нажатие левой рукой(правая с мышей) и клавиши не далеко друг от друга, вот правда сосед опасный, ctrl+w - закрывает книгу.
Выбираем макрос "ВставкаЗначАнгл", жмем кнопку "Параметры..."
в открывшемся окне, там где "сочетание клавиш", указываем "q". Жмем "ОК". Затем присвоим клавишу "й" для "ВставкаЗначРус".
Для чего такое назначение клавиш?
Просто в Excel, сочетание CTRL с одной и той же клавишей, но в разных раскладках(RU, EN), почему-то отличаются. Поэтому, для того чтоб вставка произошла при любой раскладке клавиатуры, и сделано по два макроса с присвоенными им клавишами в разной раскладке.
Аналогично присвойте клавиши "e" и "у" процедурам "ВставкаФормулаАнгл" и "ВставкаФормулаАнгл".
Все! Теперь можете опробовать работу макросов.
Для того чтобы макросы работали при запуске Excel во всех книгах я подключил их как "Надстройку". Чтобы это сделать необходимо:
Сохранить нашу книгу "Вставка.xls", в формат надстройки - "Файл->Сохранить как", в списке тип файла выбрать "Надстройка Microsoft Office Excel (*.xla)"
Затем, в Excel необходимо открыть окно "Надстройки" (Сервис->Надстройки...)
Щелкнуть "Обзор" и выбрать сохраненную нами надстройку "Вставка.xla". В списке должна появится новая надстройка "Вставка", если не стоит галочка, то отметьте ее. Жмем ОК.
Данный макрос также работает и в более поздних версиях Excel (2007-2010). Где найти окно "Надстройки" в Excel 2007-2010 читайте в статье "Открываем панель "Разработчик" в Excel 2010".
А на этом все. Благодарю за внимание. Надеюсь статья для Вас будет полезна.
Прикрепленный файл: hot_special_paste.zip
Похожие статьи:
- Добавить комментарий
- Кол-во просмотров: 31273
Комментарии
Очень-очень круто. Жалею, что раньше эту инструкцию не нашла. И все очень понятно и просто.
Спасибо :)
Пожалуйста!
с Макросами не очень.. другие горячие клавиши закрыл.. {ссылка удалена} , вот вариант гораздо лучше.
Данный пример отлично работает в 2003 и 10-ом Экселе. Клавиша Q(й) свободная, если только ранее сами не назначили. Использую уже два года, проблем не вызывало с пересечением. Правда у этого способа есть недостаток, это чистка истории, что вызывает иногда трудности.
Добавить комментарий