Excel VBA-Kurse (9): Excel VBA How-To
Dieser Artikel untersucht die Excel-VBA-Anleitung. Bitte beziehen Sie sich darauf, wenn Sie Excel VBA codieren.
Dies ist eine Fortsetzung des vorherigen Artikels.
Excel VBA-Kurs (8): Grundlagen der Excel VBA-Sprache – Datentypen, Datenstrukturen
4. Excel-VBA-Anleitung
4.1. So konfigurieren Sie die UI (Benutzeroberfläche)
In Excel VBA gibt es drei Möglichkeiten, die Benutzeroberfläche zu konfigurieren, z. B. das Empfangen von Werten vom Benutzer oder das Anzeigen des Fortschritts.
4.1.1. Benutzeroberfläche mit Excel-Tabelle
Dies ist die gebräuchlichste Methode. Fügen Sie der Excel-Tabelle Steuerelemente wie Schaltflächen, Textfelder und Kontrollkästchen hinzu und behandeln Sie Ereignisse. Es ist am einfachsten zu implementieren und bequem zu verwenden, da Sie auf eine Schaltfläche klicken können, während Sie sich die Daten ansehen.
Diese Methode hat einen Nachteil. Wenn Sie auf eine Schaltfläche klicken, nachdem die Bildschirmauflösung geändert wurde, wird die Größe der Schaltfläche weiter erhöht oder die Größe des Textes verringert. Wenn der externe Monitor geändert oder an einen Beam-Projektor angeschlossen wird, ändert sich hauptsächlich die Bildschirmauflösung, und dieses Phänomen tritt fast immer auf, wenn das Excel-Blatt, das die Steuerung enthält, zu diesem Zeitpunkt geöffnet ist. Dieses Phänomen tritt auf, wenn ein ActiveX-Steuerelement verwendet wird, und tritt nicht auf, wenn ein Formularsteuerelement verwendet wird.
4.1.2. Benutzeroberfläche mit Benutzerformular
Dies ist eine Methode zur Behandlung von Ereignissen, indem ein separates UserForm-Objekt erstellt und diesem Steuerelemente hinzugefügt werden.
Es ist möglicherweise nicht geeignet, während der Eingabe/Änderung von Daten, wie z. B. einer Liste von Eingabewerten, zu arbeiten, da es den Bildschirm bedecken kann. Wie in der folgenden Abbildung gezeigt, eignet es sich zum Anzeigen von Informationen wie ProgressBar.
4.1.2. Benutzeroberfläche mit Multifunktionsleiste
Dies ist die arbeitsintensivste und komplizierteste Methode. Fügen Sie benutzerdefinierte Registerkarten und Schaltflächen zur Oberfläche der Multifunktionsleiste hinzu, die sich seit Excel 2007 geändert hat, und behandeln Sie Ereignisse. Hier ist ein Beispiel für eine individuelle Ribbon Bar, die ein Juniormitarbeiter vor einigen Jahren angefertigt und mir geschickt hat.
Tool zur Überprüfung von Datenstandards (* Hinweis: Data Standard Check Tool Beschreibung Inhalt , Download) stellte die Benutzeroberfläche in Excel Sheet bereit, aber wenn Sie sie in die Multifunktionsleisten-Benutzeroberfläche ändern, ähnelt sie der obigen.
Der Inhalt der Multifunktionsleiste ist für sich genommen schon recht umfangreich, daher werde ich ihn später in einem separaten Artikel organisieren. Siehe unten.
- https://docs.microsoft.com/en-us/archive/msdn-magazine/2007/february/extend-office-2007-with-your-own-ribbon-tabs-and-controls
- https://docs.microsoft.com/en-us/office/vba/library-reference/concepts/overview-of-the-office-fluent-ribbon
4.2. So führen Sie VBA-Code aus
Es gibt mindestens drei Möglichkeiten, VBA-Code auszuführen.
4.2.1. Auslösen bei Schaltflächen-Klick-Ereignis
So erstellen Sie eine Schaltfläche wie in der Abbildung oben gezeigt und schreiben eine Anweisung, die VBA-Code im Click-Ereignis der Schaltfläche ausführt. Dies ist geeignet, wenn eine Möglichkeit bereitgestellt wird, es in der Benutzeroberfläche auszuführen.
4.2.2. Setzen Sie den Cursor auf den auszuführenden Quellcode und führen Sie ihn mit einer Tastenkombination aus
Platzieren Sie den Cursor auf dem Sub- oder Function-Prozedurcode in VBE (Visual Basic Editor) und drücken Sie die Tastenkombination. F5laufen mit Sie können auch auf die Schaltfläche „Ausführen“ (▶️) in der Symbolleiste klicken. Diese Methode funktioniert nur für Sub- und Function-Prozeduren ohne Parameter.
Diese Methode eignet sich für einfaches Testen, wenn keine externe Ausführungsmethode bereitgestellt werden muss.
4.2.3. Im Direktfenster ausführen
Bei dieser Methode geben Sie den Namen und Parameter einer Unter- oder Funktionsprozedur in das Fenster „Immediate Execution“ ein und drücken die Eingabetaste, um sie auszuführen. Diese Methode eignet sich zum einfachen Testen von Sub- und Function-Prozeduren mit Parametern.
4.3. So verwenden Sie das Direktfenster-Tool
Das Fenster „Immediate Execution“ kann für eine Vielzahl von Zwecken verwendet werden, wie z. B. Debugging und Meldungsausgabe, zusätzlich zur oben beschriebenen Makroausführung.
- Makro ausführen
- Ausführen durch Eingabe des Namens der Unter- oder Funktionsprozedur im Modul
- Es können auch Prozeduren mit Parametern ausgeführt werden
- Variablenwerte zur Laufzeit prüfen
- Wird beim Anhalten an einem Haltepunkt verwendet
- Drucken oder ? Nach Eingabe des Variablennamens bestätigen Sie den Wert mit der Eingabetaste.
- Ausgangsmeldung prüfen
- Überprüfen Sie die Ausgabe mit Debug.Print
4.4. So verwenden Sie das Objektsuchwerkzeug
vorherigen Post Excel VBA-Kurs (3): Excel-Objektmodell Ich habe mir das Objekt-Browse-Tool in kurz angesehen.
Führen Sie 'Browse Object' im VBE-Menü 'View' aus. Abkürzung ist F2 sein.
Das Objekt-Browsing-Tool besteht aus Folgendem.
- Filtern & Suchen
- Sie können die Liste aller standardmäßig in Excel bereitgestellten Bibliotheken und Bibliotheken, die als Referenzen hinzugefügt wurden, überprüfen und eine bestimmte Bibliothek auswählen.
- Die gesamte Bibliotheksliste kann nach Klassennamen oder Mitgliedsnamen durchsucht werden.
- Klassenliste
- Zeigt eine Liste aller Klassen, Module und Aufzählungen unter der ausgewählten Bibliothek an.
- Mitgliederliste
- Zeigt die Liste der Prozeduren, Funktionen, Eigenschaften usw. an, die Mitglieder der in der Klassenliste ausgewählten Klasse oder des Moduls sind.
- Mitgliederinformation
- Zeigt die Details der aus der Mitgliederliste ausgewählten Prozedur, Funktion, Eigenschaft usw. an.
Die Arten von Symbolen, die im Objektsuchwerkzeug angezeigt werden, und ihre Bedeutung sind wie folgt.
Weitere Informationen zum Objektsuchtool finden Sie unter der nachstehenden URL.
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/object-browser
4.5. So verbessern Sie die VBA-Leistung
Wie Sie die VBA-Leistung verbessern können, erfahren Sie in einem separaten Artikel.
VBA-Codierungsmuster: Verbesserung der VBA-Leistung
Um den obigen Artikel zusammenzufassen, legen Sie die globale Variable auf einen Leistungsverbesserungswert fest, bevor Sie den zu verarbeitenden Code eingeben, und ändern Sie sie auf den ursprünglichen Wert, nachdem der Verarbeitungscode abgeschlossen ist. Bitte beachten Sie den folgenden Code.
'코드 진입 부분 Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False Application.DisplayAlerts = False '실행할 코드가 들어 갈 부분 ... '코드 종료 부분 Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.DisplayAlerts = True
4.6. So verwenden Sie den Makrorekorder
Der Makrorekorder von Excel ist sehr nützlich. Wenn Sie beispielsweise eine neue Pivot-Tabelle oder ein neues Diagramm erstellen oder nicht wissen, wie man sich wiederholende Aufgaben in VBA-Code schreibt, kann die Makroaufzeichnung eine große Hilfe sein.
Wenn Sie den Makrorekorder starten, eine Aufgabe mit der Tastatur oder der Maus bearbeiten und dann den Makrorekorder stoppen, können Sie sehen, dass die Details der bisher verarbeiteten Arbeit in VBA-Code geschrieben sind. Es ist möglich, viel schneller und genauer zu codieren, indem man den so erstellten Code modifiziert und verwendet, als VBA-Code von Grund auf neu zu schreiben.
Die Makroaufzeichnung beginnt, indem Sie wie folgt auf die Schaltfläche „Makro aufzeichnen“ auf der Registerkarte „Entwickler“ oder in der unteren Statusleiste klicken.
Wenn Sie auf die Schaltfläche „Makro aufzeichnen“ klicken, erscheint ein Fenster zur Eingabe des Makronamens, der Tastenkombination, des Speicherorts und der Beschreibung wie folgt.
Wenn Sie nach Eingabe der Makroinformationen auf die Schaltfläche „OK“ klicken, wird der Aufzeichnungsstatus wie folgt geändert.
Lassen Sie uns die Randbezeichnung der eingefügten Daten, die Kopfzeileneinstellung (Hintergrundfarbe, Schriftart, Mittenausrichtung), das Ausblenden von Gitterlinien und die Standbildfunktionen mit dem Makrorekorder aufzeichnen. Wenn Sie die Makroaufzeichnung starten und die Funktion mit der Tastatur oder der Maus ausführen, sieht das Ergebnis wie auf der rechten Seite der folgenden Abbildung aus.
Stoppen Sie die Makroaufzeichnung und überprüfen Sie den generierten VBA-Code wie folgt.
Sub 매크로1() ' ' 매크로1 매크로 ' Columns("A:B").Select Columns("A:B").EntireColumn.AutoFit Range("A1:B11").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With Range("A1:B1").Select Selection.Font.Bold = True With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("A2").Select ActiveWindow.FreezePanes = True ActiveWindow.DisplayGridlines = False End Sub
Analyse dieses Codes:
Auch wenn Sie mit dem Excel-Objektmodell oder der VBA-Syntax nicht vertraut sind, können Sie mithilfe des so erstellten VBA-Codes nützliche Makros erstellen. Wenn Sie den Makrorecorder gut verwenden, wird die VBA-Codierung einfach.
Als Referenz ist Excel der einzige Makrorecorder unter den MS-Office-Suiten.
4.7. Grundprinzipien, die beim Codieren zu beachten sind
Es wird empfohlen, die folgenden Grundprinzipien bei der Codierung mit Excel VBA einzuhalten.
- Legen Sie den geänderten Wert nicht hinein, sondern erhalten Sie Eingaben von außen (UI).
- Strukturieren Sie es nicht von Anfang an als Modul/Klasse, konzentrieren Sie sich zunächst nur auf den Zweck der Implementierung.
- Die Strukturierung nimmt zusätzliche Zeit in Anspruch, die den ursprünglichen Arbeitsplan nicht beeinträchtigen sollte.
- VBA ist ein Mittel (Werkzeug), kein Zweck. Achten Sie darauf, sich nicht umzudrehen.
- Wenn es mehr als dreimal verwendet wird oder wenn klar ist, dass es in Zukunft kontinuierlich verwendet wird, refaktorisieren und strukturieren Sie es in Modul/Klasse unter Berücksichtigung der Wiederverwendbarkeit. (Erstellen -> Kopieren -> Refactoring)
In diesem Artikel haben wir uns Anleitungen angesehen, die beim Codieren von Excel VBA gut zu wissen sind. Als Nächstes sehen wir uns Beispiele für Tools an, die mit Excel VBA entwickelt und verwendet werden. Dies wird der letzte Beitrag der Excel-VBA-Vorlesung sein.
<<Verwandte Artikelliste >>
- Starten Sie den Excel-VBA-Kurs. (Vorlesungsankündigung, feat. Warum wir Excel VBA empfehlen)
- Excel VBA-Kurs(1): Überblick über Excel VBA
- Excel VBA-Kurs (2): Excel VBA-Grundlagen
- Excel VBA-Kurs (3): Excel-Objektmodell
- Excel VBA-Kurs (4): Arbeiten mit dem Excel-Objektmodell
- Excel VBA-Kurs (5): Excel-Dateierweiterung, VBE, Schrifteinstellungen
- Excel VBA-Kurs (6): Grundlagen der Excel VBA-Sprache – Variablen
- Excel VBA-Kurs (7): Grundlagen der Excel VBA-Sprache – Syntax
- Excel VBA-Kurs (8): Grundlagen der Excel VBA-Sprache – Datentypen, Datenstrukturen
- Excel VBA-Kurse (9): Excel VBA How-To
- Excel VBA-Kurs (10): Tools, die mit Excel VBA entwickelt und verwendet werden
- Vollständiges Inhaltsverzeichnis für Excel VBA-Kurse