Если Вы не сильны в программировании, но, при этом, Вам необходимо реализовать какую-либо задачу, выходящую за рамки стандартных функций и команд MS Excel, можно поискать решение в интернете. Решение, скорее всего, найдется в виде VBA кода, который необходимо скопировать и вставить в Вашу рабочую книгу, потом каким-то образом заставить этот код работать на Вас, в этой статье я расскажу, как это сделать.
Рассмотрим два примера:
Ищем и используем команду
Ищем и используем функцию
1. Ищем и используем команду
Например, нам необходима команда, которая бы вставляла в выделенные ячейки цифру "1". Запускаем поисковик, набираем поисковую фразу, получаем результаты, начинаем просматривать, находим код примерно в таком виде:
Sub Вставка1() Dim q As Object On Error Resume Next Set q = Cells For Each q In Selection q = 1 Next q End Sub
Выделяем данный код (без нумерации строк, начиная со слова Sub) и нажимаем Ctrl+C. Переходим в свою рабочую книгу MS Excel и нажимаем сочетание клавиш Alt+F11, у вас откроется окно редактора VBA:
В левом окне "Project - VBA Project" выбираем (щелкаем мышкой) нашу рабочую книгу, в которую необходимо вставить макрос, например, "VBAProject (Книга2)":
Я не вижу окна "Project - VBA Project".
В пункте меню "Insert" выбираем "Module":
В левом окне "Project - VBA Project" у вас должна появиться новая папка "Modules" и в ней новый объект "Module1":
Переходим курсором в правое "Большое" поле для ввода и нажимаем Ctrl+V, скопированный макрос вставиться в модуль:
У меня в коде "????????"
После чего закрываем редактор VBA и возвращаемся в рабочую книгу.
Если вы работаете в MS Excel 2007, 2010 или 2013, вам необходимо будет сохранить вашу рабочую книгу как "Книга Excel с поддержкой макросов (.xlsm)":
В MS Excel 2003 достаточно будет просто сохранить файл.
Чтобы выполнить скопированный в книгу макрос выделяем ячейки, в которые необходимо вставить "1", нажимаем в меню "Вид" кнопку "Макросы" и в выпавшем списке выбираем пункт "Макросы" или нажимаем сочетание клавиш Alt+F8:
Откроется диалоговое окно "Макрос", в списке макросов выбираем свой и нажимаем кнопку "Выполнить":
Макрос выполнится - в выделенные ячейки вставиться "1":
Чтобы макрос можно было запускать без лишних телодвижений, читайте статьи "Как сделать кнопку для запуска своего макроса?" и "Как назначить макросу сочетание клавиш?".
Макросы в MS Excel можно вставлять в следующие места:
Обычно, человек, который публикует код, указывает, куда его необходимо вставить, в модуль, в лист или книгу.
Чтобы вставить код в Рабочий лист, в левом окне редактора VBA выберите соответствующий лист, щелкните по нему два раза левой кнопкой мышки, переместите курсор в правое поле ввода и вставьте код.
Для вставки кода в Книгу, выберите "ЭтаКнига":
Давайте потренируемся. Вставьте код опубликованный ниже в "Лист1".
Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo a If Target = 2 Then VBA.MsgBox ("Ячейка " & Target.Address & " = 2") End If a: Exit Sub End Sub
Данный макрос выводит информационное сообщение если вы введете в любую ячейку листа "2".
Вернитесь в рабочую книгу, перейдите в "Лист1" и введите в ячейку "А1" цифру "2" и нажмите Enter, после чего у вас должно появиться следующее сообщение:
Если вы видите это сообщение, то вы все сделали правильно. Если нет, то вы вставили код куда-то не туда, повторите попытку.
При вставке кода, необходимо внимательно следить за тем, куда вы его вставляете. Это можно сделать посмотрев на то, что написано в заголовке окна редактора VBA:
2. Ищем и используем функцию
Находим в интернете VBA код функции, которая подсчитывает, например, количество слов в ячейке:
Public Function КолСловВЯчейке(Ячейка As Range) Dim q As Variant Application.Volatile q = VBA.Split(Application.WorksheetFunction.Trim(Ячейка.Value), " ") КолСловВЯчейке = UBound(q) + 1 End Function
Копируем код, нажимаем сочетание клавиш Alt+F11, откроется редактор VBA:
Добавляем новый модуль в свою книгу и в этот модуль вставляем скопированный код:
Закрываем редактор VBA и переходим в свою рабочую книгу. Создаем новый лист (необязательно) в ячейку A1 вводим текст "мама мыла раму". Встаем в ячейку, в которой хотим получить результат (количество слов), в меню "Формулы" нажимаем кнопку "Вставить функцию":
В открывшемся окне "Вставка функции" в поле "Категория" выбираем "Определенные пользователем"
В списке доступных функций выбираем "КолСловВЯчейке", нажимаем "ОК":
Вводим необходимые аргументы и нажимаем "ОК":
Получаем результат:
Важно:
Если вы не сохраните книгу, в которую вставили макрос как "Книгу с поддержкой макросов", все модули с макросами удаляться и вам придется, потом, повторно проделывать всю эту работу.
Если при вставке макроса в модуль у вас вместо некоторого текста стоят красные знаки "????????"
Это значит, что у вас проблема с кодировкой, которая наблюдается с копированием Кириллического текста из некоторых браузеров. Чтобы победить эту проблему, попробуйте вставить скопированный код в пустой лист MS Excel, как "Текст в кодировке Unicode". Для этого перейдите в книгу MS Excel, выберите или создайте пустой лист, встаньте в ячейку "A1" и нажмите сочетания клавиш Ctrl+Alt+V. Должно будет появиться меню "Специальной вставки", выберите пункт "Текст в кодировке Unicode" и нажмите "OK".
Код должен будет вставиться в рабочий лист без знаков вопроса:
После этого, еще раз скопируйте вставленный в лист код, и вставить его уже в модуль.
Если вы не видите в редакторе VBA окна "Project - VBA Project", перейдите во вкладку меню "View" и в списке выберите пункт "Project Explorer" или нажмите сочетание клавиш Ctrl+R:
Комментарии
Есть раскрывающийся список с номером, за каждым номером закреплен свой список рабо.
Делаю через Формула-Диспече р имен-Выбираю нужную ячейку и присваиваю работы. Но затем формула сбивается и последняя у всех. Как исправить ситуацию?
Чтобы ее создать надо нажать кнопку запись макроса, откроется окно в котором задается имя макроса, там есть выпадающий список "Сохранить в:" - выбираем там "Личная книга макросов", жмем ОК и сразу останавливаем запись.
Переходим в редактор VBA и видим, что в списке файлов появился файл с названием "Personal.XLSB".
Создаем в этой книге новый модуль и копируем туда необходимый макрос. Теперь эта книга будет запускаться каждый раз при старте Excel и все макросы из нее будут доступны в любом файле.