Blocul With - End With din VBA este folosit pentru a spune VBA că vom folosi obiectul dat și ar trebui să ia în considerare proprietățile obiectului dat doar după ce vom folosi operatorul punct. Vom vedea exemple mai târziu în acest articol.
Sintaxă cu - Încheie cu bloc
Cu [Obiect] „Cod pentru a modifica sau utiliza [Obiect]” - „- Încheie cu
Deci, acum, când cunoaștem sintaxa blocului With - End With, să vedem utilizarea acestuia.
Exemplu de With - End With Block
Să presupunem că vreau să fac mai multe modificări la gama A2: A10. Vreau să selectez această gamă, să îi schimb culorile de umplere, stilul fontului etc. Cum aș face-o în general? Probabil așa:
Subtest () Range ("A1: A10"). Selectați Range ("A1: A10"). Interior.ColorIndex = 8 Range ("A1: A10"). Font.Name = "Algerian" Range ("A1: A10" ") .Font.ColorIndex = 12 Range (" A1: A10 "). Font.Underline = xlUnderlineStyleDouble Range (" A1: A10 "). Copy Range (" B1: B10 ") Range (" A1: A10 "). Clear Sfârșitul Sub
Cele de mai sus selectează gama A1: A10. Schimbă culoarea interioară a gamei la indexul de culoare 8. Schimbă fontul la algerian. Schimbă culoarea fontului în indexul de culoare 12. Subliniază textul în interval cu subliniere dublă. Apoi copiază intervalul A1: A10 în intervalul B1: B10 al aceleiași foi. În cele din urmă, șterge gama A1: A10.
Puteți observa că pentru a face fiecare operație cu gama A1: A10, trebuie să o scriem de fiecare dată. Apoi operatorul punct își accesează proprietățile. Acest lucru scade viteza de procesare și crește costurile de lucru pentru programatorii VBA. Alternativa pentru a face acest lucru este să utilizați un bloc With: Codul de mai jos face la fel ca codul de mai sus, dar mai rapid.
Subtest () Cu Range ("A1: A10"). Selectați .Interior.ColorIndex = 8 .Font.Name = "Algerian" .Font.ColorIndex = 12 .Font.Underline = xlUnderlineStyleDouble .Copy Range ("B1: B10" ) .Clear End With End Sub
Să vedem un alt exemplu.
Dacă ați creat un obiect din Outlook Mail, puteți utiliza acel obiect pentru a inițializa toate proprietățile sale și a utiliza metodele.
Set outMail = Outlook.Application.CreateItem (0) Cu outMail .To = "abcd.mail.com" 'Obligatoriu. Aici definiți adresa de e-mail de destinație … cc = "cc.mail.com" 'opțional. Cc mail id dacă doriți … BCC = "bcc.mail.com" 'opțional. Codul de e-mail Bcc dacă doriți … Subiect = subj 'ar trebui să aibă. Masajul pe corpul poștei … Corp = msg 'opțional. Masajul pe corpul e-mailului … Atașamente.Adăugați „C: /exceltip.com \ test.xlsx”. Trimiteți sfârșitul cu
Cum functioneazã?
Ei bine, când scriem Cu Range („A1: A10”), vba își blochează referința la intervalul de obiecte („A1: A10”). Deci, de fiecare dată când scriem operatorul punct (.), VBA listează toți membrii acestei clase de interval care vor afecta doar obiectul Range („A1: A10”) sau orice obiect pe care l-ați menționat. Blocarea de referință se eliberează atunci când VBA citește instrucțiunea End With.
Cuibărit cu blocuri
Putem avea un bloc într-un alt bloc. În exemplul de mai sus am folosit un obiect de gamă pentru a-l selecta. Apoi am folosit Range.Font de mai multe ori pentru a lucra cu fonturi. Acest lucru este din nou repetitiv. Codul de mai sus poate fi scris și așa:
Subtest () With Range ("A1: A10"). Selectați .Interior.ColorIndex = 8 'Folosind altul With într-un With With With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With .Copy Gama ("B1: B10"). Ștergeți clar cu sfârșitul Sub
Blocul interior cu bloc trebuie să se refere la un obiect care este un sub-membru al obiectului exterior. Ne putem referi la exterior cu obiect cu și interior cu Cu copil cu. Când începeți cu interiorul, obiectul trebuie scris cu operatorul de punct precedent.
Odată ce sunteți copil, nu puteți accesa proprietăți specifice părinților. De exemplu, codul de mai jos este greșit.
Subtest () With Range ("A1: A10"). Selectați .Interior.ColorIndex = 8 'Folosind altul With într-un With With With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble' Codul de mai jos va genera erori deoarece metodele de copiere și ștergere nu aparțin clasei de fonturi … Gama de copiere („B1: B10”). Ștergeți sfârșitul cu sfârșitul cu sfârșitul Sub
Complet calificat cu bloc
Dacă vreau să fac unele modificări cu fontul intervalului A1: A10 al foii2 în codul care conține registrul de lucru, atunci ar trebui să folosim un bloc complet calificat.
Cele două coduri de mai jos vor funcționa la fel.
Subtest2 () Cu 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 With End Sub
'Complet calificat cu bloc Sub test3 () Cu ThisWorkbook.Sheets ("Shee2"). Gama ("A1: A10"). Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With End Sub
Puteți vedea diferența. Deci, când știți că veți folosi mai multe metode și proprietăți dintr-un obiect, dați un nume complet calificat la început. Dacă veți folosi obiecte copil, utilizați abordarea anterioară. Programatorii cu experiență folosesc ambele metode în situații adecvate.
Deci da, băieți, așa folosim blocarea With - End With în VBA. Sper că am fost suficient de explicativ și acest articol v-a ajutat să înțelegeți conceptul de With - End With. Dacă aveți îndoieli cu privire la acest articol sau la orice alt subiect, întrebați-mă în secțiunea de comentarii de mai jos. Voi fi bucuros să te ajut.
Variabile VBA în Excel| VBA înseamnă Visual Basic pentru aplicații. Este un limbaj de programare de la Microsoft. Este utilizat cu aplicații Microsoft Office, cum ar fi MSExcel, MS-Word și MS-Access, în timp ce variabilele VBA sunt cuvinte cheie specifice.
Domeniul de aplicare variabil VBA Excel| În toate limbajele de programare, avem specificatori de acces variabil care definesc de unde poate fi accesată o variabilă definită. Excel VBA nu este o excepție. Și VBA are specificatori de domeniu.
Argumente ByRef și ByVal | Când un argument este transmis ca argument ByRef către un sub sau funcție diferit, este trimisă referința variabilei reale. Orice modificare adusă copiei variabilei se va reflecta în argumentul original.
Ștergeți foile fără solicitări de confirmare folosind VBA în Microsoft Excel | Deoarece ștergeți foi folosind VBA, știți ce faceți. Ați dori să spuneți Excel să nu afișeze acest avertisment și să șteargă afurisita de foaie.
Adăugați și salvați un registru de lucru nou folosind VBA în Microsoft Excel 2016| În acest cod, am creat mai întâi o referință la un obiect de registru de lucru. Și apoi l-am inițializat cu un nou obiect de registru de lucru. Avantajul acestei abordări este că puteți face operațiuni cu ușurință pe acest nou registru de lucru. Cum ar fi salvarea, închiderea, ștergerea etc.
Afișați un mesaj pe bara de stare Excel VBA| Bara de stare în excel poate fi utilizată ca monitor de cod. Când codul dvs. VBA este lung și faceți mai multe sarcini folosind VBA, dezactivați adesea actualizarea ecranului, astfel încât să nu vedeți ecranul care pâlpâie.
Dezactivați mesajele de avertizare folosind VBA în Microsoft Excel 2016| Acest cod nu numai că dezactivează alertele VBA, ci și crește eficiența în timp a codului. Să vedem cum.
Articole populare:
50 de comenzi rapide Excel pentru a vă crește productivitatea | Deveniți mai rapid la sarcina dvs. Aceste 50 de comenzi rapide vă vor face să lucrați și mai rapid pe Excel.
Funcția VLOOKUP în Excel | Aceasta este una dintre cele mai utilizate și populare funcții ale Excel, care este utilizată pentru a căuta valoarea din diferite intervale și foi.
COUNTIF în Excel 2016 | Numărați valorile cu condiții folosind această funcție uimitoare. Nu trebuie să vă filtrați datele pentru a număra anumite valori. Funcția Countif este esențială pentru a vă pregăti tabloul de bord.
Cum se utilizează funcția SUMIF în Excel | Aceasta este o altă funcție esențială a tabloului de bord. Acest lucru vă ajută să rezumați valori în condiții specifice.