Jak používat ... Konec blokováním ve VBA Excel?

Blok With - End With ve VBA slouží k informování VBA, že použijeme daný objekt, a měl by zvážit vlastnosti daného objektu pouze tehdy, když použijeme operátor teček. Příklady uvidíme později v tomto článku.

Syntaxe s - Konec s blokem

Pomocí kódu [Object] 'ke změně nebo použití [Object]'- '- Konec 

Takže teď, když známe syntaxi bloku With - End With, podívejme se na jeho použití.

Příklad With - End With Block

Řekněme, že chci provést několik změn v rozsahu A2: A10. Chci vybrat tento rozsah, změnit barvy výplně, styl písma atd. Jak bych to obecně udělal? Asi takto:

Dílčí test () Rozsah ("A1: A10"). Vyberte rozsah ("A1: A10"). Interior.ColorIndex = 8 rozsahů ("A1: A10"). Font.Name = "alžírský" rozsah ("A1: A10 ") .Font.ColorIndex = 12 Rozsah (" A1: A10 "). Font.Underline = xlUnderlineStyleDouble Range (" A1: A10 "). Rozsah kopírování (" B1: B10 ") Rozsah (" A1: A10 "). Vymazat End Sub 

Výše uvedené vybírá rozsah A1: A10. Změní vnitřní barvu rozsahu na barevný index 8. Změní písmo na alžírské. Změní barvu písma na barevný rejstřík 12. Podtrhne text v rozsahu dvojitým podtržením. Poté zkopíruje rozsah A1: A10 do rozsahu B1: B10 stejného listu. Nakonec vymaže rozsah A1: A10.

Můžete si všimnout, že pro každou operaci s rozsahem A1: A10 ji musíme napsat pokaždé. Poté operátor teček přistupuje k jeho vlastnostem. To snižuje rychlost zpracování a zvyšuje režii práce programátorům VBA. Alternativou je použití bloku With: Níže uvedený kód funguje stejně jako výše uvedený kód, ale rychleji.

Dílčí test () S rozsahem ("A1: A10"). Vyberte .Interior.ColorIndex = 8 .Font.Name = "Algerian" .Font.ColorIndex = 12 .Font.Underline = xlUnderlineStyleDouble .Copy Range ("B1: B10" ). Clear End With End Sub 


Podívejme se na další příklad.

Pokud jste vytvořili objekt aplikace Outlook Mail, můžete jej použít k inicializaci všech jeho vlastností a použití metod.

Nastavit outMail = Outlook.Application.CreateItem (0) With outMail .To = "abcd.mail.com" 'Povinné. Zde definujete ID cílové pošty… cc = "cc.mail.com" 'nepovinné. ID kopie pošty, chcete -li … BCC = "bcc.mail.com" 'nepovinné. Bcc mail id, pokud chcete … Subject = subj 'by měl mít. Masáž na těle pošty … Tělo = zpráva volitelná. Masáž na těle pošty… Přílohy. Přidejte „C: /exceltip.com \ test.xlsx“. Odeslat Konec s 

Jak to funguje?

Když píšeme s rozsahem („A1: A10“), vba zablokuje svůj odkaz na rozsah objektů („A1: A10“). Kdykoli tedy napíšeme operátor tečky (.), VBA vypíše všechny členy této třídy rozsahu, které ovlivní pouze rozsah objektu („A1: A10“) nebo jakýkoli objekt, který jste zmínili. Referenční zámek se uvolní, když VBA přečte prohlášení End With.

Vnořené s bloky

Můžeme mít blok v jiném bloku. Ve výše uvedeném příkladu jsme k výběru použili objekt rozsahu. Poté jsme pro práci s písmeny několikrát použili Range.Font. To se opět opakuje. Výše uvedený kód lze také napsat takto:

Dílčí test () S rozsahem ("A1: A10"). Vyberte .Interior.ColorIndex = 8 'Použití jiného s v rámci With With With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End with .Copy Rozsah ("B1: B10"). Vymazat konec s koncovou sub 

Vnitřní s blokem by měl odkazovat na objekt, který je dílčím členem vnějšího objektu. Můžeme odkazovat na vnější s jako objekt s a vnitřní s jako dítě s. Když začínáte s, objekt by měl být zapsán s předchozím tečkovým operátorem.

Jakmile jste dítě, nebudete mít přístup k vlastnostem specifickým pro rodiče. Níže uvedený kód je například nesprávný.

Dílčí test () S rozsahem ("A1: A10"). Vyberte .Interior.ColorIndex = 8 'Použití jiného With v rámci With With With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble' Níže uvedený kód způsobí chybu, protože metody kopírování a mazání nepatří do třídy písem… Rozsah kopírování („B1: B10“). Vymazat Konec Koncem S Koncem Sub 

Plně kvalifikovaný s blokem

Pokud chci provést nějaké změny s písmem rozsahu A1: A10 listu2 v kódu obsahujícím sešit, měli bychom použít plně kvalifikovaný blok.

Níže uvedené dva kódy budou fungovat stejně.

Sub test2 () With ThisWorkbook With .Sheets ("Sheet2") With .Range ("A1: A10") With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With End With End With End With End Sub 
'Plně kvalifikovaný s blokem Sub test3 () S ThisWorkbook.Sheets ("Shee2"). Range ("A1: A10"). Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With End Sub 

Rozdíl vidíte. Když tedy víte, že budete z objektu používat více metod a vlastností, zadejte na začátku plně kvalifikovaný název. Pokud budete používat podřízené objekty, použijte předchozí přístup. Zkušení programátoři používají obě metody ve vhodných situacích.

Takže ano, kluci, takto používáme blok With - End With ve VBA. Doufám, že jsem byl dostatečně vysvětlující a tento článek vám pomohl pochopit koncept With - End With. Pokud máte ohledně tohoto článku nebo jiného tématu jakékoli pochybnosti, zeptejte se mě v sekci komentáře níže. Rád vám pomůžu.

Proměnné VBA v Excelu| VBA znamená Visual Basic for Applications. Jedná se o programovací jazyk od společnosti Microsoft. Používá se s aplikacemi Microsoft Office, jako jsou MSExcel, MS-Word a MS-Access, zatímco proměnné VBA jsou specifická klíčová slova.

Proměnný rozsah Excel VBA| Ve všech programovacích jazycích máme specifikátory přístupu k proměnným, které definují, odkud lze k definované proměnné přistupovat. Excel VBA není výjimkou. VBA má také specifikátory rozsahu.

Argumenty ByRef a ByVal | Když je argument předán jako ByRef argument jinému sub nebo funkci, je odeslán odkaz na skutečnou proměnnou. Jakékoli změny provedené v kopii proměnné se projeví v původním argumentu.

Odstraňte listy bez výzev k potvrzení pomocí VBA v aplikaci Microsoft Excel | Protože odstraňujete listy pomocí VBA, víte, co děláte. Chtěli byste říct Excelu, aby toto varování nezobrazoval a ten zatracený list smazal.

Přidat a uložit nový sešit pomocí jazyka VBA v aplikaci Microsoft Excel 2016| V tomto kódu jsme nejprve vytvořili odkaz na objekt sešitu. A pak jsme to inicializovali novým objektem sešitu. Výhodou tohoto přístupu je, že na tomto novém sešitu můžete snadno provádět operace. Stejně jako ukládání, zavírání, mazání atd

Zobrazit zprávu na stavovém řádku aplikace Excel VBA| Stavový řádek v Excelu lze použít jako monitor kódu. Když je váš kód VBA dlouhý a provádíte několik úkolů pomocí VBA, často deaktivujete aktualizaci obrazovky, abyste neviděli, že tato obrazovka bliká.

Vypněte varovné zprávy pomocí VBA v aplikaci Microsoft Excel 2016| Tento kód nejenže zakáže výstrahy VBA, ale také zvyšuje časovou účinnost kódu. Uvidíme jak.

Oblíbené články:

50 zkratek aplikace Excel pro zvýšení produktivity | Získejte rychleji svůj úkol. Těchto 50 klávesových zkratek vám umožní pracovat v Excelu ještě rychleji.

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ích hodnot nemusíte data filtrovat. 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.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave