Wie verwende ich eine verschachtelte vba with-anweisung?
Wichtige Punkte
- Verwenden Sie die VBA-With-Anweisung, um den Code zu minimieren.
- Bei Verwendung der With-Anweisung können Sie jeweils nur ein Objekt gleichzeitig verwenden.
Was ist VBA mit Deklaration
VBA With ist eine Anweisung zum einmaligen Angeben eines Objekts und zum anschließenden Ausführen mehrerer Anweisungen dafür. Mit einfachen Worten: Verwenden Sie die „WITH“-Anweisung, um ein Objekt anzugeben. Anschließend können Sie auf alle Eigenschaften und Methoden auf einmal zugreifen. Es beginnt mit „Mit“ und endet mit „Ende mit“.
Syntax von VBA mit Anweisung
Hier ist die Syntax, die Sie verwenden müssen, um die With-Anweisung in VBA zu verwenden:
With [OBJECT] [Statement] End With
- With : Dies ist das Startschlüsselwort der Anweisung, das VBA mitteilt, dass Sie das erwähnte Objekt angeben.
- Objekt : Hier müssen Sie das Objekt angeben, das Sie verwenden möchten.
- Anweisung : Eine oder mehrere Anweisungen, die Sie mit dem angegebenen Objekt ausführen möchten.
- End With : Dies ist das Endschlüsselwort der Anweisung.
Beispiel zum Verständnis der VBA With-Anweisung
Nehmen wir zum Verständnis die ausführliche Aussage als Beispiel. Angenommen, Sie möchten die Schriftfarbe, -größe und den Namen der Zelle A1 ändern. Um diese drei Dinge zu tun, müssen Sie auf drei verschiedene VBA- Schriftarteneigenschaften zugreifen und der Code wäre:
Range("A1").Font.Color = RGB(0, 0, 255) Range("A1").Font.Size = 16 Range("A1").Font.Name = "Consolas"
Aber hier werden wir die With-Anweisung anstelle des obigen Codes verwenden. Um die VBA With-Anweisung zu verwenden, können Sie die folgenden Schritte ausführen:
- Geben Sie zunächst auf der Tastatur „Mit“ ein.
- Verwenden Sie anschließend den VBA-Bereich, um Zelle A1 anzugeben, und verwenden Sie das Schriftartobjekt, um das Schriftartobjekt anzugeben.
- Als nächstes müssen Sie den Code für die drei Eigenschaften und die Werte eingeben, die Sie anwenden möchten.
- Verwenden Sie am Ende das Schlüsselwort „End With“, um die Anweisung zu beenden.
Hier ist der Code, den Sie gerade geschrieben haben.
Sub MyMacro() With Range("A1").Font .Color = RGB(0, 0, 255) .Size = 16 .Name = "Consolas" End With End Sub
Schauen wir uns nun beide Codes an und versuchen zu verstehen, was der Unterschied ist, den wir bei der Verwendung der „With“-Anweisung haben.
Im ersten Code haben Sie das Schriftartobjekt dreimal und dann die Eigenschaft verwendet, auf die Sie zugreifen und an der Sie Änderungen vornehmen möchten.
Aber im zweiten Code haben Sie die With-Anweisung verwendet und sofort das Schriftartobjekt angegeben. Und dann drei Codezeilen in der „With“-Anweisung, um auf die drei Eigenschaften zuzugreifen.
Wenn Sie die „With“-Anweisung verwenden und ein Objekt angeben, teilt es VBA mit, dass alle von Ihnen geschriebenen Anweisungen mit dem genannten Objekt ausgeführt werden sollen. Dadurch erhalten Sie nicht nur strukturierten Code, sondern beschleunigen auch die Ausführung eines Makros und sorgen für eine höhere Effizienz.
Mit Anweisung verschachtelt
Ich habe Ihnen am Anfang gesagt, dass Sie nur ein Objekt angeben können, um die With-Anweisung zu verwenden. Aber es gibt eine Möglichkeit, mehr als einen oder sogar mehrere Artikel damit zu verwenden. Dies verwendet VBA LOOPS und wir werden FOR EACH LOOP verwenden, um mehrere Objekte zu durchlaufen und das „With“ zu verwenden.
Lassen Sie mich Ihnen ein Beispiel geben; Sie müssen alle Arbeitsblätter durchgehen und alle folgenden Dinge auf alle Zellen in jedem Arbeitsblatt anwenden.
- Schriftgröße: 16
- Schriftart: Verdena
Und in der Arbeitsmappe gibt es fünf Arbeitsblätter, wie im folgenden Beispiel:
Führen Sie die folgenden Schritte aus, um eine verschachtelte „With“-Anweisung zu schreiben.
- Zunächst müssen Sie eine Variable deklarieren, um ein Arbeitsblattobjekt verwenden zu können.
- Danach müssen Sie, wie gesagt, For Each Loop verwenden. Sie müssen also einen Code mit der Schleife schreiben, der alle Arbeitsblätter durchlaufen kann.
- Geben Sie nun die with-Anweisung ein, die die oben besprochene Schriftarteinstellung anwenden kann. Um auf alle Zellen im Arbeitsblatt zu verweisen , können Sie bei der Angabe des Betreffs „Zellen“ verwenden.
Hier ist der vollständige Code, den Sie gerade geschrieben haben.
Sub MyMacro() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets With Cells .Font.Size = 16 .Font.Name = "Verdena" End With Next ws End Sub