Události listu v aplikaci Excel VBA

Obsah:

Anonim

Možná budete chtít spustit svůj fragment makra/VBA, když buňka změní svou hodnotu, když dojde k dvojitému kliknutí, když je vybrán list atd. Ve všech těchto případech používáme obslužný program událostí listu. Obsluha událostí nám pomáhá spouštět kód VBA vždy, když dojde k určité události.

V tomto článku se stručně seznámíme s každým obslužným programem události pracovního listu.

Co je to obsluha událostí pracovních listů?

Obslužná rutina události listu je podprogram, který je lokální pro modul listu.

Kam napsat kód obsluhy události pracovního listu?

Pracovní list Události se zapisují pouze do objektů listů. Pokud do nějakého modulu nebo modulu třídy napíšete událost listu, nedojde k žádné chybě, ale nebude fungovat.

Zapisovat do objektu listu. Poklepejte na něj nebo klikněte pravým tlačítkem a klikněte na zobrazit kód. Zobrazí se oblast pro psaní kódu.

Jak napsat kód pro konkrétní událost na listu?

Nyní, když jste v režimu úprav, v rozevíracím seznamu v levém horním rohu uvidíte obecné. Klikněte na rozevírací seznam a vyberte list. Nyní v rozevíracím seznamu v pravém horním rohu se zobrazí všechny události. Vyberte si, co potřebujete, a kosterní kód pro tuto událost bude napsán pro vás.

Každá událost má pevný název procedury. Toto jsou vyhrazené názvy podprogramů. Nemůžete je použít pro jiné podprogramy na listu. V modulu budou fungovat jako normální podprogram.

Důležité: Každý podprogram z tohoto seznamu poběží na zadané události.
Jeden typ postupu události listu lze na jeden list napsat pouze jednou. Pokud na jeden list napíšete dvě stejné procedury zpracování událostí, bude to mít za následek chybu a žádný z nich nebude proveden. Chybou budou samozřejmě nejednoznačné podprogramy.

Pojďme se krátce seznámit s každou z událostí.

1. TheWorksheet_Change (ByVal Target As Range)událost

Tato událost se spustí, když provedeme jakoukoli změnu obsahující pracovní listy (formátování vyloučeno). Pokud chcete něco udělat, pokud dojde ke změně v celém listu, pak kód bude:

Private Sub Worksheet_Change (ByVal Target As Range) 'do somehting Msgbox "done something" End Sub 

"Cíl" je vždy aktivní buňka.

Další příklad: Pokud se změní A1, můžete do buňky B1 vložit datum a čas. V takovém případě použijeme událost worksheet_change. Kód by vypadal takto:

Soukromý dílčí pracovní list_Změna (cíl podle ByValu jako rozsah) Pokud cílová.Address = "$ A $ 1" Then Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If End Sub 

To bude cílit pouze na buňku A1.

Pokud chcete cílit na rozsah, použijte následující příklad:

V případě změny provedené na listu ve specifikovaném rozsahu spusťte makro

2. TheWorksheet_SelectionChange (ByVal Target As Range)událost

Jak název napovídá, tato událost se spustí při změně výběru. Jinými slovy, pokud je váš kurzor v buňce A1 a přesune se do jiné buňky, spustí se kód v tomto podprogramu.

Níže uvedený kód změní barvu aktivních buněk, pokud se kdykoli změní a pokud je sudý řádek.

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

Nyní, kdykoli se můj kurzor přesune na sudý řádek, bude barevný. Buňky lichých řádků budou ušetřeny.

Další příklad události Worksheet_SelectionChange:

Nejjednodušší kód VBA pro zvýraznění aktuálního řádku a sloupce pomocí

3. The Worksheet_Activate () událost

Tato událost se spustí, když se aktivuje kód události obsahující list. Základní kód této události je:

Soukromý dílčí pracovní list_Activate () Konec pod 

Jednoduchým příkladem je zobrazení názvu listu při jeho výběru.

Soukromý dílčí list_aktivace () MsgBox „Jste na“ & ActiveSheet.Name Konec Sub 

Jakmile přijdete na list, který obsahuje tento kód, událost se spustí a zobrazí se zpráva „Jste na názvu listu“ (list2 je v mém případě).

4. The Pracovní list_Deaktivovat () událost

Tato událost se spustí při opuštění kódu obsahujícího list. Jinými slovy, pokud chcete něco udělat, například skrýt řádky nebo cokoli, když opustíte list, použijte tuto událost VBA. Syntaxe je:

Private Sub Worksheet_Deactivate () 'your code' End Sub 

Níže uvedený příklad události Worksheet_Deativate jednoduše zobrazí zprávu, že jste opustili hlavní list, když tento list opustíte.

Soukromý dílčí pracovní list_Deaktivovat () MsgBox „Opustili jste hlavní list“ Koncový díl 

5. The Worksheet_BeforeDelete ()událost

Tato událost se spustí, když potvrdíte odstranění události obsahující list VBA. Syntaxe je jednoduchá:

Soukromý dílčí pracovní list_BeforeDelete () Koncový pod 

Níže uvedený kód se vás zeptá, zda chcete zkopírovat obsah listu, který chcete odstranit.

Private Sub Worksheet_BeforeDelete () ans = MsgBox („Chcete zkopírovat obsah tohoto listu do nového listu?“, VbYesNo) If ans = True Then 'kód ke kopírování End If End Sub 

6. The Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel as Boolean) událost

Tato událost se spustí, když dvakrát kliknete na cílenou buňku. Syntaxe této události pracovního listu VBA je:

Soukromý dílčí list_BeforeDoubleClick (cíl podle ByVal jako rozsah, zrušit jako booleovský) End Sub 

Pokud nenastavíte cílovou buňku nebo rozsah, spustí se při každém dvojitém kliknutí na list.
Proměnná Cancel je logická proměnná. Pokud nastavíte hodnotu True, výchozí akce se nestane. To znamená, že pokud na buňku dvakrát kliknete, nedostane se do režimu úprav.
Níže uvedený kód způsobí, že se buňka vyplní barvou, pokud dvakrát kliknete na libovolnou buňku.

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

Níže uvedený kód cílí na buňku A1. Pokud je již naplněna zadanou barvou, pak zmizí. Je to hodně podobné tlačítku nebo zaškrtávacímu políčku.

Soukromý sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel as Boolean) If Target.Address = "$ A $ 1" Then Cancel = True If Target.Interior.ColorIndex = 4 Then 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) událost

Tato událost se spustí, když na cílenou buňku kliknete pravým tlačítkem. Syntaxe této události pracovního listu VBA je:

Soukromý sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel as Boolean) Cancel = True '' your code 'End Sub 

Níže uvedený kód vyplní buňku hodnotou 1, pokud na ni kliknete pravým tlačítkem. Nezobrazí výchozí možnosti kliknutí pravým tlačítkem, protože jsme operátor „Zrušit“ nastavili na hodnotu True.

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

8. The Pracovní list_Výpočet () událost

Pokud chcete, aby se něco stalo, když excel vypočítá list, použijte tuto událost. Spustí se vždy, když Excel vypočítá list. Syntaxe je jednoduchá:

Private Sub Worksheet_Calculate () '' váš kód 'End Sub 

6. The Worksheet_FollowHyperlink (ByVal Target jako hypertextový odkaz)událost

Tento postup se spustí, když kliknete na hypertextový odkaz na listu. Základní syntaxe této obsluhy událostí je:

Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink) '' váš kód 'End Sub 

Pokud chcete, můžete nastavit cílový hypertextový odkaz. Pokud nenastavíte cílový hypertextový odkaz, spustí se po kliknutí na libovolný hypertextový odkaz na listu s kódem.

Takže jo, lidi, to byly některé základní události pracovního listu, které budou užitečné, pokud o nich víte. Níže jsou uvedeny některé související články, které byste si rádi přečetli.

Pokud máte jakékoli pochybnosti týkající se tohoto článku nebo jiného článku souvisejícího s Excelem/VBA, dejte nám vědět v sekci komentáře níže.

Použití události změny listu ke spuštění makra po provedení jakékoli změny| Chcete -li tedy spustit makro vždy, když se list aktualizuje, používáme události pracovního listu VBA.

V případě změny provedené na listu ve specifikovaném rozsahu spusťte makro| Chcete -li spustit kód makra, když se změní hodnota v zadaném rozsahu, použijte tento kód VBA. Detekuje jakoukoli změnu provedenou v uvedeném rozsahu a spustí událost.

Nejjednodušší kód VBA pro zvýraznění aktuálního řádku a sloupce pomocí | Pomocí tohoto malého úryvku VBA zvýrazněte aktuální řádek a sloupec listu.

Oblíbené články:

50 zkratek aplikace Excel pro zvýšení produktivity | Získejte rychleji svůj úkol. Těchto 50 zkratek vám v Excelu práci ještě zrychlí.

Funkce VLOOKUP v Excelu | Toto je jedna z nejpoužívanějších a nejoblíbenějších funkcí Excelu, která slouží k vyhledávání hodnot z různých rozsahů a listů.

COUNTIF v aplikaci Excel 2016 | Pomocí této úžasné funkce spočítejte hodnoty s podmínkami. K počítání konkrétní hodnoty není nutné filtrovat data. Funkce Countif je nezbytná pro přípravu řídicího panelu.

Jak používat funkci SUMIF v aplikaci Excel | Toto je další základní funkce řídicího panelu. To vám pomůže shrnout hodnoty za konkrétních podmínek.