Blok With - End With vo VBA sa používa na to, aby oznámil VBA, že použijeme daný objekt, a mal by zvážiť vlastnosti daného objektu iba vtedy, keď použijeme bodový operátor. Príklady uvidíme neskôr v tomto článku.
Syntax s - koniec s blokom
S [Object] 'Code na zmenu alebo použitie [Object]'- '- Koniec
Teraz, keď poznáme syntax bloku With - End With, pozrime sa na jeho použitie.
Príklad With - End With Block
Povedzme, že chcem vykonať niekoľko zmien v rozsahu A2: A10. Chcem vybrať tento rozsah, zmeniť farby výplne, štýl písma atď. Ako by som to urobil vo všeobecnosti? Asi takto:
Dielčí test () Rozsah ("A1: A10"). Vyberte rozsah ("A1: A10"). Interior.ColorIndex = 8 rozsah ("A1: A10"). Font.Name = "alžírsky" rozsah ("A1: A10 ") .Font.ColorIndex = 12 Rozsah (" A1: A10 "). Font.Underline = xlUnderlineStyleDouble Range (" A1: A10 "). Rozsah kopírovania (" B1: B10 ") Rozsah (" A1: A10 "). Vymazať Koniec pod
Vyššie uvedené vyberá rozsah A1: A10. Zmení vnútornú farbu rozsahu na index farby 8. Zmení písmo na alžírsky. Zmení farbu písma na index farby 12. Podčiarkne text v rozsahu dvojitým podčiarknutím. Potom skopíruje rozsah A1: A10 do rozsahu B1: B10 rovnakého listu. Nakoniec sa vyčistí rozsah A1: A10.
Môžete si všimnúť, že na to, aby sme vykonali každú operáciu s rozsahom A1: A10, musíme ju napísať zakaždým. Potom operátor bodiek pristupuje k svojim vlastnostiam. To znižuje rýchlosť spracovania a zvyšuje režijné náklady na programátorov VBA. Alternatívou je použiť blok With: Nasledujúci kód robí to isté ako kód uvedený vyššie, ale rýchlejšie.
Dielčí test () S rozsahom ("A1: A10"). Vyberte .Interior.ColorIndex = 8 .Font.Name = "alžírsky" .Font.ColorIndex = 12 .Font.Underline = xlUnderlineStyleDouble .Copy rozsah ("B1: B10" ). Vymazať koniec s koncovkou Sub
Pozrime sa na ďalší príklad.
Ak ste vytvorili objekt programu Outlook Mail, môžete ho použiť na inicializáciu všetkých jeho vlastností a použitie metód.
Set outMail = Outlook.Application.CreateItem (0) With outMail .To = "abcd.mail.com" 'Povinné. Tu definujete ID cieľovej pošty … cc = "cc.mail.com" 'voliteľné. ID poštovej kópie, ak chcete … BCC = "bcc.mail.com" 'voliteľné. Skrytá kópia pošty, ak chcete … Subject = subj 'by malo mať. Masáž na tele pošty … Telo = správa je voliteľná. Masáž na tele pošty… Prílohy. Pridajte „C: /exceltip.com \ test.xlsx“. Odoslať Koniec s
Ako to funguje?
Keď píšeme s rozsahom („A1: A10“), vba uzamkne svoj odkaz na rozsah objektov („A1: A10“). Kedykoľvek teda napíšeme operátor bodky (.), VBA vypíše všetky členy tejto triedy rozsahu, ktoré ovplyvnia iba rozsah objektu („A1: A10“) alebo akýkoľvek objekt, ktorý ste uviedli. Referenčný zámok sa uvoľní, keď VBA prečíta príkaz End With.
Vnorené s blokmi
Môžeme mať blok v inom bloku. Vo vyššie uvedenom príklade sme na jeho výber použili objekt rozsahu. Potom sme na prácu s písmami niekoľkokrát použili Range.Font. Toto sa opäť opakuje. Vyššie uvedený kód je možné napísať aj takto:
Vedľajší test () S rozsahom ("A1: A10"). Vyberte .Interior.ColorIndex = 8 'Použitie iného s v rámci s blokom s .Font .Name = "alžírsky" .ColorIndex = 12 .Upodčiarkovník = xlUnderlineStyleDouble Koniec s .Copy Rozsah („B1: B10“). Čistý koniec s koncovou podskupinou
Vnútorný blok s blokom by mal odkazovať na objekt, ktorý je podčlenom vonkajšieho objektu. Vonkajší môžeme označiť ako predmet s vnútorným Ako dieťa s. Keď začnete s vnútorným znakom, objekt by mal byť napísaný predchádzajúcim bodovým operátorom.
Akonáhle ste dieťa, nemôžete pristupovať k vlastnostiam špecifickým pre rodičov. Napríklad nasledujúci kód je nesprávny.
Vedľajší test () S rozsahom ("A1: A10"). Vyberte .Interior.ColorIndex = 8 'Použitie iného s v rámci s blokom s .Font .Name = "alžírsky" .ColorIndex = 12 .Unterline = xlUnderlineStyleDouble' Nasledujúci kód vygeneruje chybu, pretože metódy kopírovania a vymazania nepatria do triedy písem … Rozsah kopírovania ("B1: B10"). Vymazať koniec s koncom s koncom pod
Plne kvalifikovaný s blokom
Ak chcem vykonať určité zmeny s písmom rozsahu A1: A10 listu2 v kóde obsahujúcom zošit, mali by sme použiť plne kvalifikovaný blok.
Nasledujúce dva kódy budú fungovať rovnako.
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
'Plne kvalifikovaný s blokom Sub test3 () S ThisWorkbook.Sheets ("Shee2"). Range ("A1: A10"). Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With End Sub
Môžete vidieť rozdiel. Keď teda viete, že z objektu použijete viacero metód a vlastností, zadajte na začiatku úplný názov. Ak budete používať podradené objekty, použite predchádzajúci prístup. Skúsení programátori používajú obe metódy vo vhodných situáciách.
Takže áno, chlapci, takto používame blok With - End With vo VBA. Dúfam, že som bol dostatočne vysvetľujúci a tento článok vám pomohol porozumieť pojmu With - End With. Ak máte akékoľvek pochybnosti týkajúce sa tohto článku alebo akejkoľvek inej témy, opýtajte sa ma v sekcii komentárov nižšie. Rád vám pomôžem.
Premenné VBA v Exceli| VBA je skratka pre Visual Basic for Applications. Je to programovací jazyk od spoločnosti Microsoft. Používa sa s aplikáciami balíka Microsoft Office, ako sú MSExcel, MS-Word a MS-Access, zatiaľ čo premenné VBA sú špecifické kľúčové slová.
Variabilný rozsah Excel VBA| Vo všetkých programovacích jazykoch máme špecifikátory prístupu k premenným, ktoré definujú, odkiaľ je k definovanej premennej prístup. Excel VBA nie je výnimkou. VBA má tiež špecifikátory rozsahu.
Argumenty ByRef a ByVal | Keď je argument odoslaný ako argument ByRef do iného podradeného prvku alebo funkcie, odošle sa odkaz na skutočnú premennú. Všetky zmeny vykonané v kópii premennej sa prejavia v pôvodnom argumente.
Odstráňte hárky bez výziev na potvrdenie pomocou VBA v programe Microsoft Excel | Keďže odstraňujete hárky pomocou jazyka VBA, viete, čo robíte. Chcete Excelu povedať, aby toto upozornenie nezobrazoval a vymazal ten prekliaty hárok.
Pridajte a uložte nový zošit pomocou jazyka VBA v programe Microsoft Excel 2016| V tomto kóde sme najskôr vytvorili odkaz na objekt zošita. A potom sme to inicializovali novým objektom zošita. Výhodou tohto prístupu je, že môžete ľahko vykonávať operácie s týmto novým zošitom. Rovnako ako ukladanie, zatváranie, mazanie atď
Zobrazte správu na stavovom riadku programu Excel VBA| Stavový riadok v Exceli je možné použiť ako monitor kódu. Keď je váš kód VBA dlhý a vykonávate niekoľko úloh pomocou jazyka VBA, často vypnete aktualizáciu obrazovky, aby ste videli, že obrazovka bliká.
Vypnite varovné správy pomocou VBA v programe Microsoft Excel 2016| Tento kód nielenže deaktivuje upozornenia VBA, ale tiež zvyšuje časovú účinnosť kódu. Pozrime sa ako.
Populárne články:
50 skratiek programu Excel na zvýšenie produktivity | Vykonajte svoju úlohu rýchlejšie. Týchto 50 skratiek vám umožní pracovať ešte rýchlejšie v Exceli.
Funkcia VLOOKUP v programe Excel | Toto je jedna z najpoužívanejších a najobľúbenejších funkcií programu Excel, ktorá sa používa na vyhľadávanie hodnôt z rôznych rozsahov a hárkov.
COUNTIF v Exceli 2016 | Počítajte hodnoty s podmienkami pomocou tejto úžasnej funkcie. Na počítanie konkrétnych hodnôt nie je potrebné filtrovať údaje. Funkcia Countif je potrebná na prípravu palubnej dosky.
Ako používať funkciu SUMIF v programe Excel | Toto je ďalšia zásadná funkcia palubnej dosky. To vám pomôže zhrnúť hodnoty za konkrétnych podmienok.