Группы и рассылки:

Вы здесь

"Специальная вставка" в 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

 

 

 

Автор: 
Deys
Категории: 

Комментарии

Очень-очень круто. Жалею, что раньше эту инструкцию не нашла. И все очень понятно и просто.
Спасибо :)

 

Пожалуйста!

 

с Макросами не очень.. другие горячие клавиши закрыл.. {ссылка удалена} , вот вариант гораздо лучше.

 

Данный пример отлично работает в 2003 и 10-ом Экселе. Клавиша Q(й) свободная, если только ранее сами не назначили. Использую уже два года, проблем не вызывало с пересечением. Правда у этого способа есть недостаток, это чистка истории, что вызывает иногда трудности.

 
Очень крутой совет! Спасибо! Нужна была только вставка значений. Записал макрос, вставил туда строку If Application.CutCopyMode = xlCopy Then. И все заработало!
 

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Для предотвращения регистрации спам-роботов введите символы с картинки.
CAPTCHA на основе изображений
Введите символы, изображенные на картинке.
Разместить свое видео на сайте
Вы можете разместить свои 
видео-уроки на сайте
БЕСПЛАТНО!


Подробнее>>>