Aufgezeichnete Visual Basic-Makros überarbeiten
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