Hur man använder med ... Slutar med block i VBA Excel?

Innehållsförteckning:

Anonim

With - End With -blocket i VBA används för att berätta för VBA att vi ska använda det givna objektet och det bör överväga egenskaperna för det givna objektet först när vi använder punktoperatör. Vi kommer att se exempel senare i denna artikel.

Syntax med - slut med block

Med [Objekt] 'Kod för att ändra eller använda [Objekt]'- '- Avsluta med 

Så nu när vi känner till syntaxen för With - End With block, låt oss se dess användning.

Exempel på With - End With Block

Låt oss säga att jag vill göra flera ändringar i intervall A2: A10. Jag vill välja det här intervallet, ändra dess fyllningsfärger, typsnitt etc. Hur skulle jag göra det generellt? Förmodligen så här:

Deltest () Område ("A1: A10"). Välj intervall ("A1: A10"). Interiör.ColorIndex = 8 intervall ("A1: A10"). Font.Name = "Algeriskt" intervall ("A1: A10 ") .Font.ColorIndex = 12 Intervall (" A1: A10 "). Font.Underline = xlUnderlineStyleDouble Range (" A1: A10 "). Kopiera intervall (" B1: B10 ") Område (" A1: A10 "). Rensa Avsluta Sub 

Ovanstående väljer område A1: A10. Ändrar interiörfärgen i intervallet till färgindex 8. Ändrar teckensnittet till algeriska. Ändrar färg på teckensnitt till färgindex 12. Understruker texten i intervall med dubbla understrykningar. Sedan kopierar det intervallet A1: A10 till område B1: B10 på samma blad. Äntligen rensas intervallet A1: A10.

Du kan märka att för att utföra varje operation med intervall A1: A10 måste vi skriva det varje gång. Därefter får punktoperatören åtkomst till dess egenskaper. Detta minskar bearbetningshastigheten och ökar arbetskostnaderna för VBA -programmerare. Alternativet att göra detta är att använda ett With -block: Koden nedan gör samma sak som ovanstående kod men snabbare.

Deltest () Med intervall ("A1: A10") .Välj .Interior.ColorIndex = 8 .Font.Name = "Algerian" .Font.ColorIndex = 12 .Font.Underline = xlUnderlineStyleDouble .Copy Range ("B1: B10" Rensa slutet med slutet sub 


Låt oss se ett annat exempel.

Om du har skapat ett objekt i Outlook Mail kan du använda det för att initiera alla dess egenskaper och använda metoder.

Ange outMail = Outlook.Application.CreateItem (0) With outMail .To = "abcd.mail.com" 'Obligatoriskt. Här definierar du destinations -e -post -id … cc = "cc.mail.com" 'valfritt. Cc mail id om du vill … BCC = "bcc.mail.com" 'valfritt. Bcc -post -ID om du vill … Ämne = subj 'borde ha. Massagen på postkroppen … Kropp = meddelande som tillval. Massagen på postkroppen … Attachments.Add "C: /exceltip.com \ test.xlsx". Skicka slut med 

Hur fungerar det?

Tja, när vi skriver Med intervall ("A1: A10"), låser vba sin referens till objektområdet ("A1: A10"). Så när vi skriver punkt (.) -Operatör listar VBA alla medlemmar i denna intervallklass som endast påverkar objektintervallet ("A1: A10") eller något objekt du nämnde. Referenslåset släpps när VBA läser Avsluta med -uttalandet.

Kapslad med block

Vi kan ha ett block inom ett annat block. I exemplet ovan använde vi ett intervallobjekt för att välja det. Sedan använde vi Range.Font flera gånger för att arbeta med teckensnitt. Detta är återigen repetitivt. Ovanstående kod kan också skrivas så här:

Deltest () Med intervall ("A1: A10") .Välj .Interior.ColorIndex = 8 'Använda en annan med inom en With Block With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With .Copy Område ("B1: B10"). Rensa slutet med slutet sub 

Det inre med blocket bör referera till ett objekt som är en del av det yttre objektet. Vi kan hänvisa till det yttre med som objekt med och inre med som barn med. När du börjar inre med bör objektet skrivas med föregående punktoperator.

När du är barn kan du inte komma åt förälderspecifika egenskaper. Till exempel är koden nedan fel.

Deltest () Med intervall ("A1: A10") .Välj .Interior.ColorIndex = 8 'Använda en annan med inom ett With Block With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble' Nedanstående kod kommer att generera fel eftersom kopiering och tydliga metoder inte tillhör teckensnittsklassen … Kopieringsintervall ("B1: B10"). Rensa slut med slut med slut sub 

Fullt kvalificerad med block

Om jag vill göra några ändringar med typsnittet i intervall A1: A10 i blad2 i koden som innehåller arbetsboken, bör vi använda ett fullt kvalificerat block.

Nedanstående två koder fungerar likadant.

Deltest2 () 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 
'Fullt kvalificerad med block Sub test3 () Med ThisWorkbook.Sheets ("Shee2"). Område ("A1: A10"). Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With End Sub 

Du kan se skillnaden. Så när du vet att du ska använda flera metoder och egenskaper från ett objekt, ge ett fullständigt namn i början. Om du kommer att använda underordnade objekt använder du den tidigare metoden. Erfarna programmerare använder båda metoderna vid lämpliga situationer.

Så ja killar, så här använder vi With - End With block i VBA. Jag hoppas att jag var tillräckligt förklarande och att den här artikeln hjälpte dig att förstå begreppet With - End With. Om du har några tvivel angående den här artikeln eller något annat ämne, fråga mig i kommentarfältet nedan. Jag hjälper dig gärna.

VBA -variabler i Excel| VBA står för Visual Basic for Applications. Det är ett programmeringsspråk från Microsoft. Den används med Microsoft Office-applikationer som MSExcel, MS-Word och MS-Access medan VBA-variabler är specifika nyckelord.

Excel VBA variabelt omfång| På alla programmeringsspråk har vi variabelåtkomstspecificerare som definierar varifrån en definierad variabel kan nås. Excel VBA är inget undantag. VBA har också omfångsspecifikatorer.

ByRef och ByVal -argument | När ett argument skickas som ett ByRef -argument till en annan sub eller funktion skickas referensen till den faktiska variabeln. Alla ändringar som görs i kopian av variabeln återspeglas i det ursprungliga argumentet.

Ta bort blad utan bekräftelsefrågor med VBA i Microsoft Excel | Eftersom du raderar blad med VBA vet du vad du gör. Du vill berätta för Excel att inte visa den här varningen och ta bort det jävla arket.

Lägg till och spara ny arbetsbok med VBA i Microsoft Excel 2016| I den här koden skapade vi först en referens till ett arbetsbokobjekt. Och sedan initierade vi det med ett nytt arbetsbokobjekt. Fördelen med detta tillvägagångssätt är att du enkelt kan utföra den nya arbetsboken. Som att spara, stänga, radera osv

Visa ett meddelande i Excel VBA -statusfältet| Statusfältet i excel kan användas som kodmonitor. När din VBA -kod är lång och du utför flera uppgifter med VBA, inaktiverar du ofta skärmuppdateringen så att du inte ser att skärmen flimrar.

Stäng av varningsmeddelanden med VBA i Microsoft Excel 2016| Denna kod inaktiverar inte bara VBA -varningar utan ökar också kodens tidseffektivitet. Låt oss se hur.

Populära artiklar:

50 Excel -genvägar för att öka din produktivitet | Bli snabbare på din uppgift. Dessa 50 genvägar får dig att arbeta ännu snabbare med Excel.

VLOOKUP -funktionen i Excel | Detta är en av de mest använda och populära Excel -funktionerna som används för att leta upp värde från olika intervall och ark.

COUNTIF i Excel 2016 | Räkna värden med förhållanden med denna fantastiska funktion. Du behöver inte filtrera dina data för att räkna specifika värden. Countif -funktionen är avgörande för att förbereda din instrumentpanel.

Hur man använder SUMIF -funktionen i Excel | Detta är en annan viktig instrumentpanel. Detta hjälper dig att summera värden på specifika förhållanden.