Рубрикатор
|
Создание своего собственного менюКак убрать стандартные команды в меню правой кнопки мыши?А сейчас я покажу другой вариант создания меню - более разумный. Теперь разберём последовательность создания такого меню. Добавим в книгу новый модуль, на который разместим два макроса - NewMenu и MakroPrivet. Sub NewMenu() Dim Contro As Object 'Удаление Всех пунктов меню For Each Contro In CommandBars("Cell").Controls CommandBars("Cell").Controls(Contro.Caption).Delete Next 'СОздаём новое меню CommandBars("Cell").Controls.Add.Caption = "Новое меню" With CommandBars("Cell").Controls("Новое меню") .OnAction = "MakroPrivet" .FaceId = 263 End With End Sub
Sub MakroPrivet() 'Макрос, который воплняется при нажатии MsgBox "Привет!", vbExclamation, "Привет" End Sub NewMenu - это макрос формирующий новое меню. MakroPrivet - как было указано выше, это макрос, который выполняется при нажатии на новое меню. Теперь сделаем так, чтобы меню правой кнопки появлялось только при активации нашей книги. Т.е. если мы переключимся на другую книгу, то меню будет стандартное. После этого появится следующие начало и конец макроса, который и будет срабатывать при активации книги. Private Sub Workbook_Activate() End Sub Вставим в этот макрос ссылку на макрос NewMenu, который находится в созданном модуле. Private Sub Workbook_Activate() NewMenu End Sub теперь при активации книги будет срабатывать макрос NewMenu, который и будет формировать наше новое меню. Но тут есть один нюанс. При отткрытии ещё одного Excel-евского документа, не закрывая нашу книгу, в открытом документе будет появляться наше меню, что не желательно. Ведь мы хотим создать меню, которое будет работать только в нашей книге, а не в какой-то другой параллельно открытой. Чтобы такого не происходило добавим в нашу книгу макрос, который будет сбрасывать меню правой кнопки в настройки по умолчанию, при переключении пользователя на другую книгу. В открывшийся код поместим всего одну строчку, которая и будет сбрасывать меню в настройки по умолчанию. Private Sub Workbook_Deactivate() Application.CommandBars("Cell").Reset End Sub Ну вот, теперь при активации нашей книги будет формироваться новое меню правой кнопки мыши. Но как только книга деактивируется, то-есть мы переключаемся на другой документ, меню сбрасывается.
Worksheet_ActivateРассмотрим событие, которое возникает при активации листа. Делается это следующим образом. Заходим в окно VB, щёлкаем слева по необходимому листу. Открывается окно. В левом верхнем окошке выбираем пункт Worksheet, а правом окошке Worksheet_Activate. После этого появится следующие начало и конец макроса, который и отвечает за активацию листа. Private Sub Worksheet_Activate() End Sub Если в этот код поместить какое-нибудь информационное сообщение, то при активации листа (например перейдти на лист 2, а затем опять на лист 1), нам будет появляться это сообщение (Пример: Лист 1). Private Sub Worksheet_Activate() MsgBox "Вы перешли на следующий уровень!", vbInformation, "Пример" End Sub Worksheet_DeactivateРассмотрим событие, которое возникает при деактивации листа, т.е. когда мы уходим с него. Делается это следующим образом. В левом верхнем окошке выбираем пункт Worksheet, а правом окошке Worksheet_Deactivate. После этого появится следующие начало и конец макроса, который и отвечает за уход с листа - деактивацию. Private Sub Worksheet_Deactivate() End Sub Если в этот код поместить какое-нибудь информационное сообщение, то при уходе с активного листа, нам будет появляться сообщение (Пример: Лист 2). Private Sub Worksheet_Deactivate() MsgBox "Вы покинули лист!", vbInformation, "Пример" End Sub Worksheet_CalculateРассмотрим событие, которое возникает при пересчёте листа. Напрмер, у нас на листе есть таблица в которой содержится куча формул. И вам необходимо отследить всяческий пересчёт таблицы. При помощи этого макроса это можно легко выполнить. После этого появится следующие начало и конец макроса, который и отслеживает пересчёт листа. Private Sub Worksheet_Calculate() End Sub Если в этот код поместить какое-нибудь информационное сообщение, то при пересчёте формул на листе, нам будет появляться сообщение, например такое (Пример: Лист 3): Private Sub Worksheet_Calculate() MsgBox "Пересчёт листа выполнен!" & vbNewLine & _ "Последние изменения внёс " & Application.UserName & "!", _ vbInformation, "Пример" End Sub Application.UserName - это имя компьютера.
Worksheet_FollowHyperlinkРассмотрим событие, которое возникает при переходе по ссылке. Делается это следующим образом. Заходим в окно VB, щёлкаем слева по необходимому листу. Открывается окно. В левом верхнем окошке выбираем пункт Worksheet, а правом окошке FollowHyperlink. После этого появится следующие начало и конец макроса, который и отвечает за переход по ссылке. Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) End Sub Если в этот код поместить какое-нибудь информационное сообщение, то при переходе по ссылке мы его увидим (Пример: Лист 1). Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) MsgBox "Вы перешли по ссылке на мой сайт!", vbInformation, "Пример" End Sub
|
Поиск
|
||