Събития на работния лист в Excel VBA

Съдържание:

Anonim

Може да искате да стартирате своя макрос/VBA фрагмент, когато клетката промени стойността си, когато се случи двойно щракване, когато е избран лист и т.н. Във всички тези случаи използваме манипулатор на събития на работен лист. Манипулаторът на събития ни помага да стартираме VBA код, когато възникне определено събитие.

В тази статия ще научим накратко за всеки манипулатор на събития на работен лист.

Какво е манипулатор на събития на работни листове?

Манипулаторът на събития на работен лист е подпрограма, която е локална за модул на работен лист.

Къде да напиша код за обработка на събития на работен лист?

Събитията на работния лист се записват само в обекти на листове. Ако напишете събитие на работен лист в някакъв модул или модул на клас, няма да има грешка, но те просто няма да работят.

За да напишете в обекта на листа. Щракнете двукратно върху него или щракнете с десния бутон и щракнете върху кода за изглед. Ще се покаже областта за писане на код.

Как да напиша код за конкретно събитие в работния лист?

Сега, когато сте в режим на редактиране, в падащото меню в горния ляв ъгъл ще видите общо. Щракнете върху падащото меню и изберете работен лист. Сега в падащото меню в горния десен ъгъл ще се показват всички събития. Изберете каквото ви е необходимо и скелетният код за това събитие ще бъде написан за вас.

Всяко събитие има фиксирано име на процедура. Това са запазените имена на подпрограми. Не можете да ги използвате за други подпрограми на лист. В модул те ще работят като нормална подпрограма.

Важно: Всяка подпрограма от този списък ще се изпълнява при посоченото събитие.
Един тип процедура за събития на работен лист може да бъде записана само веднъж на един лист. Ако напишете две еднакви процедури за обработка на събития на един лист, това ще доведе до грешка и никоя от тях няма да бъде изпълнена. Разбира се, грешката ще бъде двусмислена подпрограма.

Нека научим накратко за всяко от събитията.

1. TheWorksheet_Change (ByVal Target As Range)Събитие

Това събитие се задейства, когато направим някаква промяна в съдържащите работни листове (форматирането е изключено). Ако искате да направите нещо, ако е направена промяна в целия лист, кодът ще бъде:

Private Sub Worksheet_Change (ByVal Target As Range) 'направи нещо Msgbox "направи нещо" End Sub 

"Целта" винаги е активната клетка.

Друг пример: Може да искате да поставите дата и час в клетка В1, ако А1 се промени. В този случай използваме събитието worksheet_change. Кодът ще изглежда така:

Private Sub Worksheet_Change (ByVal Target As Range) Ако Цел.Address = "$ A $ 1" Тогава Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If End Sub 

Това ще бъде насочено само към клетката A1.

Ако искате да насочите диапазон, използвайте следния пример:

Стартирайте макрос, ако на листа са направени промени в посочен диапазон

2. TheWorksheet_SelectionChange (ByVal Target As Range)Събитие

Както подсказва името, това събитие се задейства, когато селекцията се промени. С други думи, ако курсорът ви е в клетка A1 и той се премести в друга клетка, кодът в тази подпрограма ще се изпълни.

Кодът по -долу ще промени цвета на активните клетки, ако се промени и ако е четен ред.

Private Sub Worksheet_SelectionChange (ByVal Target As Range) If Target.Row Mod 2 = 0 then Target.Interior.ColorIndex = 22 End If End Sub 

Сега, когато курсорът ми се движи по четен ред, той ще бъде оцветен. Клетките с нечетен ред ще бъдат пощадени.

Друг пример за събитието Worksheet_SelectionChange:

Най -простият VBA код за маркиране на текущия ред и колона с помощта

3. The Работен лист_Активиране () Събитие

Това събитие се задейства, когато кодът на събитието, съдържащ лист, се активира. Скелетният код за това събитие е:

Частен под работен лист_Activate () Краен под 

Прост пример е показването на името на листа, когато той бъде избран.

Частен под работен лист_Activate () MsgBox "Вие сте на" & ActiveSheet.Name Краен подмен 

Веднага щом влезете в листа, който съдържа този код, събитието ще се стартира и ще се покаже съобщение, че „Вие сте на име на лист“ (лист 2 е в моя случай).

4. The Worksheet_Deactivate () Събитие

Това събитие се задейства при напускане на кода, съдържащ лист. С други думи, ако искате да направите нещо, като скриване на редове или нещо, когато напускате листа, използвайте това събитие VBA. Синтаксисът е:

Private Sub Worksheet_Deactivate () 'your code' End Sub 

Примерното по -долу събитие Worksheet_Deativate просто ще изскочи съобщение, че сте напуснали главния лист, когато напуснете този лист.

Частен под работен лист_Deactivate () MsgBox "Напуснахте главния лист" Край на под 

5. The Работен лист_BeforeDelete ()Събитие

Това събитие се задейства, когато потвърдите изтриването на съдържащия лист VBA събитие. Синтаксисът е прост:

Частен под работен лист_BeforeDelete () Краен под 

Кодът по-долу ще ви попита дали искате да копирате съдържанието на листа за предстоящо изтриване.

Private Sub Worksheet_BeforeDelete () ans = MsgBox ("Искате ли да копирате съдържанието на този лист в нов лист?", VbYesNo) If ans = True then 'код за копиране End If End Sub 

6. The Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Събитие

Това събитие се задейства, когато щракнете двукратно върху целевата клетка. Синтаксисът на това събитие на работен лист VBA е:

Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) End Sub 

Ако не зададете целевата клетка или диапазон, тя ще се задейства при всяко двойно щракване върху листа.
Променливата Cancel е булева променлива. Ако зададете True, действието по подразбиране няма да се случи. Това означава, че ако щракнете двукратно върху клетката, тя няма да влезе в режим на редактиране.
Кодът по -долу ще накара клетката да се запълни с цвят, ако щракнете двукратно върху някоя клетка.

Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Interior.ColorIndex = 7 End Sub 

Кодът по -долу е насочен към клетката A1. Ако вече е изпълнен с посочения цвят, той ще изчезне. Много прилича на бутон или квадратче за харесване.

Частен под Workheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$ A $ 1" Тогава Cancel = True If Target.Interior.ColorIndex = 4 Тогава Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 End If End If End Sub 

7. The Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Събитие

Това събитие се задейства, когато щракнете с десния бутон върху целевата клетка. Синтаксисът на това събитие на работен лист VBA е:

Частен под Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True "" кода ви "End Sub 

Кодът по-долу ще запълни клетката със стойност 1, ако щракнете с десния бутон върху нея. Той няма да показва опциите за десен бутон по подразбиране, тъй като сме задали оператора "Cancel" на True.

Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Value = 1 End Sub 

8. The Работен лист_Изчисляване () Събитие

Ако искате нещо да се случи, когато Excel изчисли лист, използвайте това събитие. Той ще се задейства всеки път, когато Excel изчисли лист. Синтаксисът е прост:

Private Sub Worksheet_Calculate () '' вашият код 'End Sub 

6. The Worksheet_FollowHyperlink (ByVal Target As Hyperlink)Събитие

Тази процедура ще се изпълни, когато щракнете върху хипервръзка на листа. Основният синтаксис на този манипулатор на събития е:

Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink) '' вашият код 'End Sub 

Можете да зададете целевата хипервръзка, ако искате. Ако не зададете целевата хипервръзка, тя ще се изпълни, ако кликнете върху някоя хипервръзка в кода, съдържащ лист.

Така че да, момчета, това бяха някои основни събития от работен лист, които ще бъдат полезни, ако знаете за тях. По -долу са някои свързани статии, които може да искате да прочетете.

Ако имате някакви съмнения относно тази статия или друга статия, свързана с Excel/VBA, уведомете ни в секцията за коментари по -долу.

Използване на събитие за смяна на работен лист за стартиране на макрос, когато се направи някаква промяна| Така че, за да стартираме вашия макрос винаги, когато листът се актуализира, използваме събитията от работния лист на VBA.

Стартирайте макрос, ако на листа са направени промени в посочен диапазон| За да стартирате вашия макро код, когато стойността в определен диапазон се промени, използвайте този VBA код. Той открива всяка промяна, направена в определения диапазон и ще задейства събитието.

Най -простият VBA код за подчертаване на текущия ред и колона с помощта на | Използвайте този малък VBA фрагмент, за да маркирате текущия ред и колона на листа.

Популярни статии:

50 преки пътища в Excel за повишаване на вашата производителност | Бъдете по -бързи в задачата си. Тези 50 преки пътища ще направят работата ви още по -бърза в Excel.

Функцията VLOOKUP в Excel | Това е една от най -използваните и популярни функции на excel, която се използва за търсене на стойност от различни диапазони и листове.

COUNTIF в Excel 2016 | Пребройте стойностите с условия, използвайки тази невероятна функция. Не е необходимо да филтрирате данните си, за да преброите конкретна стойност. Функцията Countif е от съществено значение за подготовката на вашето табло.

Как да използвате функцията SUMIF в Excel | Това е друга основна функция на таблото. Това ви помага да обобщите стойностите при конкретни условия.