Показать сообщение отдельно
Старый 14.01.2013, 09:43   #6
AndrewP
Местный
 
Регистрация: 13.08.2010
Сообщений: 1,615
Сказал(а) спасибо: 11,834
Поблагодарили 9,536 раз(а) в 1,526 сообщениях
Вес репутации: 2235
AndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспорима
По умолчанию

Цитата:
Сообщение от sparkfire Посмотреть сообщение
хочу научиться их писать
Вначале о макросе.

Макрос - это программа, выполняющая вместо нас некие часто повторяющиеся и полезные нам действия. Чтобы вместо нажимания восьмидесяти восьми кнопок на клавиатуре и маслания километров колесом мыши, причём повторяющихся изо дня в день (да смотри не перепутай!) - всё это совершалось нажатием одной клавиши (сочетания клавиш) или клика мышью по созданной кнопочке!

Как создаются макросы разберём на простом примере.

Скопировать значение ячейки А1 в ячейку В1.

Создаём новую книгу и Сохраняем её.
В ячейку А1 вводим любое число.

Начинаем запись макроса: Сервис - Макрос - Начать запись


Всплывает окошко:

Рассмотрим его внимательно.
Имя макроса автоматом предлагается Макрос1, можно назвать его и по своему например Мой_макрос_который_копирует_значение. Важно! Имя макроса не должно содержать пробелов!

Сочетание клавиш. Можно не назначать. Но если действия выполняемые макросом будут очень часты, удобно назначить "горячую клавишу" например Сtrl+й. Важно! Если назначите макросу уже зарезервированные системой сочетания (такие как Сtrl+с - копировать, Сtrl+v - вставить ...), то в этой книге после нажатия сочетаний будет работать макрос, а не они. Латинские и русские буквы различаются. Поэтому Сtrl+й и Сtrl+q будут различаться, хотя и будем нажимать одну и ту же клавишу.

Сохранить в .... Здесь в выпадающем меню предлагается сохранить макрос только в этой книге. Так, наше Сtrl+й, будет работать только здесь, а в любой другой книге Сtrl+й - работать не будет. Если же мы сохраним в личной книге макросов, то макрос будет работать в любой даже вновь созданной книге.

Описание. Можно не заполнять. Автоматом туда вписывается комментарий когда и кем создан макрос. Если что-то хотите для напоминания ещё туда записать - на здоровье - на работу макроса это влиять не будет.

Нажали ОК.

Теперь работаем ручками, т.е. клавиатурой или мышью. Эксель всё запоминает и записывает последовательность наших действий.

Кликаем на ячейке А1, затем Сtrl+с - копируем, кликаем на ячейке В1, Сtrl+v - вставляем.

Готово! Теперь нам надо остановить запись. Сделать это можно, нажав кнопку на всплывшей панели остановки макроса, а можно опять же через меню Сервис - Макрос - Остановить запись



А теперь самое интересное! Залезем в запись макроса, в программу, которую Эксель сделал следя за нашими действиями и переводя их на язык VBA - Вижуал Бейсик фор Апликейшн.

Сервис - Макрос - Макросы (или Alt+F8)



В появившемся окне, выбираем "Войти"



Открывается наш записанный макрос.



Это автоматическая запись. Всё это можно было точно также набирать в данной программе ручками, зная язык программирования VBA.

Начинается программа с Sub и далее через пробел название программы
Затем после ' идут комментарии не влияющие на ход выполнения программы - эти строки зелёные.

Далее чёрным - это исполняемые строки программы.

В конце End Sub - конец программы.

Попробуем прочитать нашу программу.

Selection.Copy - Выделенное. Скопировать
Range("B1").Select - Ячейку B1. Выделить
ActiveSheet.Paste - На текущем листе. Вставить

Т.е. макрос записал, что копируется не ячейка А1, а копируется любая выделенная ячейка в B1.
Непорядок.
Останавливаем выполнение макроса. Жмём значок "квадратик" в верхней панели.



Переписываем макрос добавив вверху строку

Range("A1").Select - Ячейку А1. Выделить
Selection.Copy
Range("B1").Select
ActiveSheet.Paste

Порядок! Сохраняем нашу редакцию макроса.



Закрываем и тестируем нашу книгу. Вводим любое число в А1. Кликаем абы где, например, на С25. Сtrl+й * и ... Работает, ёшки-матрёшки! Или как гениально высказался предыдущий оратор: "планка самооценки" поднялась (а в месте с ней скорость нарубки капусты).


*если вы не назначали горячих клавиш, то макрос можно также выполнить Сервис - Макрос - Макросы - Выполнить.

Э-э, рано радоваться. Самостоятельное задание. Написать макрос копирования занчение ячейки А1 на другой лист в ячейку В2 и раскрашивания её красным цветом. Успехов.
Приду проверю, раздам конфектки.


(Сегодняшний урок во вложении)

Последний раз редактировалось AndrewP; 15.12.2014 в 02:57.
AndrewP вне форума   Ответить с цитированием Вверх
12 пользователя(ей) сказали cпасибо: