Einführung in die Access-Programmierung

Gilt für
Access für Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Wenn Sie eine neue Datenbank erstellen, beginnen Sie in der Regel mit dem Erstellen von Datenbankobjekten wie Tabellen, Formularen und Berichten. Irgendwann müssen Sie möglicherweise eine Programmierung hinzufügen, um Prozesse zu automatisieren und diese Objekte zu verbinden. In diesem Artikel werden die Programmiertools in Access vorgestellt.

Inhalt dieses Artikels

Was ist Programmieren?

In Access bedeutet Programmieren das Hinzufügen von Funktionen zu Ihrer Datenbank mithilfe von Access-Makros oder Code von Visual Basic for Applications (VBA). Sie können beispielsweise ein Formular und einen Bericht erstellen und dann dem Formular, über das der Bericht geöffnet wird, eine Befehlsschaltfläche hinzufügen, wenn Sie ihn auswählen. In diesem Fall erstellen Sie ein Makro oder VBA eine Prozedur und legen dann die OnClick Ereigniseigenschaft der Befehlsschaltfläche fest, sodass die Befehlsschaltfläche das Makro oder die Prozedur ausführt. Für einen einfachen Vorgang, z. B. das Öffnen eines Berichts, können Sie den Befehlsschaltflächen-Assistenten verwenden, um die Arbeit zu erledigen, oder Sie können den Assistenten deaktivieren und selbst programmieren.

Hinweis

Viele Microsoft Office-Programme verwenden den Begriff "Makro" für VBA Code. Dies kann Access-Benutzer verwirren, da sich der Begriff "Makro" in Access auf eine benannte Sammlung von Makroaktionen bezieht, die Sie mithilfe des Makro-Generators zusammenstellen. Access-Makroaktionen stellen nur eine Teilmenge der Befehle dar, die in verfügbar sind VBA. Der Makro-Generator bietet Ihnen eine strukturiertere Benutzeroberfläche als der Visual Basic-Editor, sodass Sie Steuerelemente und Objekte programmieren können, ohne Code zu lernen VBA . In Access-Hilfeartikeln werden Access-Makros als Makros bezeichnet. VBA Code wird als Code, Funktion oder Prozedur bezeichnet VBA . VBA Code wird in Klassenmodulen gespeichert, die Teil einzelner Formulare oder Berichte sind und in der Regel nur Code für diese Objekte enthalten, sowie in Modulen, die nicht an bestimmte Objekte gebunden sind und in der Regel globalen Code enthalten, den Sie in der gesamten Datenbank verwenden können.

Objekte wie Formulare und Berichte und Steuerelemente wie Befehlsschaltflächen und Textfelder verfügen über Ereigniseigenschaften, an die Sie Makros oder Prozeduren anfügen können. Jede Ereigniseigenschaft ist einem bestimmten Ereignis zugeordnet, z. B. einem Mausklick, dem Öffnen eines Formulars oder dem Ändern von Daten in einem Textfeld. Ereignisse können auch durch Faktoren ausgelöst werden, die außerhalb von Access liegen, z. B. Systemereignisse, oder durch Makros oder Prozeduren, die an andere Ereignisse angefügt sind. Ihre Datenbank kann komplex werden, wenn Sie viele Makros oder Prozeduren zu vielen Ereigniseigenschaften vieler Objekte hinzufügen. In den meisten Fällen können Sie jedoch mit sehr wenig Programmieraufwand die gewünschten Ergebnisse erzielen.

Seitenanfang

Soll ich Makros oder VBA-Code verwenden?

Die Entscheidung, ob Makros oder beides verwendet werden, hängt hauptsächlich davon ab, VBAwie Sie die Datenbank bereitstellen oder verteilen möchten. Wenn die Datenbank beispielsweise auf Ihrem Computer gespeichert ist, Sie der einzige Benutzer sind und mit der Verwendung VBA von Code vertraut sind, können Sie sie für die meisten Programmieraufgaben verwenden VBA . Wenn Sie jedoch beabsichtigen, Ihre Datenbank für andere Personen von einem Dateiserver freizugeben, sollten Sie die Verwendung VBA aus Sicherheitsgründen vermeiden.

Stützen Sie Ihre Entscheidung für die Verwendung von Makros oder VBA Code auf zwei Aspekte: Sicherheit und die gewünschte Funktionalität. Die Sicherheit ist wichtig, da VBA sie verwendet werden kann, um Code zu erstellen, der Ihre Daten gefährdet oder Dateien auf Ihrem Computer beschädigt. Wenn Sie eine Datenbank verwenden, die von einer anderen Person erstellt wurde, aktivieren VBA Sie Code nur, wenn Sie wissen, dass die Datenbank aus einer vertrauenswürdigen Quelle stammt. Wenn Sie eine Datenbank erstellen, die von anderen Personen verwendet wird, versuchen Sie zu vermeiden, Programmiertools einzuschließen, bei denen der Benutzer der Datenbank explizit vertrauen muss. Allgemeine Techniken zur Vermeidung dieser Anforderung werden weiter unten in diesem Abschnitt beschrieben.

Um Ihre Datenbank zu schützen, sollten Sie, wenn möglich, Makros verwenden, und verwenden VBA Sie sie nur für Operationen, die nicht mithilfe von Makroaktionen ausgeführt werden können. Versuchen Sie außerdem, nur Makroaktionen zu verwenden, für die die Datenbank nicht vertrauenswürdig sein muss, bevor sie ausgeführt werden können. Durch diese Art der Einschränkung von Makroaktionen können Benutzer sicher sein, dass die Datenbank nicht programmiert ist, durch die Daten oder andere Dateien auf ihren Computern beschädigt werden könnten.

Überlegungen zu Makros

Access enthält viele Makroaktionen, mit denen Sie leistungsfähigere Makros erstellen können als frühere Versionen von Access. Beispielsweise können Sie jetzt mithilfe von Makroaktionen globale temporäre Variablen erstellen und verwenden, und Sie können Fehler dank neuer Makroaktionen zur Fehlerbehandlung ordnungsgemäß verarbeiten. In früheren Versionen von Access waren diese Features nur im VBA Sie können ein Makro auch direkt in die Ereigniseigenschaft eines Objekts oder Steuerelements einbetten. Ein eingebettetes Makro wird Teil des Objekts oder Steuerelements und bleibt bei ihm, wenn das Objekt oder Steuerelement verschoben oder kopiert wird.

Makros bieten eine einfache Möglichkeit, viele Programmieraufgaben zu erledigen, z. B. das Öffnen und Schließen von Formularen und das Ausführen von Berichten. Sie können die von Ihnen erstellten Datenbankobjekte, z. B. Formulare und Berichte, schnell miteinander verknüpfen, da Sie sich nur wenig Syntax merken müssen. Die Argumente für jede Aktion werden im Makro-Generator angezeigt.

Über die gesteigerte Sicherheit und komfortable Bedienung von Makros hinaus ist der Einsatz von Makros für die folgenden Aufgaben erforderlich:

  • Zuweisen einer Aktion oder einer Reihe von Aktionen zu einer Taste. Dies erfordert das Erstellen einer Makrogruppe mit dem Namen AutoKeys.

  • Ausführen einer Aktion oder einer Reihe von Aktionen beim ursprünglichen Öffnen einer Datenbank. Dazu muss ein Makro namens AutoExecerstellt werden.

    Hinweis

    Das AutoExec Makro wird vor allen anderen Makros oder VBA Code ausgeführt, auch wenn Sie im Dialogfeld Access-Optionen ein Startformular festgelegt und ein Makro oder VBA diesen Code an dieses Formular OnOpen oder OnLoad Ereignis angefügt haben.

Weitere Informationen zum Erstellen von Makros finden Sie unter Grundlegendes zu Makros.

VBA-Überlegungen

Verwenden Sie VBA diese anstelle von Makros, wenn Sie eine der folgenden Aktionen ausführen möchten:

  • Verwenden Sie integrierte Funktionen, oder erstellen Sie eigene. Access enthält viele integrierte Funktionen wie z. B IPmt. , mit denen eine Zinszahlung berechnet wird. Sie können diese Funktionen verwenden, um Berechnungen durchzuführen, ohne komplizierte Ausdrücke zu erstellen. Mithilfe von VBAkönnen Sie auch eigene Funktionen erstellen, um Berechnungen durchzuführen, die über die Fähigkeiten eines Ausdrucks hinausgehen, oder um komplexe Ausdrücke zu ersetzen. Darüber hinaus können Sie die in Ausdrücken erstellten Funktionen verwenden, um einen gemeinsamen Vorgang auf mehrere Objekte anzuwenden.
  • Erstellen oder Bearbeiten von Objekten. In den meisten Fällen ist es am einfachsten, ein Objekt in der Entwurfsansicht dieses Objekts zu erstellen und zu ändern. In manchen Situationen möchten Sie jedoch möglicherweise die Definition eines Objekts im Code bearbeiten. Mithilfe VBAvon können Sie alle Objekte in einer Datenbank sowie die Datenbank selbst bearbeiten.
  • Ausführen von Aktionen auf Systemebene. Sie können die RunApp Aktion in einem Makro ausführen, um ein anderes Programm, z. B. Microsoft Excel, in Access auszuführen, aber Sie können ein Makro nicht verwenden, um viel anderes außerhalb von Access zu tun. Mithilfe von VBAkönnen Sie überprüfen, ob eine Datei auf dem Computer vorhanden ist, die Automatisierung oder den dynamischen Datenaustausch (DDE) für die Kommunikation mit anderen Microsoft Windows-basierten Programmen wie Excel verwenden und Funktionen in Windows-Bibliotheken mit dynamischen Verknüpfungen aufrufen (DLLs).
  • Bearbeiten Sie Datensätze einzeln. Sie können VBA eine Reihe von Datensätzen Schritt für Datensatz durchgehen und für jeden Datensatz eine Operation ausführen. Im Gegensatz dazu arbeiten Makros mit ganzen Sätzen von Datensätzen gleichzeitig.

Seitenanfang

Verwenden des Befehlsschaltflächen-Assistenten, um häufig vorkommende Aufgaben zu erledigen

Wenn Sie einem Formular eine Befehlsschaltfläche hinzufügen, kann Ihnen der Befehlsschaltflächen-Assistent beim Einstieg in die Programmierung helfen. Der Assistent hilft Ihnen, eine Befehlsschaltfläche zu erstellen, die eine bestimmte Aufgabe ausführt. In einer Access-Datei (.accdb) erstellt der Assistent ein Makro, das in die OnClick Eigenschaft der Befehlsschaltfläche eingebettet ist. In einer .mdb ODER-Datei .adp erstellt VBA der Assistent Code, da eingebettete Makros in diesen Dateiformaten nicht verfügbar sind. In beiden Fällen können Sie das Makro oder VBA den Code anschließend ändern oder erweitern, damit es Ihren Anforderungen besser entspricht.

  1. Klicken Sie im Navigationsbereich mit der rechten Maustaste auf das Formular, dem Sie die Befehlsschaltfläche hinzufügen möchten, und klicken Sie dann auf Entwurfsansicht.

  2. Klicken Sie auf der Registerkarte "Formularentwurf " auf den Pfeil nach unten, um den Steuerelementkatalog anzuzeigen, und stellen Sie dann sicher, dass " Steuerelement-Assistenten verwenden " aktiviert ist.

  3. Klicken Sie auf der Registerkarte Formularentwurf im Steuerelementkatalog auf Schaltfläche.

  4. Klicken Sie im Entwurfsbereich des Formulars an die Stelle, an der Sie die Befehlsschaltfläche platzieren möchten. Der Befehlsschaltflächen-Assistent wird gestartet.

  5. Klicken Sie auf der ersten Seite des Assistenten auf jede der Kategorien in der Liste Kategorien, um zu sehen, für die Ausführung welcher Aktionen der Assistent die Befehlsschaltfläche programmieren kann. Wählen Sie in der Liste Aktionen die gewünschte Aktion aus, und klicken Sie dann auf Weiter.

  6. Klicken Sie entweder auf die Option Text oder auf die Option Bild, je nachdem, ob auf der Befehlsschaltfläche Text oder ein Bild angezeigt werden soll.

    • Wenn Sie Text anzeigen möchten, können Sie den Text im Feld neben der Option Text bearbeiten.
    • Wenn ein Bild angezeigt werden soll, schlägt der Assistent in der Liste ein Bild vor. Wenn Sie ein anderes Bild auswählen möchten, aktivieren Sie das Kontrollkästchen Alle Bilder anzeigen, um eine Liste aller Bilder für Befehlsschaltflächen anzuzeigen, die von Access bereitgestellt werden, oder klicken Sie auf Durchsuchen, um ein Bild von einem anderen Speicherort auszuwählen. Klicken Sie auf Weiter.
  7. Geben Sie einen aussagekräftigen Namen für die Befehlsschaltfläche ein. Dieser Schritt ist optional, und dieser Name wird nicht auf der Befehlsschaltfläche angezeigt. Es empfiehlt sich jedoch, einen aussagekräftigen Namen einzugeben. Wenn Sie später auf die Befehlsschaltfläche verweisen müssen, beispielsweise beim Festlegen der Aktivierreihenfolge für Steuerelemente auf Ihrem Formular, ist es viel einfacher, die Befehlsschaltflächen voneinander zu unterscheiden. Wenn die Befehlsschaltfläche das Formular schließt, können Sie es cmdClose beispielsweise benennen oder CommandClose.

  8. Klicken Sie auf Fertig stellen. Access platziert die Befehlsschaltfläche auf dem Formular.

  9. Wenn Sie sehen möchten, was der Assistent für Sie programmiert hat, führen Sie die folgenden optionalen Schritte aus:

    1. Wenn das Eigenschaftenblatt noch nicht angezeigt wird, drücken Sie F4 , um es anzuzeigen.

    2. Klicken Sie auf dem Eigenschaftenblatt auf die Registerkarte Ereignis.

    3. Klicken Sie im Eigenschaftenfeld Beim Klicken auf die Schaltfläche "Erstellen ".

      Access startet den Makro-Generator und zeigt das Makro an, das vom Assistenten erstellt wurde. Sie können das Makro bei Bedarf bearbeiten. Weitere Informationen finden Sie unter Grundlegendes zu Makros. Wenn Sie fertig sind, klicken Sie auf der Registerkarte Makroentwurf in der Gruppe Schließen auf Schließen , um den Makro-Generator zu schließen. Wenn Access Sie auffordert, die Änderungen zu speichern und die Eigenschaft zu aktualisieren, klicken Sie auf Ja, um die Änderungen zu speichern, oder auf Nein, um die Änderungen zu verwerfen.

  10. Klicken Sie auf der Registerkarte "Formularentwurf " in der Gruppe "Ansichten " auf "Ansicht" und dann auf "Formularansicht". Klicken Sie auf die neue Befehlsschaltfläche, um zu überprüfen, ob sie wie erwartet funktioniert.

Seitenanfang

Grundlegendes zu Makros

Ein Makro ist ein Tool, mit dem Sie Aufgaben automatisieren und Ihren Formularen, Berichten und Steuerelementen Funktionen hinzufügen können. Wenn Sie beispielsweise einem Formular eine Befehlsschaltfläche hinzufügen, können Sie die Ereigniseigenschaft der OnClick Schaltfläche einem Makro zuordnen, das die Befehle enthält, die die Schaltfläche bei jeder Auswahl ausführen soll.

Es ist hilfreich, sich Access-Makros als eine vereinfachte Programmiersprache vorzustellen, in der Sie Code erstellen, indem Sie eine Liste mit auszuführenden Aktionen aufbauen. Beim Erstellen eines Makros wählen Sie jede Aktion aus einer Dropdownliste aus und setzen anschließend die erforderlichen Informationen für jede Aktion ein. Mit Makros können Sie Formularen, Berichten und Steuerelementen Funktionen hinzufügen, ohne Code in einem VBA Modul schreiben zu müssen. Makros stellen eine Teilmenge der Befehle bereit, die in VBAverfügbar sind, und die meisten Benutzer finden es einfacher, ein Makro zu erstellen, als Code zu schreiben VBA .

Sie erstellen Makros mithilfe des Makro-Generators, der in der folgenden Abbildung dargestellt ist.

So zeigen Sie den Makro-Generator an:

  • Klicken Sie auf der Registerkarte Erstellen in der Gruppe Makros und Code auf Makro.

Seitenanfang

Grundlegendes zu VBA-Code

Ermöglicht Ihnen wie Makros VBA das Hinzufügen von Automatisierungs- und anderen Funktionen zu Ihrer Access-Anwendung. Sie können mithilfe von Steuerelementen von Drittanbietern erweitern VBA und eigene Funktionen und Prozeduren für bestimmte Anforderungen schreiben.

Eine schnelle Möglichkeit zu beginnen VBA , besteht darin, zuerst ein Access-Makro zu erstellen und es dann in Code zu VBA konvertieren. Anweisungen dazu finden Sie unter Konvertieren von Makros in VBA-Code. Diese Funktion erstellt ein neues VBA Modul, das die entsprechenden Vorgänge im Makro ausführt. Außerdem wird der Visual Basic-Editor geöffnet, sodass Sie mit dem Bearbeiten der Prozedur beginnen können. Wenn Sie im Visual Basic-Editor arbeiten, können Sie auf Schlüsselwörter klicken und F1 drücken, um die Access-Entwicklerhilfe zu starten und mehr über die einzelnen Schlüsselwörter (Keyword) zu erfahren. Anschließend können Sie die Access-Entwicklerhilfe durchsuchen und neue Befehle entdecken, mit denen Sie Ihre gewünschten Programmieraufgaben erledigen können.

Seitenanfang

Konvertieren von Makros in VBA-Code

Mit Access können Sie Makros automatisch in VBA Module oder Klassenmodule konvertieren. Sie können Makros konvertieren, die an ein Formular oder einen Bericht angefügt sind, unabhängig davon, ob sie als separate Objekte oder als eingebettete Makros vorliegen. Sie können auch globale Makros konvertieren, die nicht an ein bestimmtes Formular oder einen bestimmten Bericht angefügt sind.

Konvertieren von Makros, die an ein Formular oder einen Bericht angefügt sind

Dieser Prozess führt eine Konvertierung zu VBA Makros durch, auf die ein Formular oder ein Bericht oder eines seiner Steuerelemente verweist oder die in ein Formular oder einen Bericht eingebettet sind, und fügt den VBA Code dem Klassenmodul des Formulars oder Berichts hinzu. Das Klassenmodul wird Teil des Formulars oder Berichts und wird mit dem Formular oder Bericht verschoben, wenn es verschoben oder kopiert wird.

  1. Klicken Sie im Navigationsbereich mit der rechten Maustaste auf das Formular oder den Bericht, und klicken Sie dann auf Entwurfsansicht.

  2. Klicken Sie auf der Registerkarte "Formularentwurf " in der Gruppe "Tools " entweder auf "Makros des Formulars in Visual Basic konvertieren " oder auf "Makros des Berichts in Visual Basic konvertieren".

  3. Wählen Sie im Dialogfeld " Konvertieren von Formularmakros oder Berichtsmakros" aus, ob Access den erzeugten Funktionen Fehlerbehandlungscode hinzufügen soll. Wenn Ihre Makros Kommentare enthalten, wählen Sie auch aus, ob diese Kommentare in die Funktionen aufgenommen werden sollen. Klicken Sie auf Konvertieren, um fortzufahren. Wenn für das Formular oder den Bericht kein Klassenmodul vorhanden ist, erstellt Access eines und fügt dem Modul für jedes Makro, das dem Formular oder Bericht zugeordnet wurde, eine Prozedur hinzu. Access ändert außerdem die Ereigniseigenschaften des Formulars oder Berichts, sodass die neuen VBA Prozeduren anstelle der Makros ausgeführt werden.

  4. So zeigen Sie Code VBA an und bearbeiten ihn:

    1. Wenn das Eigenschaftenblatt noch nicht angezeigt wird, während das Formular oder der Bericht in der Entwurfsansicht noch geöffnet ist, drücken Sie F4 , um es anzuzeigen.

    2. Klicken Sie auf der Registerkarte "Ereignis " des Eigenschaftenfensters in ein beliebiges Eigenschaftenfeld, das angezeigt wird [Event Procedure], und klicken Sie dann auf die Schaltfläche "Erstellen ". Um die Ereigniseigenschaften für ein bestimmtes Steuerelement anzuzeigen, klicken Sie auf das Steuerelement, um es auszuwählen. Um die Ereigniseigenschaften für das gesamte Formular oder den gesamten Bericht anzuzeigen, wählen Sie oben auf dem Eigenschaftenblatt in der Dropdownliste Formular oder Bericht aus.

      Access öffnet den Visual Basic-Editor und zeigt die Ereignisprozedur in ihrem Klassenmodul an. Sie können nach oben oder nach unten scrollen, um alle anderen im gleichen Klassenmodul enthaltenen Prozeduren anzuzeigen.

Konvertieren von globalen Makros

  1. Klicken Sie im Navigationsbereich mit der rechten Maustaste auf das Makro, das Sie konvertieren möchten, und klicken Sie dann auf Entwurfsansicht.

  2. Klicken Sie auf der Registerkarte "Makroentwurf " in der Gruppe "Tools " auf "Makros in Visual Basic konvertieren".

  3. Wählen Sie im Dialogfeld Konvertiere Makro die gewünschten Optionen aus, und klicken Sie dann auf Konvertieren. Access konvertiert das Makro und öffnet den Visual Basic-Editor.

  4. So zeigen Sie Code VBA an und bearbeiten ihn:

    1. Klicken Sie im Visual Basic-Editor, sollte der Bereich Projektexplorer nicht angezeigt werden, im Menü Ansicht auf Projektexplorer.
    2. Erweitern Sie die Struktur unter dem Namen der Datenbank, in der Sie arbeiten.
    3. Doppelklicken Sie unter Module auf das Converted Macro-<macro name> Modul. Das Modul wird im Visual Basic-Editor geöffnet.

Anfügen einer VBA-Funktion an eine Ereigniseigenschaft

Wenn Sie ein globales Makro in VBAkonvertieren, wird der VBA Code in einem Standardmodul platziert. Im Gegensatz zu einem Klassenmodul ist ein Standardmodul nicht Teil eines Formulars oder Berichts. Wahrscheinlich möchten Sie die Funktion einer Ereigniseigenschaft auf einem Formular, in einem Bericht oder einem Steuerelement zuordnen, damit der Code genau dann und dort ausgeführt wird, wie Sie es wünschen. Dazu können Sie den VBA Code in ein Klassenmodul kopieren und ihn dann einer Ereigniseigenschaft zuordnen, oder Sie können einen speziellen Aufruf von der Ereigniseigenschaft an das Standardmodul vornehmen, indem Sie die folgende Prozedur verwenden.

  1. Notieren Sie sich den Namen der Funktion im Visual Basic-Editor. Wenn Sie z. B. ein Makro mit dem Namen MyMacrokonvertiert haben, lautet MyMacro()der Funktionsname .
  2. Schließen Sie den Visual Basic-Editor.
  3. Klicken Sie im Navigationsbereich mit der rechten Maustaste auf das Formular oder den Bericht, dem bzw. dem Sie die Funktion zuordnen möchten, und klicken Sie dann auf Entwurfsansicht.
  4. Klicken Sie auf das Steuerelement oder den Abschnitt, dem Sie die Funktion zuordnen möchten.
  5. Wenn das Eigenschaftenblatt noch nicht angezeigt wird, drücken Sie F4 , um es anzuzeigen.
  6. Klicken Sie auf der Registerkarte Ereignis des Eigenschaftenblatts auf das Ereigniseigenschaftsfeld, dem Sie die Funktion zuordnen möchten.
  7. Geben Sie im Eigenschaftenfeld ein Gleichheitszeichen (=) gefolgt vom Namen der Funktion ein, =MyMacro()z. B. Achten Sie darauf, die Klammern einzuschließen.
  8. Speichern Sie das Formular oder den Bericht, indem Sie auf der Symbolleiste für den Schnellzugriff auf Speichern klicken.
  9. Doppelklicken Sie im Navigationsbereich auf das Formular oder den Bericht, und testen Sie es bzw. ihn, um zu überprüfen, ob der Code wie gewünscht ausgeführt wird.

Sie kennen jetzt die grundlegenden Schritte zum Hinzufügen VBA von Code zu Ihrer Datenbank. In diesem Artikel werden nur die Grundlagen der ersten Schritte beschrieben. Viele ausgezeichnete Nachschlagewerke und Online-Ressourcen können Ihnen helfen, Ihre Programmierkenntnisse zu verbessern.

Siehe auch

Erstellen eines Benutzeroberflächenmakros

Ausführen von Access-Makros mithilfe einer Tastenkombination

Automatisieren von Startereignissen mit einem Makro

Erstellen eines Makros, das beim Öffnen einer Datenbank ausgeführt wird

Reihenfolge von Ereignissen für Datenbankobjekte

Seitenanfang