With - End With -blokken i VBA bruges til at fortælle VBA, at vi kommer til at bruge det givne objekt, og det bør kun overveje egenskaberne for det givne objekt, når vi bruger punktoperator. Vi vil se eksempler senere i denne artikel.
Syntaks med - slut med blok
Med [Objekt] 'Kode til ændring eller brug af [Objekt]'- '- Slut med
Så nu hvor vi kender syntaksen for With - End With block, lad os se dens brug.
Eksempel på With - End With Block
Lad os sige, at jeg vil foretage flere ændringer i område A2: A10. Jeg vil vælge dette område, ændre dets fyldfarver, skrifttype osv. Hvordan ville jeg gøre det generelt? Sandsynligvis sådan her:
Deltest () Område ("A1: A10"). Vælg område ("A1: A10"). Interiør.ColorIndex = 8 område ("A1: A10"). Font.Name = "Algerisk" område ("A1: A10 ") .Font.ColorIndex = 12 Range (" A1: A10 "). Font.Underline = xlUnderlineStyleDouble Range (" A1: A10 "). Kopier område (" B1: B10 ") Range (" A1: A10 "). Fjern Afslut Sub
Ovenstående vælger område A1: A10. Ændrer interiørfarven i området til farveindeks 8. Ændrer skrifttypen til algerisk. Ændrer skrifttypens farve til farveindeks 12. understreger teksten i området med dobbelte understregninger. Derefter kopierer det området A1: A10 til område B1: B10 på det samme ark. Endelig rydder området A1: A10.
Du kan bemærke, at for at udføre hver operation med område A1: A10, skal vi skrive det hver gang. Derefter får punktoperatøren adgang til dens egenskaber. Dette reducerer behandlingshastigheden og øger arbejdsomkostningerne til VBA -programmører. Alternativet til at gøre dette er at bruge en With -blok: Nedenstående kode gør det samme som ovenstående kode, men hurtigere.
Deltest () Med område ("A1: A10") .Vælg .Interior.ColorIndex = 8 .Font.Name = "Algerian" .Font.ColorIndex = 12 .Font.Underline = xlUnderlineStyleDouble .Copy Range ("B1: B10" ) .Ryd ende med slut sub
Lad os se et andet eksempel.
Hvis du har oprettet et objekt i Outlook Mail, kan du bruge objektet til at initialisere alle dets egenskaber og bruge metoder.
Indstil outMail = Outlook.Application.CreateItem (0) With outMail .To = "abcd.mail.com" 'Obligatorisk. Her definerer du destinations -mail -id… cc = "cc.mail.com" 'valgfri. Cc mail id hvis du vil … BCC = "bcc.mail.com" 'valgfri. Bcc mail id hvis du vil … Subject = subj 'should have. Massagen på postlegemet … Krop = besked 'valgfrit. Massagen på maillegeme … Vedhæftede filer. Tilføj "C: /exceltip.com \ test.xlsx". Send slut med
Hvordan virker det?
Når vi skriver Med område ("A1: A10"), låser vba sin reference til objektområdet ("A1: A10"). Så når vi skriver dot (.) -Operatør, viser VBA alle medlemmerne af denne områdeklasse, som kun påvirker objektområdet ("A1: A10") eller ethvert objekt, du nævnte. Referencelåsen frigives, når VBA læser Slut med -sætningen.
Indlejret med blokke
Vi kan have en blok inden for en anden blok. I ovenstående eksempel brugte vi et områdeobjekt til at vælge det. Derefter brugte vi Range.Font flere gange til at arbejde med skrifttyper. Dette er igen gentaget. Ovenstående kode kan også skrives sådan:
Deltest () Med område ("A1: A10") .Vælg .Interior.ColorIndex = 8 'Brug af en anden med inden for en With Block With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With .Copy Område ("B1: B10"). Tydelig ende med ende sub
Det indre med blok skal referere til et objekt, der er et underelement på det ydre objekt. Vi kan referere til det ydre med som objekt med og indre med som barn med. Når du starter internt med, skal objektet skrives med den foregående punktoperator.
Når du er barn, har du ikke adgang til forælderspecifikke ejendomme. For eksempel er nedenstående kode forkert.
Deltest () Med område ("A1: A10") .Vælg .Interior.ColorIndex = 8 'Brug af en anden med inden for en With Block With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble' Nedenstående kode vil generere fejl, da kopi og klare metoder ikke tilhører skrifttypeklasse … Kopieringsområde ("B1: B10"). Ryd afslutning med ende med slutsub
Fuldt kvalificeret med blok
Hvis jeg vil foretage nogle ændringer med skrifttypen i område A1: A10 på ark2 i koden, der indeholder projektmappen, skal vi bruge en fuldt kvalificeret blok.
De to nedenstående koder fungerer ens.
Subtest2 () Med 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
'Fuldt kvalificeret med blok Sub test3 () Med ThisWorkbook.Sheets ("Shee2"). Område ("A1: A10"). Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With End Sub
Du kan se forskellen. Så når du ved, at du vil bruge flere metoder og egenskaber fra et objekt, skal du give et fuldt kvalificeret navn i begyndelsen. Hvis du vil bruge underordnede objekter, skal du bruge den tidligere tilgang. Erfarne programmører bruger begge metoder i passende situationer.
Så ja fyre, det er sådan vi bruger With - End With block i VBA. Jeg håber, jeg var forklarende nok, og denne artikel hjalp dig med at forstå begrebet With - End With. Hvis du er i tvivl om denne artikel eller et andet emne, så spørg mig i kommentarfeltet herunder. Jeg hjælper dig gerne.
VBA -variabler i Excel| VBA står for Visual Basic for Applications. Det er et programmeringssprog fra Microsoft. Det bruges med Microsoft Office-applikationer som MSExcel, MS-Word og MS-Access, hvorimod VBA-variabler er specifikke søgeord.
Excel VBA variabelt omfang| På alle programmeringssprog har vi variabeladgangsspecifikatorer, der definerer, hvorfra der kan tilgås en defineret variabel. Excel VBA er ingen undtagelse. VBA har også omfangsspecifikationer.
ByRef og ByVal argumenter | Når et argument sendes som et ByRef -argument til en anden sub eller funktion, sendes referencen til den faktiske variabel. Eventuelle ændringer, der foretages i kopien af variablen, vil afspejle sig i det originale argument.
Slet ark uden bekræftelsesmeddelelser ved hjælp af VBA i Microsoft Excel | Da du sletter ark ved hjælp af VBA, ved du, hvad du laver. Du vil gerne bede Excel om ikke at vise denne advarsel og slette det forbandede ark.
Tilføj og gem ny arbejdsmappe ved hjælp af VBA i Microsoft Excel 2016| I denne kode oprettede vi først en reference til et projektmappeobjekt. Og så initialiserede vi det med et nyt projektmappeobjekt. Fordelen ved denne tilgang er, at du nemt kan udføre operationer på denne nye projektmappe. Som at gemme, lukke, slette osv
Vis en meddelelse på Excel VBA -statuslinjen| Statuslinjen i excel kan bruges som kodeovervågning. Når din VBA -kode er lang, og du udfører flere opgaver ved hjælp af VBA, deaktiverer du ofte skærmopdateringen, så du ikke kan se, at skærmen flimrer.
Slå advarselsmeddelelser fra ved hjælp af VBA i Microsoft Excel 2016| Denne kode deaktiverer ikke kun VBA -advarsler, men øger også kodeens tidseffektivitet. Lad os se hvordan.
Populære artikler:
50 Excel -genveje til at øge din produktivitet | Få hurtigere til din opgave. Disse 50 genveje får dig til at arbejde endnu hurtigere i Excel.
VLOOKUP -funktionen i Excel | Dette er en af de mest anvendte og populære funktioner i excel, der bruges til at slå værdi op fra forskellige områder og ark.
COUNTIF i Excel 2016 | Tæl værdier med betingelser ved hjælp af denne fantastiske funktion. Du behøver ikke at filtrere dine data for at tælle bestemte værdier. Countif -funktion er afgørende for at forberede dit dashboard.
Sådan bruges SUMIF -funktionen i Excel | Dette er endnu en vigtig instrumentbrætfunktion. Dette hjælper dig med at opsummere værdier på bestemte betingelser.