With - End With -blokken i VBA brukes til å fortelle VBA at vi skal bruke det gitte objektet, og det bør bare vurdere egenskapene til det gitte objektet når vi bruker dot operator. Vi vil se eksempler senere i denne artikkelen.
Syntaks med - slutt med blokk
Med [Object] 'Code to change or use [Object]'- '- End With
Så nå som vi kjenner syntaksen til With - End With block, la oss se bruken av den.
Eksempel på With - End With Block
La oss si at jeg vil gjøre flere endringer i område A2: A10. Jeg vil velge dette området, endre fyllfarger, skriftstil osv. Hvordan gjør jeg det generelt? Sannsynligvis slik:
Deltest () Område ("A1: A10"). Velg 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 Slutt Sub
Ovennevnte velger område A1: A10. Endrer interiørfargen i området til fargeindeks 8. Endrer skrifttypen til algerisk. Endrer farge på skrift til fargeindeks 12. understreker teksten i rekkevidde med doble understreker. Deretter kopierer det området A1: A10 til område B1: B10 i det samme arket. Endelig fjerner det området A1: A10.
Du kan legge merke til at for å utføre hver operasjon med område A1: A10, må vi skrive det hver gang. Deretter får prikkoperatøren tilgang til egenskapene. Dette reduserer behandlingshastigheten og øker arbeidet overhead til VBA -programmerere. Alternativet for å gjøre dette er å bruke en With -blokk: Koden nedenfor gjør det samme som koden ovenfor, men raskere.
Deltest () Med område ("A1: A10") .Velg .Interior.ColorIndex = 8 .Font.Name = "Algerian" .Font.ColorIndex = 12 .Font.Underline = xlUnderlineStyleDouble .Copy Range ("B1: B10" ) Slett slutt med slutten Sub
La oss se et annet eksempel.
Hvis du har opprettet et objekt i Outlook Mail, kan du bruke objektet til å initialisere alle egenskapene og bruke metoder.
Angi outMail = Outlook.Application.CreateItem (0) With outMail .To = "abcd.mail.com" 'Obligatorisk. Her definerer du destinasjonspost -id… cc = "cc.mail.com" 'valgfritt. Kopi -ID for e -post hvis du vil … BCC = "bcc.mail.com" 'valgfritt. Bcc mail -ID hvis du vil … Subject = subj 'should have. Massasjen på postkroppen … Kropp = melding valgfri. Massasjen på postkroppen … Vedlegg.Legg til "C: /exceltip.com \ test.xlsx". Send slutt med
Hvordan virker det?
Vel, når vi skriver Med område ("A1: A10"), låser vba referansen til objektområdet ("A1: A10"). Så når vi skriver dot (.) -Operatør, viser VBA alle medlemmene i denne områdeklassen som bare vil påvirke objektområdet ("A1: A10") eller ethvert objekt du nevnte. Referanselåsen frigjøres når VBA leser End With -setningen.
Hekket med blokker
Vi kan ha en blokk i en annen blokk. I eksemplet ovenfor brukte vi et områdeobjekt for å velge det. Deretter brukte vi Range.Font flere ganger for å jobbe med fonter. Dette er igjen repeterende. Koden ovenfor kan også skrives slik:
Deltest () Med rekkevidde ("A1: A10") .Velg .Interior.ColorIndex = 8 'Bruke en annen With in a 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 blokk skal referere til et objekt som er et delelement av det ytre objektet. Vi kan referere til det ytre med som objekt med og indre Med som barn med. Når du begynner internt med, skal objektet skrives med den foregående punktoperatoren.
Når du er barn, har du ikke tilgang til foreldrespesifikke eiendommer. For eksempel er koden nedenfor feil.
Deltest () Med område ("A1: A10") .Velg .Interior.ColorIndex = 8 'Bruke en annen med innenfor en With Block With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble' Koden nedenfor vil generere feil som kopi og klare metoder tilhører ikke skriftklassen … Kopieringsområde ("B1: B10"). Slett slutt med slutt med slutt sub
Fullt kvalifisert med blokk
Hvis jeg vil gjøre noen endringer med skrifttypen i område A1: A10 på ark2 i koden som inneholder arbeidsboken, bør vi bruke en fullt kvalifisert blokk.
De to kodene nedenfor fungerer på samme måte.
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 With End Under
'Fullt kvalifisert med blokk Sub test3 () Med ThisWorkbook.Sheets ("Shee2"). Område ("A1: A10"). Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With End Sub
Du kan se forskjellen. Så når du vet at du skal bruke flere metoder og egenskaper fra et objekt, må du gi et fullt kvalifisert navn i begynnelsen. Hvis du skal bruke barneobjekter, kan du bruke den forrige tilnærmingen. Erfarne programmerere bruker begge metodene i passende situasjoner.
Så ja gutta, dette er hvordan vi bruker With - End With block i VBA. Jeg håper jeg var forklarende nok, og denne artikkelen hjalp deg med å forstå konseptet With - End With. Hvis du er i tvil om denne artikkelen eller et annet emne, kan du spørre meg i kommentarfeltet nedenfor. Jeg hjelper deg gjerne.
VBA -variabler i Excel| VBA står for Visual Basic for Applications. Det er et programmeringsspråk fra Microsoft. Den brukes med Microsoft Office-applikasjoner som MSExcel, MS-Word og MS-Access, mens VBA-variabler er spesifikke søkeord.
Excel VBA variabelt omfang| På alle programmeringsspråk har vi variabel tilgangsspesifikatorer som definerer hvorfra en definert variabel kan nås. Excel VBA er ingen unntak. VBA har også omfangsspesifikatorer.
ByRef og ByVal -argumenter | Når et argument sendes som et ByRef -argument til en annen sub eller funksjon, sendes referansen til den faktiske variabelen. Eventuelle endringer som gjøres i kopien av variabelen, gjenspeiles i det opprinnelige argumentet.
Slett ark uten bekreftelsesforespørsler ved hjelp av VBA i Microsoft Excel | Siden du sletter ark med VBA, vet du hva du gjør. Du vil fortelle Excel om ikke å vise denne advarselen og slette det jævla arket.
Legg til og lagre ny arbeidsbok ved hjelp av VBA i Microsoft Excel 2016| I denne koden opprettet vi først en referanse til et arbeidsbokobjekt. Og så initialiserte vi det med et nytt arbeidsbokobjekt. Fordelen med denne tilnærmingen er at du enkelt kan utføre operasjoner på denne nye arbeidsboken. Som å lagre, lukke, slette osv
Vis en melding på Excel VBA -statuslinjen| Statuslinjen i excel kan brukes som en kodemonitor. Når VBA -koden din er lang og du gjør flere oppgaver med VBA, deaktiverer du ofte skjermoppdateringen slik at du ikke ser at skjermen flimrer.
Slå av advarselsmeldinger ved hjelp av VBA i Microsoft Excel 2016| Denne koden deaktiverer ikke bare VBA -varsler, men øker også tidens effektivitet av koden. La oss se hvordan.
Populære artikler:
50 Excel -snarveier for å øke produktiviteten | Bli raskere på oppgaven din. Disse 50 snarveiene får deg til å jobbe enda raskere med Excel.
VLOOKUP -funksjonen i Excel | Dette er en av de mest brukte og populære funksjonene til excel som brukes til å slå opp verdi fra forskjellige områder og ark.
COUNTIF i Excel 2016 | Tell verdier med betingelser ved hjelp av denne fantastiske funksjonen. Du trenger ikke å filtrere dataene dine for å telle spesifikke verdier. Countif -funksjonen er avgjørende for å forberede dashbordet.
Slik bruker du SUMIF -funksjonen i Excel | Dette er en annen viktig funksjon på dashbordet. Dette hjelper deg med å oppsummere verdier på spesifikke forhold.