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.

엑셀 Sheet를 사용한 UI
Benutzeroberfläche mit Excel-Tabelle

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.

양식 컨트롤과 ActiveX 컨트롤
Formularsteuerelemente und ActiveX-Steuerelemente

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.

User Form을 사용한 UI
Benutzeroberfläche mit Benutzerformular

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.

Progress Bar UI
Fortschrittsbalken-Benutzeroberfläche

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.

Ribbon Bar를 사용한 UI
Benutzeroberfläche mit Multifunktionsleiste

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.

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

버튼 클릭 이벤트에서 VBA 코드 실행
Führen Sie VBA-Code auf dem Klickereignis der Schaltfläche aus

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

커서 위치에서 VBA 코드 실행
Führen Sie den VBA-Code an der Cursorposition 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

직접 실행 창에서 VBA 코드 실행
Ausführen von VBA-Code im Direktfenster

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.

직접 실행 창 도구 활용 방법
So verwenden Sie das Direktfenster-Tool
  1. 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
  2. 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.
  3. 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.

개체 찾아보기 메뉴
Menü zum Durchsuchen von Objekten

Das Objekt-Browsing-Tool besteht aus Folgendem.

개체 찾아보기 도구 구성
Konfigurieren des Objektsuchwerkzeugs
  1. 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.
  2. Klassenliste
    • Zeigt eine Liste aller Klassen, Module und Aufzählungen unter der ausgewählten Bibliothek an.
  3. Mitgliederliste
    • Zeigt die Liste der Prozeduren, Funktionen, Eigenschaften usw. an, die Mitglieder der in der Klassenliste ausgewählten Klasse oder des Moduls sind.
  4. 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.

개체 찾아보기 도구에서 표시되는 아이콘의 종류와 의미
Typen und Bedeutungen der im Objektsuchwerkzeug angezeigten Symbole

(Quelle: https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/icons-used-in-the-object-browser-and-code-windows)

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.

매크로 기록 시작 버튼
Schaltfläche zum Starten der Makroaufzeichnung

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.

매크로 이름, 바로 가기 키, 저장 위치 설정
Legen Sie den Makronamen, die Tastenkombination und den Speicherort fest

Wenn Sie nach Eingabe der Makroinformationen auf die Schaltfläche „OK“ klicken, wird der Aufzeichnungsstatus wie folgt geändert.

매크로 기록 중
Makro aufnehmen

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.

매크로 기록 예시
Beispiel für eine Makroaufzeichnung

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:

매크로 기록기로 생성된 코드 분석
Vom Makrorecorder generierte Codeanalyse

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 >>

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEDeutsch