image

Der With – End With-Block in VBA wird verwendet, um VBA mitzuteilen, dass wir das angegebene Objekt verwenden werden, und er sollte die Eigenschaften des angegebenen Objekts erst berücksichtigen, wenn wir den Punktoperator verwenden. Wir werden später in diesem Artikel Beispiele sehen.

Syntax With – End With Block

With [Object]

'Code to alter or use [Object]

'--

'--

End With

Nachdem wir nun die Syntax des With-End With-Blocks kennen, wollen wir seine Verwendung sehen.

Beispiel für With – End With Block Nehmen wir an, ich möchte mehrere Änderungen am Bereich A2: A10 vornehmen. Ich möchte diesen Bereich auswählen, die Füllfarben, den Schriftstil usw. ändern. Wie würde ich das allgemein tun? Wahrscheinlich so:

Sub test()

Range("A1:A10").Select

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

End Sub

Oben wird der Bereich A1: A10 ausgewählt. Ändert die Innenfarbe des Bereichs in Farbindex 8. Ändert die Schriftart in Algerisch. Ändert die Farbe der Schriftart in den Farbindex 12. Unterstreicht den Text im Bereich mit doppelten Unterstreichungen.

Dann kopiert es den Bereich A1: A10 in den Bereich B1: B10 desselben Blattes. Endlich wird der Bereich A1: A10 gelöscht.

Sie können feststellen, dass wir jede Operation mit dem Bereich A1: A10 jedes Mal schreiben müssen. Dann greift der Punktoperator auf seine Eigenschaften zu. Dies verringert die Verarbeitungsgeschwindigkeit und erhöht den Arbeitsaufwand für VBA-Programmierer. Die Alternative dazu ist die Verwendung eines With-Blocks: Der folgende Code entspricht dem obigen Code, ist jedoch schneller.

Sub test()

With Range("A1:A10")

.Select

.Interior.ColorIndex = 8

.Font.Name = "Algerian"

.Font.ColorIndex = 12

.Font.Underline = xlUnderlineStyleDouble

.Copy Range("B1:B10")

.Clear

End With

End Sub

image

Sehen wir uns ein anderes Beispiel an.

Wenn Sie ein Objekt von Outlook Mail erstellt haben, können Sie dieses Objekt verwenden, um alle Eigenschaften zu initialisieren und Methoden zu verwenden.

Set outMail = Outlook.Application.CreateItem(0)

With outMail

.To = "abcd.mail.com" 'Mandatory. Here you define the destination mail id.

.cc = "cc.mail.com" 'optional. Cc mail id if you want.

.BCC = "bcc.mail.com" 'optional. Bcc mail id if you want.

.Subject = subj 'should have. The massage on mail body.

.Body = msg 'optional. The massage on mail body.

.Attachments.Add "C:/exceltip.com\test.xlsx"

.Send

End With

Wie funktioniert es?

Wenn wir With Range („A1: A10“) schreiben, sperrt vba seinen Verweis auf den Objektbereich („A1: A10“). Wenn wir also einen Punkt (.) -Operator schreiben, listet VBA alle Mitglieder dieser Bereichsklasse auf, die nur den Objektbereich („A1: A10“) oder ein von Ihnen erwähntes Objekt betreffen. Die Referenzsperre wird freigegeben, wenn VBA die End With-Anweisung liest.

Mit Blöcken verschachtelt Wir können einen Block in einem anderen Block haben. Im obigen Beispiel haben wir ein Bereichsobjekt verwendet, um es auszuwählen. Dann haben wir Range.Font mehrmals verwendet, um mit Schriftarten zu arbeiten. Dies wiederholt sich erneut. Der obige Code kann auch so geschrieben werden:

Sub test()

With Range("A1:A10")

.Select

.Interior.ColorIndex = 8

'Using another With within a With Block

With .Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

End With

.Copy Range("B1:B10")

.Clear

End With

End Sub

Der innere with-Block sollte sich auf ein Objekt beziehen, das ein Unterelement des äußeren Objekts ist. Wir können das Äußere mit als Objekt mit und das Innere mit als Kind mit bezeichnen. Wenn Sie mit beginnen, sollte das Objekt mit dem vorhergehenden Punktoperator geschrieben werden.

Sobald Sie ein Kind sind, können Sie nicht mehr auf übergeordnete Eigenschaften zugreifen. Zum Beispiel ist der folgende Code falsch.

Sub test()

With Range("A1:A10")

.Select

.Interior.ColorIndex = 8

'Using another With within a With Block

With .Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

'The below code will generate error as copy and clear methods does not belong to font class.

.Copy Range("B1:B10")

.Clear

End With

End With

End Sub

Mit Block vollständig qualifiziert Wenn ich einige Änderungen an der Schriftart des Bereichs A1: A10 von Blatt 2 im Code vornehmen möchte, der die Arbeitsmappe enthält, sollten wir einen vollständig qualifizierten Block verwenden.

Die folgenden zwei Codes funktionieren gleich.

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
'Fully qualified with block

Sub test3()

With ThisWorkbook.Sheets("Shee2").Range("A1:A10").Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

End With

End Sub

Sie können den Unterschied sehen. Wenn Sie also wissen, dass Sie mehrere Methoden und Eigenschaften eines Objekts verwenden werden, geben Sie am Anfang einen vollständig qualifizierten Namen ein. Wenn Sie untergeordnete Objekte verwenden, verwenden Sie den vorherigen Ansatz. Erfahrene Programmierer wenden beide Methoden in geeigneten Situationen an.

Also ja Leute, so verwenden wir With – End With Block in VBA. Ich hoffe, ich war erklärend genug und dieser Artikel hat Ihnen geholfen, das Konzept von With – End With zu verstehen. Wenn Sie Zweifel an diesem Artikel oder einem anderen Thema haben, fragen Sie mich im Kommentarbereich unten. Ich helfe Ihnen gerne weiter.

Verwandte Artikel:

link: / allgemeine-themen-in-vba-vba-variablen-in-excel [VBA-Variablen in Excel] | * VBA steht für Visual Basic für Applikationen.

Es ist eine Programmiersprache von Microsoft. Es wird mit Microsoft Office-Anwendungen wie MSExcel, MS-Word und MS-Access verwendet, während VBA-Variablen bestimmte Schlüsselwörter sind.

link: / allgemeine-themen-in-vba-excel-vba-variablenbereich [Excel VBA-Variablenbereich] | * In allen Programmiersprachen haben wir Variablenzugriffsspezifizierer, die definieren, von wo aus auf eine definierte Variable zugegriffen werden kann. Excel VBA ist keine Ausnahme. Auch VBA verfügt über Bereichsspezifizierer.

link: / Zellenbereiche-Zeilen-und-Spalten-in-vba-was-ist-der-Unterschied-zwischen-byref-und-byval-Argumenten-vba-Interview-Frage [ByRef- und ByVal-Argumente] | Wenn ein Argument als ByRef-Argument an ein anderes Sub oder eine andere Funktion übergeben wird, wird die Referenz der tatsächlichen Variablen gesendet. Alle Änderungen, die an der Kopie der Variablen vorgenommen werden, werden im ursprünglichen Argument wiedergegeben.

`link: / files-arbeitsmappe-und-arbeitsblätter-in-vba-lösche-blätter-ohne-bestätigungs-aufforderungen-mit-vba-in-microsoft-excel Da Sie Blätter mit VBA löschen, wissen Sie, was Sie tun.

Sie möchten Excel anweisen, diese Warnung nicht anzuzeigen und das verdammte Blatt zu löschen.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Neue Arbeitsmappe mit VBA in Microsoft Excel 2016 hinzufügen und speichern] | In diesem Code haben wir zuerst einen Verweis auf ein Arbeitsmappenobjekt erstellt. Und dann haben wir es mit einem neuen Arbeitsmappenobjekt initialisiert. Der Vorteil dieses Ansatzes besteht darin, dass Sie Operationen an dieser neuen Arbeitsmappe problemlos ausführen können. Wie Speichern, Schließen, Löschen usw. `link: / menüs-Symbolleisten-Statusleiste-in-vba-Anzeige-einer-Nachricht-in-der-Statusleiste-mit-vba-in-Microsoft-Excel [Anzeige einer Nachricht ein Die Excel VBA-Statusleiste *] `| Die Statusleiste in Excel kann als Codemonitor verwendet werden. Wenn Ihr VBA-Code lang ist und Sie mehrere Aufgaben mit VBA ausführen, deaktivieren Sie häufig die Bildschirmaktualisierung, damit dieser Bildschirm nicht flackert.

link: / allgemeine-themen-in-vba-ausschalten-warnen-nachrichten-mit-vba-in-microsoft-excel [Warnmeldungen mit VBA in Microsoft Excel 2016 ausschalten] | * Dieser Code deaktiviert nicht nur VBA Warnungen, erhöht aber auch die Zeiteffizienz des Codes. Mal sehen, wie.

Beliebte Artikel:

link: / Tastatur-Formel-Verknüpfungen-50-Excel-Verknüpfungen-zur-Steigerung-Ihrer-Produktivität [50 Excel-Verknüpfungen zur Steigerung Ihrer Produktivität] | Werden Sie schneller bei Ihrer Aufgabe. Mit diesen 50 Verknüpfungen können Sie noch schneller in Excel arbeiten.

link: / formeln-und-funktionen-einführung-der-vlookup-funktion [Die VLOOKUP-Funktion in Excel] | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, mit der Werte aus verschiedenen Bereichen und Tabellen gesucht werden. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] | Zählen Sie Werte mit Bedingungen, die diese erstaunliche Funktion verwenden. Sie müssen Ihre Daten nicht filtern, um bestimmte Werte zu zählen.

Die Countif-Funktion ist wichtig, um Ihr Dashboard vorzubereiten.

link: / excel-formel-und-funktion-excel-sumif-funktion [Verwendung der SUMIF-Funktion in Excel] | Dies ist eine weitere wichtige Funktion des Dashboards. Auf diese Weise können Sie Werte unter bestimmten Bedingungen zusammenfassen.