Darblapas notikumi programmā Excel VBA

Satura rādītājs:

Anonim

Iespējams, vēlēsities palaist savu makro/VBA fragmentu, kad šūna maina vērtību, veic dubultklikšķi, tiek atlasīta lapa utt. Visos šajos gadījumos mēs izmantojam darblapas notikumu apstrādātāju. Notikumu apstrādātājs palīdz mums palaist VBA kodu, kad notiek kāds notikums.

Šajā rakstā mēs īsumā uzzināsim par katru darblapas notikumu apstrādātāju.

Kas ir darblapu notikumu apstrādātājs?

Darblapas notikumu apstrādātājs ir apakšprogramma, kas ir lokāla darblapas modulim.

Kur rakstīt darblapas notikumu apstrādātāja kodu?

Darblapā Notikumi ir rakstīti tikai lapu objekti. Ja rakstāt darblapas notikumu kādā modulī vai klases modulī, kļūdu nebūs, bet tie vienkārši nedarbosies.

Lai rakstītu lapas objektā. Veiciet dubultklikšķi uz tā vai ar peles labo pogu un noklikšķiniet uz skata koda. Tiks parādīts koda rakstīšanas apgabals.

Kā darblapā ierakstīt kodu konkrētam notikumam?

Tagad, kad esat rediģēšanas režīmā, augšējā kreisā stūra nolaižamajā izvēlnē redzēsit vispārīgu. Noklikšķiniet uz nolaižamā saraksta un atlasiet darblapu. Tagad augšējā labajā stūrī esošajā nolaižamajā izvēlnē tiks parādīti visi notikumi. Izvēlieties vajadzīgo, un šī notikuma skeleta kods tiks uzrakstīts jums.

Katram notikumam ir noteikts procedūras nosaukums. Tie ir rezervētie apakšprogrammas nosaukumi. Jūs nevarat tos izmantot citām lapas apakšprogrammām. Modulī tie darbosies kā parasta apakšprogramma.

Svarīgs: Katra apakšprogramma no šī saraksta darbosies norādītajā notikumā.
Viena veida darblapas notikuma procedūru var uzrakstīt tikai vienu reizi uz vienas lapas. Ja uz vienas lapas uzrakstīsit divas vienādas notikumu apstrādes procedūras, radīsies kļūda un neviena no tām netiks izpildīta. Protams, kļūda būs neskaidras apakšprogrammas.

Īsi uzzināsim par katru no notikumiem.

1. TheWorksheet_Change (ByVal Target kā diapazons)Pasākums

Šis notikums tiek aktivizēts, kad veicam kādas izmaiņas darblapu saturā (formatējums nav iekļauts). Ja vēlaties kaut ko darīt, ja tiek veiktas izmaiņas visā lapā, kods būs šāds:

Privāta apakšdarblapa_maiņa (ByVal mērķis kā diapazons) 'do somehting Msgbox "done some" End Sub 

"Mērķis" vienmēr ir aktīvā šūna.

Cits piemērs: ja mainās A1, iespējams, vēlēsities ievietot datumu un laiku šūnā B1. Tādā gadījumā mēs izmantojam notikumu worksheet_change. Kods izskatītos šādi:

Privāta apakšdarblapas maiņa (ByVal mērķis kā diapazons) Ja Mērķis.Address = "$ A $ 1" Tad diapazons ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If End Sub 

Tas tiks mērķēts tikai uz šūnu A1.

Ja vēlaties atlasīt mērķauditoriju pēc diapazona, izmantojiet tālāk norādīto piemēru.

Palaidiet makro, ja lapā tiek veiktas izmaiņas noteiktā diapazonā

2. TheWorksheet_SelectionChange (ByVal mērķis kā diapazons)Pasākums

Kā norāda nosaukums, šis notikums tiek aktivizēts, mainoties atlasei. Citiem vārdiem sakot, ja kursors atrodas šūnā A1 un tas pārvietojas uz citu šūnu, šajā apakšprogrammā esošais kods tiks palaists.

Zemāk esošais kods mainīs aktīvo šūnu krāsu, ja tas mainās un ja tā ir vienmērīga rinda.

Privāta apakšdarblapas_izvēle 

Tagad, kad mans kursors pārvietosies uz vienmērīgu rindu, tas būs iekrāsots. Nepāra rindu šūnas tiks saglabātas.

Vēl viens notikuma Worksheet_SelectionChange piemērs:

Vienkāršākais VBA kods, lai izceltu pašreizējo rindu un kolonnu, izmantojot

3. The Worksheet_Activate () Pasākums

Šis notikums tiek aktivizēts, kad tiek aktivizēts notikuma kods, kurā ir lapa. Šī notikuma skeleta kods ir šāds:

Privāta apakšdarblapa_Aktivizēt () Beigu apakš 

Vienkāršs piemērs ir lapas nosaukuma parādīšana, kad tā tiek atlasīta.

Privāta apakšdarblapa_Aktivēt () MsgBox "Jūs atrodaties" un ActiveSheet.Name Beigu apakšdaļa 

Tiklīdz jūs nokļūsit lapā, kurā ir šis kods, pasākums tiks palaists un tiks parādīts ziņojums "Jūs esat lapas nosaukums" (manā gadījumā lapa 2).

4. The Worksheet_Deactivate () Pasākums

Šis notikums rodas, atstājot kodu, kurā ir lapa. Citiem vārdiem sakot, ja vēlaties kaut ko darīt, piemēram, slēpt rindas vai kaut ko, atstājot lapu, izmantojiet šo VBA notikumu. Sintakse ir šāda:

Privāta apakšdarblapa_Deaktivizēt () 'jūsu kods' Beigu apakš 

Tālāk redzamais piemērs Worksheet_Deativate notikums vienkārši parādīs ziņojumu, ka esat pametis galveno lapu, kad pametīsit šo lapu.

Privāta apakšdarblapa_Deaktivizēt () MsgBox "Jūs atstājāt galveno lapu" beigu apakšdaļa 

5. The Worksheet_BeforeDelete ()Pasākums

Šis notikums tiek aktivizēts, kad apstiprināt VBA notikuma saturošās lapas dzēšanu. Sintakse ir vienkārša:

Privāta apakšdarblapa_BeforeDelete () Beigu apakš 

Zemāk esošais kods jums jautās, vai vēlaties kopēt lapas, kuru drīzumā paredzēts dzēst, saturu.

Privāta apakšdarblapa_BeforeDelete () ans = MsgBox ("Vai vēlaties kopēt šīs lapas saturu uz jaunu lapu?", VbYesNo) If ans = True then 'code to end If End Sub 

6. The Worksheet_BeforeDoubleClick (ByVal Target as Range, Cancel as Boolean) Pasākums

Šis notikums tiek aktivizēts, veicot dubultklikšķi uz atlasītās šūnas. Šī VBA darblapas notikuma sintakse ir šāda:

Privāta apakšdarblapa_BeforeDoubleClick (ByVal mērķis kā diapazons, Atcelt kā Būla) Beigu apakšdaļa 

Ja neiestatīsit mērķa šūnu vai diapazonu, tas tiks aktivizēts uz katra dubultklikšķa uz lapas.
Mainīgais Atcelt ir Būla mainīgais. Ja iestatīsit vērtību Patiesa, noklusējuma darbība nenotiks. Tas nozīmē, ka, veicot dubultklikšķi uz šūnas, tā nenonāks rediģēšanas režīmā.
Tālāk esošais kods liks šūnai aizpildīt krāsu, ja veicat dubultklikšķi uz jebkuras šūnas.

Privāta apakšdarblapa_BeforeDoubleClick (ByVal mērķis kā diapazons, Atcelt kā Būla) Atcelt = True Target.Interior.ColorIndex = 7 beigu apakšdaļa 

Zemāk esošais kods ir vērsts uz šūnu A1. Ja tas jau ir piepildīts ar norādīto krāsu, tas izzudīs. Tas ir līdzīgs pogai vai izvēles rūtiņai.

Privātā apakšnodaļa Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel as Boolean) If Target.Address = "$ A $ 1" Tad Atcelt = True If Target.Interior.ColorIndex = 4 Tad Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 End If Beigt Ja beigt Sub 

7. The Worksheet_BeforeRightClick (ByVal Target as Range, Cancel as Boolean) Pasākums

Šis notikums tiek aktivizēts, ar peles labo pogu noklikšķinot uz atlasītās šūnas. Šī VBA darblapas notikuma sintakse ir šāda:

Privāta apakšnodaļa Worksheet_BeforeRightClick(ByVal Target As Range, Atcelt kā Būla) Cancel = True '' your code 'End Sub 

Zemāk esošais kods aizpildīs šūnu ar vērtību 1, ja ar peles labo pogu noklikšķiniet uz tā. Tas nerādīs noklusējuma peles klikšķa opcijas, jo esam iestatījuši operatoru “Atcelt” uz “True”.

Privāta apakšdarblapa_BeforeRightClick (ByVal mērķis kā diapazons, Atcelt kā Būla) Atcelt = True Target.Value = 1 End Sub 

8. The Worksheet_Calculate () Pasākums

Ja vēlaties, lai kaut kas notiktu, kad Excel aprēķina lapu, izmantojiet šo notikumu. Tas tiks aktivizēts ikreiz, kad Excel aprēķina lapu. Sintakse ir vienkārša:

Private Sub Worksheet_Calculate () '' jūsu kods 'End Sub 

6. The Worksheet_FollowHyperlink (ByVal mērķis kā hipersaite)Pasākums

Šī procedūra tiks veikta, kad lapā noklikšķināsit uz hipersaites. Šī notikumu apstrādātāja pamata sintakse ir šāda:

Privāta apakšdarblapa_FollowHyperlink (ByVal Target kā hipersaite) '' jūsu kods 'End Sub 

Ja vēlaties, varat iestatīt mērķa hipersaiti. Ja nenorādāt mērķa hipersaiti, tā tiks izpildīta, ja koda saturošajā lapā noklikšķināsit uz jebkuras hipersaites.

Tātad, jā, puiši, tie bija daži pamata darblapas notikumi, kas būs noderīgi, ja jūs par tiem zināt. Zemāk ir daži saistīti raksti, kurus jūs varētu patikt lasīt.

Ja jums ir šaubas par šo rakstu vai kādu citu ar Excel/VBA saistītu rakstu, informējiet mūs zemāk esošajā komentāru sadaļā.

Darblapas maiņas notikuma izmantošana, lai palaistu makro, kad tiek veiktas izmaiņas| Tātad, lai palaistu jūsu makro ikreiz, kad lapa tiek atjaunināta, mēs izmantojam VBA darblapas notikumus.

Palaidiet makro, ja lapā tiek veiktas izmaiņas noteiktā diapazonā| Lai palaistu makro kodu, mainoties vērtībai noteiktā diapazonā, izmantojiet šo VBA kodu. Tas nosaka visas izmaiņas, kas veiktas norādītajā diapazonā, un aktivizēs notikumu.

Vienkāršākais VBA kods, lai iezīmētu pašreizējo rindu un kolonnu, izmantojot | Izmantojiet šo mazo VBA fragmentu, lai iezīmētu lapas pašreizējo rindu un kolonnu.

Populāri raksti:

50 Excel saīsnes, lai palielinātu produktivitāti | Ātrāk izpildiet savu uzdevumu. Šie 50 saīsnes padarīs jūsu darbu vēl ātrāku programmā Excel.

Funkcija VLOOKUP programmā Excel | Šī ir viena no visbiežāk izmantotajām un populārākajām Excel funkcijām, kas tiek izmantota, lai meklētu vērtību no dažādiem diapazoniem un lapām.

COUNTIF programmā Excel 2016 | Saskaitiet vērtības ar nosacījumiem, izmantojot šo apbrīnojamo funkciju. Jums nav jāfiltrē dati, lai uzskaitītu noteiktu vērtību. Skaitītāja funkcija ir būtiska, lai sagatavotu informācijas paneli.

Kā lietot SUMIF funkciju programmā Excel | Šī ir vēl viena būtiska informācijas paneļa funkcija. Tas palīdz apkopot vērtības noteiktos apstākļos.