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 nur dann berücksichtigen, wenn wir den Punktoperator verwenden. Wir werden später in diesem Artikel Beispiele sehen.
Syntax mit - Ende mit Block
With [Object] 'Code zum Ändern oder Verwenden von [Object] '-- '-- End With
Nachdem wir nun die Syntax des Blocks With - End With kennen, sehen wir uns seine Verwendung an.
Beispiel für Mit - Ende mit Block
Nehmen wir an, ich möchte mehrere Änderungen am Bereich A2:A10 vornehmen. Ich möchte diesen Bereich auswählen, seine Füllfarben, seinen Schriftstil usw. ändern. Wie würde ich es allgemein machen? 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 Schriftfarbe in Farbindex 12. Unterstreicht den Text im Bereich mit doppelten Unterstreichungen. Dann kopiert es den Bereich A1:A10 in den Bereich B1:B10 desselben Blatts. Endlich löscht es den Bereich A1:A10.
Sie können feststellen, dass wir es jedes Mal schreiben müssen, um jede Operation mit dem Bereich A1:A10 auszuführen. 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 macht dasselbe wie der obige Code, aber schneller.
Sub test() With Range("A1:A10") .Select .Interior.ColorIndex = 8 .Font.Name = "Algerian" .Font.ColorIndex = 12 .Font.Underline = xlUnderlineStyleDouble .Copy Range("B1:B10" ) .Ende löschen mit Ende Sub
Sehen wir uns ein anderes Beispiel an.
Wenn Sie ein Objekt von Outlook Mail erstellt haben, können Sie dieses Objekt verwenden, um alle seine Eigenschaften zu initialisieren und Methoden zu verwenden.
Set outMail = Outlook.Application.CreateItem(0) With outMail .To = "abcd.mail.com" 'Obligatorisch. Hier definieren Sie die Ziel-Mail-ID… cc = "cc.mail.com" 'optional. Cc-Mail-ID, wenn Sie möchten… BCC = "bcc.mail.com" 'optional. Bcc-Mail-ID, wenn Sie möchten … Betreff = subj 'sollte. Die Massage auf Mail Body… Body = msg 'optional. Die Nachricht im Nachrichtentext… Attachments.Add "C:/exceltip.com\test.xlsx" .Send End With
Wie funktioniert es?
Nun, wenn wir With Range("A1:A10") schreiben, sperrt vba seine Referenz auf das Objekt range("A1:A10"). Wenn wir also einen Punkt-Operator (.) schreiben, listet VBA alle Mitglieder dieser Range-Klasse auf, die sich nur auf das Objekt Range("A1:A10") oder jedes von Ihnen erwähnte Objekt auswirken. Die Verweissperre wird aufgehoben, wenn VBA die End With-Anweisung liest.
Mit Blöcken verschachtelt
Wir können einen Block innerhalb eines anderen Blocks haben. Im obigen Beispiel haben wir ein Range-Objekt verwendet, um es auszuwählen. Dann haben wir Range.Font mehrmals verwendet, um mit Schriftarten zu arbeiten. Dies wiederholt sich wieder. Der obige Code kann auch so geschrieben werden:
Sub test() With Range("A1:A10") .Select .Interior.ColorIndex = 8 'Verwenden eines anderen With innerhalb eines With-Blocks 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 inner mit beginnen, sollte das Objekt mit dem vorangestellten Punktoperator geschrieben werden.
Sobald Sie ein Kind sind, können Sie nicht mehr auf elternspezifische Eigenschaften zugreifen. Der folgende Code ist beispielsweise falsch.
Sub test() With Range("A1:A10") .Select .Interior.ColorIndex = 8 'Verwenden eines anderen With innerhalb eines With-Blocks With .Font .Name = "Algerian" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble 'Der folgende Code erzeugt einen Fehler, da die Kopier- und Löschmethoden nicht zur Schriftklasse gehören… Copy Range("B1:B10") .Clear End With End With End Sub
Voll qualifiziert mit Block
Wenn ich im Code, der die Arbeitsmappe enthält, einige Änderungen an der Schriftart des Bereichs A1: A10 von Sheet2 vornehmen möchte, sollten wir einen vollqualifizierten Block verwenden.
Die beiden folgenden 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
'Vollständig qualifiziert mit 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 von einem Objekt verwenden werden, geben Sie zu Beginn einen vollständig qualifizierten Namen ein. Wenn Sie untergeordnete Objekte verwenden, verwenden Sie den vorherigen Ansatz. Erfahrene Programmierer verwenden beide Methoden in geeigneten Situationen.
Also ja, Leute, so verwenden wir den Block With - End With 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.
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 spezifische Schlüsselwörter sind.
Gültigkeitsbereich von Excel-VBA-Variablen| 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 hat Bereichsspezifizierer.
ByRef- und ByVal-Argumente | Wenn ein Argument als ByRef-Argument an eine andere Unterfunktion oder Funktion übergeben wird, wird die Referenz der tatsächlichen Variablen gesendet. Alle Änderungen, die an der Kopie der Variablen vorgenommen werden, spiegeln sich im ursprünglichen Argument wider.
Löschen Sie Blätter ohne Bestätigungsaufforderung 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.
Hinzufügen und Speichern einer neuen Arbeitsmappe mit VBA in Microsoft Excel 2016| 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 Vorgänge in dieser neuen Arbeitsmappe problemlos ausführen können. Wie Speichern, Schließen, Löschen usw.
Anzeigen einer Nachricht in der 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.
Deaktivieren Sie Warnmeldungen mit VBA in Microsoft Excel 2016| Dieser Code deaktiviert nicht nur VBA-Warnungen, sondern erhöht auch die Zeiteffizienz des Codes. Mal sehen wie.
Populäre Artikel:
50 Excel-Kurzbefehle zur Steigerung Ihrer Produktivität | Werden Sie schneller bei Ihrer Aufgabe. Mit diesen 50 Tastenkombinationen arbeiten Sie noch schneller mit Excel.
Die SVERWEIS-Funktion in Excel | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, die verwendet wird, um Werte aus verschiedenen Bereichen und Blättern zu suchen.
ZÄHLENWENN in Excel 2016 | Zählen Sie Werte mit Bedingungen mit dieser erstaunlichen Funktion. Sie müssen Ihre Daten nicht filtern, um bestimmte Werte zu zählen. Die Countif-Funktion ist unerlässlich, um Ihr Dashboard vorzubereiten.
So verwenden Sie die SUMIF-Funktion in Excel | Dies ist eine weitere wesentliche Funktion des Dashboards. Dies hilft Ihnen, Werte unter bestimmten Bedingungen zusammenzufassen.