Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

VBA – РАБОЧИЙ ЯЗЫК EXCEL

Дальнейшее изложение материала ориентировано на читателя, ознакомленного с программированием на Visual Basic .

Перед запуском макрорекордера следует подготовить рабочий лист, произведя все действия, которые не нужно включать в процедуру. Это такие действия, как создание нового рабочего листа или перемещение в конкретную часть листа. Когда Вы начнете запись, все, что Вы сделаете в Excel, будет записано в процедуре.

1. Создайте на пользовательском диске d свою рабочую папку.

2. Запустите Excel и откройте лист Лист1 , если открыт другой.

3. Сохраните файл под именем VBA .xls в своей рабочей папке.

4. Выполните команду Сервис, Макрос, Начать запись.

5. В появившемся диалоговом окне Запись макроса (рис. 1), установите параметры записываемой процедуры. В поле Имя макроса введите имя процедуры Расчет_стоимости .

6. В поле Описание следует ввести текст, поясняющий назначение процедуры. Введите в этом поле: Процедура, вычисляющая стоимость с учетом скидки .

7. Поле Сочетание клавиш предназначено для записи символа, нажатие на который при нажатой клавише Ctrl приведет к запуску процедуры. Это поле Вы не заполняйте.

8. Оставьте без изменения остальные параметры диалогового окна и щелкните на кнопке ОК. Появится кнопка Остановить запись на плавающей панели инструментов.

На этом подготовка к записи макроса закончена. Теперь все следующие производимые действия будут записаны и интерпретированы как инструкции VBA. Будут записаны все нажатия клавиш клавиатуры и кнопок мыши до тех пор, пока не будет нажата кнопка Остановить запись.

9. Выполните команду Сервис, Параметры.

10. Чтобы выключить отображение сетки, раскройте вкладку Вид и сбросьте флажок Сетка. Щелкните на кнопке ОК.

11. Выделите ячейку B5 и введите текст Розничная цена: и нажмите клавишу Enter .

12. Выделите ячейку C5 и выполните команду Формат, Ячейки.

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

14. Раскройте вкладку Число и выберите формат Денежный с двумя разрядами дробной части и символом денежной единицы р ., использующий выделение красным цветом для отрицательных значений. Затем щелкните на кнопке ОК.

15. Выделите ячейку B7 , введите текст Цена с учетом скидки: и нажмите клавишу Enter .

16. Выделите ячейку B9 , введите текст Размер скидки: и нажмите клавишу Enter .

17. Расширьте столбец B до такой степени, чтобы текст в ячейке B7 полностью отображался внутри столбца B . Для этого поместите указатель мыши на вертикальную черту между заголовками столбцов B и C и перетащите ее.

18. Выделите диапазон ячеек B5:B9 и установите в них выравнивание текста по правому краю. Для этого выберите команду Формат, Ячейки. Раскройте вкладку Выравнивание. В раскрывшемся списке по горизонтали выделите элемент по правому краю и щелкните на кнопке ОК.

19. Выделите ячейку C7 и выберите команду Формат, Ячейки. Раскройте вкладку Число и выберите формат Денежный с двумя разрядами дробной части и символом денежной единицы р., использующий выделение красным цветом для отрицательных значений. Затем щелкните на кнопке ОК.

21. Выделите ячейку C9 и выберите команду Формат, Ячейки. Раскройте вкладку Число и выберите формат Процентный с двумя разрядами дробной части. Затем щелкните на кнопке ОК.

22. Задайте размер вкладки, введя значение 0,05 в ячейку C9 и нажав клавишу Enter .

Рис. 2. Вид рабочего листа перед окончанием записи

23. Чтобы защитить ячейки рабочего листа от изменений, выберите команду Сервис, Защита, Защитить лист. В появившемся окне Защитить лист щелкните на кнопке ОК. Ваш рабочий лист теперь должен выглядеть так, как показано на рис. 2.

24. Для остановки записи щелкните на кнопке Остановить запись на плавающей панели инструментов, которая появилась на рабочем листе в начале записи.

25. Проверьте правильность работы созданной Вами таблицы. Введите в ячейку C5 значение 100 и нажмите клавишу Enter . В ячейке C7 должен появиться результат 95,00р. , а в ячейке C5 отобразиться значение 100,00р .

26. Теперь можно посмотреть на процедуру, которая получилась в результате записи. Для этого выполните команду Сервис, Макрос, Макросы.

27. Выделите имя макроса в предлагаемом списке и щелкните на кнопке Изменить.

28. Появится окно редактора Visual Basic , в котором откроется окно с кодом процедуры (рис. 3). Обратите внимание: Visual Basic здесь не является отдельным приложением. Он входит в состав Excel.

Рис. 3. Окно редактора Visual Basic с кодом записанной процедуры
Расчет_стоимости

29. Сравните этот код с выполненными Вами действиями при записи процедуры. Вы должны заметить, что каждому выполненному Вами действию соответствует одна или более строк процедуры.

Первое, что Вы сделали, когда начали запись процедуры – отключили отображение сетки активного рабочего листа. Этому действию соответствует строка процедуры:

Следующие две строки программного кода Вашей процедуры активизируют ячейку B5 и помещают в нее текст «Розничная цена :»

Следующие четыре строки выделяют ячейку C5 , затем применяют к ней числовой формат, снимают защиту ячейки и скрытие формул, действующие после защиты листа:

Последнюю из этих инструкций можно удалить, поскольку важно лишь снять защиту ячейки. Значение же ее свойства Hidden (скрытый) нам безразлично.

Следующие четыре инструкции вставляют текст в ячейки B7 и B9 :

Следующая далее строка программного кода процедуры выполняет выделение столбца B и изменяет его ширину:

Можно выделить один или более столбцов с помощью метода Columns (столбцы). Ссылка на столбцы является аргументом этого метода. Затем можно использовать свойство ColumnWidth (ширина столбца) текущего выделения, чтобы установить ширину выделенных столбцов. Аналогичным образом можно выделить одну или несколько строк с помощью метода Rows (строки).

Сравните инструкции дальнейшей части кода процедуры с выполненными Вами действиями при записи процедуры. После сделанного пояснения кода процедуры Вам должно быть понятно назначение инструкций этой заключительной части кода процедуры.

[expert_bq id=»1570″]Как только работа подойдет к завершению, нужно нажать на закончить, а затем переключиться в соответствующее окно программы Excel. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Чтобы воспользоваться расширенными функциями таблицы Excel, стоит попробовать самостоятельно записать макрос. Он будет самостоятельно выбирать ячейку и формировать в ней заданный текст. Для этого потребуется сделать следующие шаги:

VBA Excel: что это такое, как пользоваться объектами и применить макросы

Все объекты создают определенную иерархию, в которой подчиняются друг другу. Имеющийся Application должен соответствовать продукту Excel. Так, например, чтобы использовать определенную ячейку, пользователь должен задать определенный путь к ней.

Здравствуйте.
А если, например, открыто две книги и находясь в активной книге, как не используя путь, скопировать данные в скрытом листе пассивной книги и вставить их в активную.

Здравствуйте
А если например открыто две книги и находясь в активной книге, как не используя путь скопировать данные с пассивной книги и вставить их в активную.

Здравствуйте.
редактирую Ваш код. Возникло 2 проблемы:
1.начало таблицы, из которой необходимо скопировать данные каждый раз начинается с разного номера строки так как в первоначальном файле данные формируются расширенным фильтром (выделено красным)
2.перед тем как скопируются новые данные во второй файл, необходимо , чтобы из этого столбца удалились старые

Sub Макрос()
Range(«b20000:b20100»).Select
Selection.Copy
Workbooks.Open Filename:= «путь к файлу, в который копируем»
Range(«A2»).Select
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub

Как можно изменить код макроса, если при открытии файла его нет по указанному адресу. Нужно чтобы макрос остановится и открылось окно с информацией, что файл не найден. Иначе выдаёт ошибку.

Здравствуйте! Помогите, пожалуйста, в решении задачи:
Есть 2 файла. В первом файле хранятся столбцы с данными, файл ежедневно обновляется данными. Во втором — итоговая таблица. Нужно автоматически копировать столбцы из первого файла и вставить в конец таблицы второго.

Помогите, пожалуйста.
Нужен макрос, чтобы по нажатию, копировал данные из определенного статичного столбца в активный столбец (на котором стоит курсор).
Заранее, спасибо!

Включите запись макрорекодера, проделайте всю операцию и остановите запись. Получится нужный вам макрос

как сделать так что бы запись в фаил «1» всегда была на одну строчку ниже?
2 дня уже не могу сделать , надеюсь на Вас. Спасибо.

Попробуйте добавить между
Range («A1»).Select и ActiveSheet.Paste
ActiveSheet.Range(«A1»).End(xlDown).Offset(1, 0).Select

ДД!
спасибо большое за Ваш пост! Нужно было переносить строки из общей таблицы на разные листы другой книги.
Подскажите, можно ли добавить условие в код? У меня большая таблица хронометража по разным показателям. Возможно ли копирование только тех ячеек значение которых больше 0?

То, что я имею сейчас:
Sub Перенос_строк_состав_комм_КМ()
Workbooks.Open Filename:=C:\1\2.xlsx»
Workbooks(«2.xlsx»).Worksheets(«приложение 3»).Range(«F30:BC30»).Copy
Workbooks(«КФ.xlsm»).Activate
ActiveWorkbook.Worksheets(«составление комм КМ»).Range(«C5»).Select
ActiveSheet.Paste
Workbooks(«2.xlsx»).Close
End Sub

Добрый день. Ваш код мне очень подходит. Вопрос, как изменить диапазон ячеек в коде, при условии, что я хочу перенести в другую книгу в определенный лист несколько разных ячеек с одного листа НАПРИМЕР диапазоны B7:С24 и H7:I24 . Подскажите как правильно это нужно указать. Спасибо.

Решили вопрос? Вам нужно скопировать сначала один диапазон, потом снова выделить книгу откуда вы копируете, например так
Workbooks(«Книга1.xlsm»).Activate
снова повторить копирование уже другого диапазона

На мой взгляд у вас проблема о объединенных ячейках. У вас 61 и другие строки объединены. Вы попробуйте вручную выделить диапазон B7:C39 — у вас не получится и у VBA тоже не получается

После этого снова активируете первую книгу и копируете второй диапазон
abook.Worksheets («3»).Activate
Range («H7:I39»).Copy

Эти Варианты я все перепробовала, решение оказалось таким:
Range(«B9:C2900, D9:E2900, K9:L2900»).Copy
bookconst.Worksheets(«благ»).Activate
Range(«B4»).Select ‘встаем на ячейку А1
При этом в заданных диапазонах не должны быть пересечения объеденных ячеек.
СПАСИБО АВТОРУ

Добрый день,
В коде при варианте 1 выводит ошибку 1004, выделяя желтым строку кода:
Range(«A6»).Select

В этой строке вряд ли ошибка может быть. Проверил код, должно все работать
Единственное вот тут неправильное описание
Workbooks.Open Filename:= «путь к файлу»
здесь нужно указать не путь к файлу, а только название файла, путь к папке мы указали в чуть выше в коде

Также, вот чуток модифицированный вариант для того, чтобы данные не перезаписывались, а вставлялись в новую строку:

Range(«A1:E1»).Select
Selection.Copy
ChDir «C:\Users\50545\Desktop»
Workbooks.Open Filename:=»123.xlsx»
ActiveSheet.Range(«A1»).Select

ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close

ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close

Создал отдельный модуль для макроса (до этого был в модуле листа)…

И вот ещё фаил, в дополнение к первому сообщению. Сразу два не смог отправить.

Подскажите пожалуйста код макроса со следующим функционалом:

Есть несколько документов. Первый документ — база со всеми данными, а остальные — документы в которых нужно скопировать некоторые данные из базы.

Да, необходимо копировать только значение (стиль и т.д. не нужно) И если например в базе какая то ячейка стала пустой, то на пустоту необходимо заменить значение, что было прописано ранее в остальных документах.

В программировании не силён, если можно с кратким объяснением.

Добрый вечер. Это опять я.
Появилась новая задача. Есть файл источник в котором есть данные.
Тот макрос, который Вы помогли запустить копирует только из этого, определенного файла.
А можно сделать так, чтобы макрос работал из любого другого файла.
То есть я копирую макрос в другой файл , а он сохраняет в отдельный.

нет. все равно заменяет.
может Вы можете помочь немного по другому.
Вот макрос, который копирует нужный диапазон и копирует в нужную книгу.
НО как и в первом варианте надо , после изменения в основном файле данных, вставлять не в туже строку , а в следующую.

Нет, не проще. Проверьте еще раз внимательно. У меня все работает. Данные не заменяются, а вставляются в следующие строку.
Сейчас, кстати заметил, что надо брать не G5000, а F5000 так как в столбце G ничего не вставляется, поэтому он и заменяет данные, так как последняя строчка всегда одна и та же

Добрый вечер. Хочу Вас поблагодарить. Все получилось.
Только я методом «тыка» изменил немного код. А именно вот эту строку

iLastRow = Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Range(«F5000»).End(xlUp).Row + 1

у Вас стоял («Книга1.xlsm») а я написал («1.xlsm») указал ту книгу в которую производить копирование и всё пошло нормально.

Да, все верно. Я просто тестировал на своих файлах и забыл поменять. Удачи!

[expert_bq id=»1570″]Напомню, что на данном сайте тема VBA Excel уже затрагивалась, например, в материале Запрет доступа к листу Excel с помощью пароля. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Следующий способ очень похож по технологии выполнения на предыдущий вариант. Он представляет собой добавление кнопки через элемент управления формы. Для использования этого метода также требуется включение режима разработчика.
Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Как с помощью VBA скопировать данные из одной книги в другую | SirExcel

Делается это следующим образом. Заходим в окно VB, щёлкаем слева по листу, событие которого хотим отслеживать. Открывается окно. В левом верхнем окошке выбираем пункт Worksheet и правом окошкеBeforeRightClick.

Код макроса на VBA Excel

Для того чтобы написать код макроса, открывайте на ленте вкладку «Разработчик», далее макросы.

Примечание! По умолчанию данной вкладке в Excel 2010 может и не быть, чтобы ее отобразить нажмите правой кнопкой по ленте пункт меню «Настройка ленты»

Скриншот 4

затем, в правой области поставьте галочку напротив пункта «Разработчик»

Скриншот 5

После вкладка разработчик станет отображаться на ленте.

Далее, когда Вы откроете вкладку разработчик и нажмете кнопку «Макросы» у Вас отобразится окно создания макроса, Вы пишите название макросы и жмете «создать».

Скриншот 6

После у Вас откроется окно редактора кода, где собственно мы и будем писать свой код VBA. Ниже представлен код, я его как обычно подробно прокомментировал:

Теперь осталось выполнить этот макрос, для этого откройте вкладку разработчик->макросы->выполнить наш макрос:

Скриншот 7

и после выполнения у Вас в той же папке появится вот такие файлы

Скриншот 8

Скриншот 9

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

VBA – РАБОЧИЙ ЯЗЫК EXCEL
13. Раскройте вкладку Защита и сбросьте флажок Защищаемая ячейка. Эти изменения отменят защиту выделенной ячейки от изменения ее содержимого, т.е. позже, когда Вы защитите от изменений весь рабочий лист, данные в этой ячейке можно будет изменять.
[expert_bq id=»1570″]Следующие четыре строки выделяют ячейку C5 , затем применяют к ней числовой формат, снимают защиту ячейки и скрытие формул, действующие после защиты листа. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Здравствуйте.
редактирую Ваш код. Возникло 2 проблемы:
1.начало таблицы, из которой необходимо скопировать данные каждый раз начинается с разного номера строки так как в первоначальном файле данные формируются расширенным фильтром (выделено красным)
2.перед тем как скопируются новые данные во второй файл, необходимо , чтобы из этого столбца удалились старые

Макрос на VBA Excel – Формируем документы по шаблону | — IT-блог для начинающих

Разберем пример создания простого макроса. Сталкиваясь с проблемой постоянного создания таблиц имеющих одинаковую шапку, удобнее будет создать свой собственный макрос. После запуска он будет выводить готовую таблицу с надписями в шапке. Рассмотрим пошаговую инструкцию:

Просмотр содержимого документа
«VBA в Excel. Событие листа»

Событие листа
Worksheet_SelectionChange

Рассмотрим макрос, который реагирует на выделение ячейки, иногда это бывает полезным и нужным. Т.е. мы навели мышку на ячейку и при этом у нас сработал какой-то макрос. Вот и посмотрим как это делается.

Заходим в окно VB, нажимая Alt+F11. Слева мы видим названия наших листов. Щёлкаем двойным щелчком по желаемому листу. Вверху имеется два окошка в которых по умолчанию написано General иDeclarations.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Выбираем в левом окне Worksheets, а в правом SelectionChange.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Такая запись нам и будет говорить о том, что необходимо выполнять макрос, когда на листе произойдёт выделение некоторого диапазона.
И если в этот макрос добавить следующий код:

то какой бы мы диапазон не выделили на этом листе, он окрасится в синий цвет.

Хочу обратить внимание, что макрос работает только на том листе, который Вы выбрали слева в списке листов.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Рассмотрим ещё один пример, в котором будет выделяться всегда только одна ячейка на листе — активная ячейка (в видеоролике показано как это работает).

MsgBox «Курсор находится на столбце №» & a & » — это меньше 10.», _

MsgBox «Курсор находится за пределами моего понимания!», _

Существует очень много событиев на листе, которые можно интересно использовать. Все я рассматривать подробно не буду, но основные самые интересные поясню.

Рассмотрим макрос, который реагирует на выделение ячейки, иногда это бывает полезным и нужным. Т.е. мы навели мышку на ячейку и при этом у нас сработал какой-то макрос. Вот и посмотрим как это делается.

Заходим в окно VB, нажимая Alt+F11. Слева мы видим названия наших листов. Щёлкаем двойным щелчком по желаемому листу. Вверху имеется два окошка в которых по умолчанию написано General иDeclarations.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Выбираем в левом окне Worksheets, а в правом SelectionChange.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Такая запись нам и будет говорить о том, что необходимо выполнять макрос, когда на листе произойдёт выделение некоторого диапазона.
И если в этот макрос добавить следующий код:

то какой бы мы диапазон не выделили на этом листе, он окрасится в синий цвет.

Хочу обратить внимание, что макрос работает только на том листе, который Вы выбрали слева в списке листов.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Рассмотрим ещё один пример, в котором будет выделяться всегда только одна ячейка на листе — активная ячейка (в видеоролике показано как это работает).

MsgBox «Курсор находится на столбце №» & a & » — это меньше 10.», _

MsgBox «Курсор находится за пределами моего понимания!», _

Существует очень много событиев на листе, которые можно интересно использовать. Все я рассматривать подробно не буду, но основные самые интересные поясню.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

После этого появится следующие начало и конец макроса, который и отвечает за срабатывание при попытке редактировании ячейки.

Для того чтобы определить какая ячейка у нас притерпела изменение можно воспользоваться следующей записью — для определения столбца и ячейки. Наверное это надо было поместить в этот урок.

Ну вот, зная координаты теперь мы точно знаем какая ячейка у нас будет обрабатываться. Теперь можно написать макрос, который нам будет сообщать о том, в какой ячейке произошли изменения. Выглядеть это будет, например, так:

MsgBox «Отредактирована ячейка Cells(» & Stroka & «,» & Stolbec & «)», _

Рассмотрим такой пример когда, после редактирования ячейки, её текст автоматически закрашивается в синий цвет, а ячейка окрашивается в жёлтый цвет.

И всё бы ничего, отредактировали ячейку, потом выпполнился какой-то макрос. Но вот беда если записать такой макрос, то мы загрустим:

А загрустим потому, что мы будем заносить в изменённую ячейку какие-то данные. То-есть мы опять её редактируем. Следовательно, как только макрос заносит данные в ячейку, он снова запускает сам себя. И у нас получается зацикливание. Для того чтобы этого не происходило используют дополнительную запись, которая блокирует запуск события в момент выполнения текущего.

Событие листа. Двойной щелчок мыши.
BeforeDoubleClick

Иногда охото сделать программу, которая приближается к настоящей, где всякие события происходят от нажатия двойного щелчка мыши. В этом занятии я расскажу как сделать макрос, который будет реагировать на двойной щелчок ЛКМ.

Что можно сделать при помощи такого макроса? Таблицы, в которых данные можно заносить при помощи двойного щелчка мыши. Например устанавливать галочки напротив выбранных наименований.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excelVba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Делается это следующим образом. Заходим в окно VB, щёлкаем слева по необходимому листу. Открывается окно. В левом верхнем окошке выбираем пункт Worksheet, а правом окошке BeforeDoubleClick.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

После этого появится следующие начало и конец макроса, который и отвечает за двойной щелчок мыши производимый по ячейке.

Если в этот код поместить какое-нибудь информационное сообщение, то при двойном щелчке по ячейке, будет появляться это сообщение.

MsgBox «Вы совершили двойной клик!», vbInformation, «Пример»

Но при такой записи есть один нюанс. После совершения двойного нажатия вы входите в режим редактирования ячейки, что очень неудобно. Для того чтобы этого не происходило необходимо написать команду, кооторая будет запрещать вход в режим редактирования. Макрос будет выглядеть так:

MsgBox «Вы совершили двойной клик!», vbInformation, «Пример»

Но такая запись активизирует двойной щелчёк на всём листе, и это конечно хорошо, но иногда возникает потребность задействовать только часть листа, например только столбец А. На этом этапе мы уже начинаем придумывать какие-то условия. И это можно осуществить всё при помощи того же If . End If или Select Case . End Select.

MsgBox «Вы совершили двойной клик!», vbInformation, «Пример»

При такой записи сообщение будет появляться только в том случае, если мы щёлкаем мышкой по столбцу А.

Усложним пример. Сделаем так, как показано в начале урока на левом рисунке. Попробуем Установить галочки, причём не во всём столбце, а в некотором диапазоне, например В2:В8. Ниже приведён макрос, который может это осуществить.

Target.Font.Name = «Marlett» — устанавливаем имя шрифта в ячейке, который и отвечает за галочку;

If Target = «a» Then . — если в редактируемой ячейке стоит галочка, то убираем её и закрашиваем ячейку в синий цвет. В противном случае устанавливаем галочку и закрашиваем ячейку в жёлтый цвет.

Ту же самую функцию можно осуществить через другую запись:

Тут диапазон задаётся при помощи координат столбца и строки, а также обычных логических операторов.

Вторая табличка, которая показана в начале страницы справа, выполняется по тем же принципам, только можно не указывать стиль шрифта и вместо а, писать Вкл и Выкл.

В видеоматериале показаны примеры работ приведённых макросов, а также продемонстрирована полная запись их написания.

Рассмотрим событие, которое возникает при нажатии на правую кнопку мыши. Иногда просто необходимо сделать так, чтобы заблокировалось меню появляющееся при нажатии на правую кнопку мыши. Или охото сделать своё меню. Именно это мы сегодня и изучим.

Делается это следующим образом. Заходим в окно VB, щёлкаем слева по листу, событие которого хотим отслеживать. Открывается окно. В левом верхнем окошке выбираем пункт Worksheet и правом окошкеBeforeRightClick.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

После этого появится следующие начало и конец макроса, который и отвечает за отслеживание правой кнопки мыши.

И если в этот макрос вставить какое-нибудь информационное сообщение, то при нажатии на правую кнопку мыши на заданном листе, нам отобразится оно.

Но при такой записи, после выполнения макроса нам появляется меню. И для того чтобы этого не происходило необходимо добавить следующую запись, которая отвечает за появление меню.

При такой записи, у нас не появляется меню. Теперь зная это можно назначать различные макросы на правую кнопку мыши, которые будут срабатывать в зависимости от того на какую ячейку, столбец или строку Вы навели указатель мыши. Как например в следующем примере.

В данном примере показано, что в зависимости от того куда Вы поставите курсор и нажмёте на правую кнопку мыши, ячейка примет окрас в зависимости от номера столбца. Тут рассмотрены только первые 5 столбцов листа. Всё что дальше 5 столбца, при нажатии на ПКМ будет обесцвечиваться.

то правая кнопка мыши просто напросто не будет «работать», то-есть меню не будет появляться.

Добавление своего раздела в меню правой кнопки мыши

В следующем примере показано как добавить свои два раздела в меню (Окрасить ячейку и Обесцветить ячейку). При нажатии на правую кнопку мыши в меню появляется две новых команды.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

При выборе «Окрасить ячейку», выделенный диапазон заливается синим цветом. При нажатии на «Обесцветить ячейку», выделенный диапазон ячеек обесцвечивается.
Работу данного кода можно посмотреть на «Листе 3» в примере. На видеоролике так же можно посмотреть его работу.

Создание своего собственного меню.
Как убрать стандартные команды в меню правой кнопки мыши?

А сейчас я покажу другой вариант создания меню — более разумный.
Создадим своё собственное меню, со своими командами, и которое работает только в нашей книге.
Для этого воспользуемся дополнительными событиями для книги — это Workbook_Activate() иWorkbook_Deactivate().

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Теперь разберём последовательность создания такого меню. Добавим в книгу новый модуль, на который разместим два макроса — NewMenu и MakroPrivet.

Sub MakroPrivet() ‘Макрос, который воплняется при нажатии

MakroPrivet — как было указано выше, это макрос, который выполняется при нажатии на новое меню.
MsgBox «Привет!». — сообщение, которое появляется при выполнении кода нового меню.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Теперь сделаем так, чтобы меню правой кнопки появлялось только при активации нашей книги. Т.е. если мы переключимся на другую книгу, то меню будет стандартное.
Для этого в окне VB щёлкаем слева по пункту «ЭтаКнига». Открывается окно. В левом верхнем окошке выбираем пункт Workbook и правом окошке Activate.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

После этого появится следующие начало и конец макроса, который и будет срабатывать при активации книги.

Вставим в этот макрос ссылку на макрос NewMenu, который находится в созданном модуле.

теперь при активации книги будет срабатывать макрос NewMenu, который и будет формировать наше новое меню.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

В открывшийся код поместим всего одну строчку, которая и будет сбрасывать меню в настройки по умолчанию.

Ну вот, теперь при активации нашей книги будет формироваться новое меню правой кнопки мыши. Но как только книга деактивируется, то-есть мы переключаемся на другой документ, меню сбрасывается.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

В этом уроке я рассмотрю сразу три события листа. Они не такие значимые как в предыдущих уроках, но иногда из них можно извлечь хорошую пользу.

Рассмотрим событие, которое возникает при активации листа. Делается это следующим образом. Заходим в окно VB, щёлкаем слева по необходимому листу. Открывается окно. В левом верхнем окошке выбираем пункт Worksheet, а правом окошке Worksheet_Activate.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

После этого появится следующие начало и конец макроса, который и отвечает за активацию листа.

Если в этот код поместить какое-нибудь информационное сообщение, то при активации листа (например перейдти на лист 2, а затем опять на лист 1), нам будет появляться это сообщение (Пример: Лист 1).

MsgBox «Вы перешли на следующий уровень!», vbInformation, «Пример»

Рассмотрим событие, которое возникает при деактивации листа, т.е. когда мы уходим с него. Делается это следующим образом. В левом верхнем окошке выбираем пункт Worksheet, а правом окошкеWorksheet_Deactivate.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

После этого появится следующие начало и конец макроса, который и отвечает за уход с листа — деактивацию.

Если в этот код поместить какое-нибудь информационное сообщение, то при уходе с активного листа, нам будет появляться сообщение (Пример: Лист 2).

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Рассмотрим событие, которое возникает при пересчёте листа. Напрмер, у нас на листе есть таблица в которой содержится куча формул. И вам необходимо отследить всяческий пересчёт таблицы. При помощи этого макроса это можно легко выполнить.
Делается это следующим образом. В левом верхнем окошке выбираем пункт Worksheet, а правом окошкеCalculate.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

После этого появится следующие начало и конец макроса, который и отслеживает пересчёт листа.

Если в этот код поместить какое-нибудь информационное сообщение, то при пересчёте формул на листе, нам будет появляться сообщение, например такое (Пример: Лист 3):

«Последние изменения внёс » & Application.UserName & «!», _

В этом уроке я рассмотрю оставшиеся события листа. Они вообще редко применяются, как я убедился на собственном опыте.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

Рассмотрим событие, которое возникает при переходе по ссылке. Делается это следующим образом. Заходим в окно VB, щёлкаем слева по необходимому листу. Открывается окно. В левом верхнем окошке выбираем пункт Worksheet, а правом окошке FollowHyperlink.

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

После этого появится следующие начало и конец макроса, который и отвечает за переход по ссылке.

Если в этот код поместить какое-нибудь информационное сообщение, то при переходе по ссылке мы его увидим (Пример: Лист 1).

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

MsgBox «Вы перешли по ссылке на мой сайт!», vbInformation, «Пример»

Vba Excel Как Активировать Книгу и Лист • Код макроса на vba excel

И оставшиеся события — это события, которое происходят при работе со сводными таблицами. Делаются они аналогично предыдущим.

Делается это следующим образом. Заходим на ленте во вкладку файл/параметры:

В открывшемся окне с левой стороны выбираем Центр управления безопасностью, а справойПараметры центра управления безопасностью

В следующем окне слева выбираем пункт Надёжные расположения.

Для того, чтобы добавить какую-то свою папку в надёжное расположение необходимо нажать на кнопку«Добавить новое расположение». После этого откроется следующее окно

Нажимаем кнопку «Обзор» и выбираем ту папку в которой хотим разрешить все макросы. Обратите особое внимание на галочку «Также доверять всем вложенным папкам», если вы её не поставите, то макросы будут разрешены только в этой корневой папке, а вот если в ней имеются подпапки, то в них опять придётся разрешать и включать макросы в ручную.

Если же Вам не понравились Ваши надёжные расположения, то Вы можете их удалить или изменить.
Все папки, которые у Вас находятся в надёжных расположениях указаны в окне центра управления безопасностью в подпункте надёжные расположения, на рисунке ниже этот список показан в синем квадрате.

[expert_bq id=»1570″]Далее, нам необходимо присвоить имена полей для вставки, так более удобней к ним обращаться чем, например, по номеру ячейки. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Эти Варианты я все перепробовала, решение оказалось таким:
Range(«B9:C2900, D9:E2900, K9:L2900»).Copy
bookconst.Worksheets(«благ»).Activate
Range(«B4»).Select ‘встаем на ячейку А1
При этом в заданных диапазонах не должны быть пересечения объеденных ячеек.
СПАСИБО АВТОРУ

VBA в Excel. Событие листа

Табличный процессор Excel вмещает в себя огромное количество опций и функций, не исключая даже возможность создания кнопки. На первый взгляд абсолютно ненужный элемент некоторым пользователям может быть просто необходим. В этой статье будет рассказано, как сделать кнопку в Excel и привязать ее к ячейке.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: