2.4.События объектов Excel
2.4.3. События WorkSheets

 
События объекта Worksheet — одни из самых полезных имеющихся в мире Microsoft Excel. Как вы увидите, события для объекта Worksheet происходят, когда рабочий лист активируется или пользователь изменяет содержание ячейки. События Worksheet также активны по умолчанию, но, как уже говорилось в разделе «Включение и отключение событий», вы можете запретить использование событий. Чтобы просмотреть процедуры событий для рабочего листа, используйте редактор Visual Basic. Поместите нужный проект в окно проектов и дважды щелкните по рабочему листу, чтобы его активировать. Все процедуры событий, связанные с рабочим листом, будут показаны в окне кода в правой части окна.

 

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

1.      Дважды щелкните на объекте Worksheet с названием Лист1 (Sheetl), чтобы активировать его.

2.      Щелкните на списке объектов и выберите пункт Worksheet (Рабочий лист).
 

3.      Щелкните на списке процедур и выберите нужное событие

 
 
После создания новой процедуры события вы увидите, что в окне кода появились строки
 
Private Sub Worksheet_Event 
 
End Sub.

 

Примечание - чтобы перейти к процедурам события на рабочем листе, вы можете щелкнуть правой кнопкой на ярлыке листа внизу окна и выбрать Исходный текст.

 

1. Событие Change
 

Событие Change происходит, когда любая ячейка в рабочем листе изменяется пользователем, кодом VBA или внешним источником. Событие Change не вызывается, когда вычисление дает новое значение для формулы или когда в рабочий лист добавляется объект.

ПРИМЕЧАНИЕ - Событие Change не происходит, когда ячейки изменяются при вычислении Используйте событие Calculate, чтобы реагировать на новые вычислении.

 

Когда запускается процедура WorksheetChange, она получает объект Range в качестве аргумента Target. Этот объект Range представляет измененную ячейку или диапазон, который вызывал события.

 

Цвет букв выбранных ячеек становиться голубым.
 
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.Colorlndex = 5
End Sub

 

2. Событие SelectionChange
 

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

 

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

 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveWindows
.ScrollRow = Target.Row
.ScrollColumn = Target.Column
End With
End Sub
 
 
Вывод суммы значений выделенного диапазона в строку состояния
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim s As Double
s = Application.WorksheetFunction.Sum(Target)
If s <> 0 Then
Application.StatusBar = FormatNumber(s, 3)
Else
Application.StatusBar = False
End If
End Sub


3. Событие BeforeRightClick

 

Событие BeforeRightClick запускается, когда пользователь щелкает по рабочему листу правой кнопкой мыши. Если вы хотите отключить появляющиеся при таком щелчке меню, то можете использовать событие RightClick и установить аргумент Cancel на True

 

ПРИМЕЧАНИЕ Событие BeforeRightClick не происходит, если курсор находится на панели инструментов или меню.

 

Следующая процедура лишит пользователя доступа к меню правой кнопки в рабочем листе.
 

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox "Контекстное меню не доступно"
End Sub
 
 
Создание собственного пункта контекстного меню и назначение макроса.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
Dim x As Object
For Each x In Application.CommandBars("cell").Controls
    If x.Tag = "brccm" Then x.Delete
        Next x
            If Not Application.Intersect(Target, Range("b1:b10")) _
                Is Nothing Then
                With Application.CommandBars("cell").Controls.Add
                    .Caption = "Мой пункт контекстного меню"
                    .OnAction = "MyMacro"
                    .Tag = "brccm"
                End With
        End If
End Sub
 


4. Событие Calculate

 
Для автоматического изменение размеров столбцов при проведении вычислений необходимо обработать метод AutoFit объекта Range при перехвате события Calculate объекта worksheet, которое и генерируется, когда на рабочем листе производятся вычисления.
 
Private Sub Worksheet_Calculate()
Columns("A:F").AutoFit
End Sub

 
ПОИСК
МОЯ КНОПКА
Контакты
МБОУ "Лицей им.Атякшева"

628260 г. Югорск, ул. Ленина 24,
ХМАО-Югра, Тюменская область
Телефон: 8 (34675)2-48-30
Факс: 8 (34675)2-48-30



89222596815 nady_er@mail.ru
Карта
sample map