Aufgezeichnete Visual Basic-Makros überarbeiten

23.08.2021

Die Makroaufzeichnung ist eine große Hilfe beim Ausfindigmachen der Visual Basic-Methoden und -Eigenschaften, die Sie verwenden wollen. Wenn Sie nicht wissen, welche Eigenschaften und Methoden Sie verwenden sollen, schalten Sie die Makroaufzeichnung ein, und führen Sie die Aktion manuell durch. Die Makroaufzeichnung übersetzt Ihre Aktionen in Visual Basic-Code. Es gibt aber einige Einschränkungen beim Aufzeichnen von Makros. Folgendes lässt sich nicht aufzeichnen:

Bedingte Verzweigungen

Variablenzuweisungen

Schleifenstrukturen

Benutzerdefinierte Formulare

Fehlerbehandlung

Anpassungen an der Bedienoberfläche von FlexPro

Zum Erweitern Ihrer Makros wollen Sie vielleicht den Code überarbeiten, der in Ihrem Modul aufgezeichnet wurde.

Entfernung der Selection-Eigenschaft

Makros, die über die Makroaufzeichnung erstellt wurden, sind oft von der Markierung abhängig. Am Anfang der meisten aufgezeichneten Makro-Anweisungen sehen Sie "Selection". Aufgezeichnete Makros verwenden die Selection-Eigenschaft zur Zurückgabe des Selection-Objekts. Im folgenden Beispiel wird einem Datensatz eine Zeile hinzugefügt, in dem in das im Editor grau dargestellte Feld unter der letzten Zeile des Datensatzes der Wert 0 eingegeben wird.

Sub Macro1()

    ActiveDatabase.ActiveObject.Selection.ActiveValue = 0#

    ActiveDatabase.ActiveObject.Selection.Move fpDataSelectionDown

End Sub

Dieses Makro führt die Aufgabe durch, es hat aber den Nachteil, dass es nur korrekt läuft, wenn erstens der Datensatz gerade im Datensatzfenster angezeigt wird und zweitens das Einfügefeld unter der letzten Zeile markiert ist. Diese beiden Probleme können gelöst werden, indem man das Makro so überarbeitet, dass es das Selection-Objekt nicht verwendet. Dies ist das überarbeitete Makro:

Sub MyMacro()

    ActiveDatabase.ActiveObject.NumberOfRows = _

        ActiveDatabase.ActiveObject.NumberOfRows + 1

    ActiveDatabase.ActiveObject.Value(fpDataComponentAll, 1 _

        , ActiveDatabase.ActiveObject.NumberOfRows) = 0#

End Sub

Die erste Anweisung fügt dem aktiven Datensatz eine Zeile hinzu. Die zweite Anweisung verwendet die Range-Methode zur Rückgabe eines Range-Objektes, welches genau den neu eingefügten Wert darstellt. Durch Zuweisung des Wertes 0 an die Value-Eigenschaft dieses Range-Objektes wird der neu eingefügte Wert initialisiert. Weitere Informationen über die Verwendung des Range-Objektes finden Sie unter Arbeiten mit Datensätzen.

Verwendung von With...End With

Makro-Anweisungen, die sich auf dasselbe Objekt beziehen, können mit der Struktur With...End With vereinfacht werden. Beispielsweise wurde das folgende Makro aufgezeichnet, als der markierte Text auf rote Fettschrift und Schriftgrad 10 Punkt umgestellt wurde.

Sub Macro1()

ActiveDatabase.ActiveObject.Selection.Font.Bold = True

ActiveDatabase.ActiveObject.Selection.Font.Size = 10

ActiveDatabase.ActiveObject.Selection.LineFormat.Color = fpColorRed

End Sub

Die Selection-Eigenschaft wird bei jeder Anweisung zur Zurückgabe eines Selection-Objekts verwendet. Das Makro kann so vereinfacht werden, dass die Selection-Eigenschaft nur einmal verwendet wird.

Sub MyMacro()

With ActiveDatabase.ActiveObject.Selection

    .Font.Bold = True

    .Font.Size = 10

    .LineFormat.Color = fpColorRed

End With

End Sub

Artikel teilen oder als Email versenden:

Diese Beiträge könnten Sie ebenfalls interessieren