VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte,...

151
Regionales Rechenzentrum für Niedersachsen VBA (Visual Basic for Application) Mit Objekten arbeiten

Transcript of VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte,...

Page 1: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

Regionales Rechenzentrum für Niedersachsen

VBA (Visual Basic for Application)

Mit Objekten arbeiten

Page 2: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 2Access 2007 – VBA | 06.03.08 | Seite 2

Regionales Rechenzentrum für Niedersachsen

Objektorientierte Programmierung (OOP)

... abstrahiert Gegenstände der realen Welt, um sie in einem Programm abzubilden zu können.

... versucht Daten, die ein Objekt beschreiben und Prozeduren, die die Daten verändern, in einer Struktur zusammenzufassen.

... versucht Daten und Funktionen, die die Daten verändern, in eine Struktur zu kapseln.

In der objektorientierten Programmierung werden ... Klassen erstellt, um Gruppen von Objekten zu beschreiben. Zum Beispiel

die Klasse Form beschreibt die Eigenschaften eines Formulars allgemein. ... Objekte erstellt, um ein Gegenstand aus der realen Wert abzubilden. Das

Formular "Kunde" ist ein Objekt aus der realen Welt und hat bestimmte Ausprägungen der Eigenschaften. Zum Beispiel der Hintergrund ist grau.

... Nachrichten verschickt. Wenn der Nutzer auf eine Schaltfläche klickt, wird eine Nachricht geschickt, auf die entsprechend reagiert wird.

Page 3: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 3Access 2007 – VBA | 06.03.08 | Seite 3

Regionales Rechenzentrum für Niedersachsen

... nutzt

... Klassen, um Objekte mit gleichen Eigenschaften und Methoden zusammenzufassen. Zum Beispiel die Klasse Form beschreibt die Eigenschaften eines Formulars allgemein.

... Objekte, die konkret ein realen Gegenstand beschreiben und abstrahieren. Zum Beispiel wird ein Textfeld für Währungseingaben formatiert und gestaltet. Das Textfeld entspricht einem Feld in einem Papierformular.

... Nachrichten als Kommunikationsmittel. Wenn zum Beispiel der Nutzer auf eine Schaltfläche in einem Formular klickt, wird eine Nachricht gesendet. Diese Nachricht wird entsprechend den Anweisungen verarbeitet.

Page 4: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 4Access 2007 – VBA | 06.03.08 | Seite 4

Regionales Rechenzentrum für Niedersachsen

Objekte

... stellen eine Abstraktion eines realen Gegenstandes dar. ... sind Akteure in einem abstrakten Modell. ... stellen die Formulare, Berichte, Steuerelemente etc. in Access

dar. ... haben bestimmte Eigenschaften (Attribute) und Methoden

(Funktionen). ... berichten über ihren Zustand und können diesen mit Hilfe von

Anweisunge verändern. ... sind die Instanz einer Klasse.

Page 5: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 5Access 2007 – VBA | 06.03.08 | Seite 5

Regionales Rechenzentrum für Niedersachsen

Beispiel

… hat Eigenschaften wie Farbe, Kilometerstand, Motorleistung etc.

… kommuniziert mit anderen Verkehrsteilnehmern.

… beachtet die Verkehrszeichen.

Page 6: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 6Access 2007 – VBA | 06.03.08 | Seite 6

Regionales Rechenzentrum für Niedersachsen

Formular in Access

Eigenschaften (Attribute)

Backcolor (Hintergrundfarbe)

Caption (Beschriftung)

Scrollbars (Bildlaufleisten)

usw.

Methoden

Move (Verschieben)

Refresh (Neu Zeichnen)

SetFocus (Setze Fokus)

usw.

Ereignis (Event-Handler)

Click (Mausklick)

Activate (Aktiviert)

MouseUp (Maustaste auf)

usw.

Page 7: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 7Access 2007 – VBA | 06.03.08 | Seite 7

Regionales Rechenzentrum für Niedersachsen

Klassen

... fassen Objekte in Kategorien zusammen. ... fassen Objekte mit den gleichen Eigenschaften und Methoden

zusammen. ... stellen Baupläne für konkrete Objekte dar. ... bieten eine Schablone für bestimmte Kategorien von Objekten.

VerkehrsteilnehmerVerkehrszeichen KFZ

Page 8: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 8Access 2007 – VBA | 06.03.08 | Seite 8

Regionales Rechenzentrum für Niedersachsen

Klassen in Access

Jede Schaltfläche hat die gleichen Eigenschaften und Methoden. Wie die Schaltfläche aussieht und wie sie auf Benutzeraktionen reagiert, ist unterschiedlich.

Für jedes Formular sind die gleichen Eigenschaften und Methoden vorhanden. Welche Eigenschaften genutzt werden und wie sich das Formular verhält, legt der Entwickler der Datenbank fest.

Page 9: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 9Access 2007 – VBA | 06.03.08 | Seite 9

Regionales Rechenzentrum für Niedersachsen

Eine Klasse hat

… Eigenschaften (Attribute). Attribute beschreiben einen Gegenstand. Jeder Gegenstand in einer Gruppe (Klasse) besitzt die gleichen

Eigenschaften. Jedes Objekt hat aber bestimmte Attributwerte, die das Objekt von

anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction, Elementfunktion),

Methoden verändern die Eigenschaft eines Objekts. Jedes Objekt in einer Gruppe (Klasse) hat die gleichen Methoden. Objekte nutzen Methoden, um mit anderen Objekten zu

kommunizieren. Objekte reagieren mit Hilfe von Methoden auf bestimmte Ereignisse.

Ereignisse sind zum Beispiel Mausklick, Drücken einer Taste etc.

Page 10: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 10Access 2007 – VBA | 06.03.08 | Seite 10

Regionales Rechenzentrum für Niedersachsen

Instanz (Exemplar)

... definiert eine Variable der entsprechenden Klasse. ... ist eine Variable vom Typ einer bestimmten Klasse. ... kann als Standardinstanz angelegt werden.

Die Standardinstanz wird automatisch beim Öffnen eines Formulars oder Berichts erzeugt.

Normalerweise arbeitet man immer mit der Standardinstanz. ... kann als Nicht-Standardinstanz mit Hilfe des Schlüsselwortes New

angelegt. Es ist mehr als eine Instanz eines Formulars oder Berichts geöffnet. Von einem Formular oder Bericht wird temporär eine Kopie erzeugt.

Page 11: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 11Access 2007 – VBA | 06.03.08 | Seite 11

Regionales Rechenzentrum für Niedersachsen

Lebenszyklus eines Objekts

... im Programm nutzen ... im Block nutzen

... beim Programmende ... beim Verlassen des Gültigkeitsbereichs

Objekt ... global definiert ... lokal definiert

... beim Programmstart ... bei der Definition... erzeugen

... zerstören

Page 12: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 12Access 2007 – VBA | 06.03.08 | Seite 12

Regionales Rechenzentrum für Niedersachsen

Implementierung in VBA

Objekt

Dim frm As Form ' InstanzSet frm = Form_frmKunde

... erzeugen

frm.Move 0, 0, 1000, 1000 frm.Visible = True

Set frm = Nothing' Speicher wird automatisch nach dem ' Verlassen der Prozedur freigegeben.... zerstören

Page 13: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 13Access 2007 – VBA | 06.03.08 | Seite 13

Regionales Rechenzentrum für Niedersachsen

Deklaration von Objektvariablen

Dim objectFrm As Form

Wer kann auf die Variable zugreifen?

Der Variablenname ist frei wählbar. Die Bezeichnung sollte aber die Funktion der Objektvariablen erläutern.

Mit dem Schlüsselwort As wird die Typbezeichnung eingeleitet.Als Datentypen werden Objektklassen genutzt. Hier wird zum Beispiel die Objektklasse für geöffnete Forms genutzt.

Page 14: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 14Access 2007 – VBA | 06.03.08 | Seite 14

Regionales Rechenzentrum für Niedersachsen

Standardinstanz zuweisen

Dim frm As Form

Set frm = Form_frmKunde

Set (setze) frm (Objektvariable) auf den Wert (=) Form_frmKunde. Einer Objektvariablen kann nicht mit Hilfe eines Gleichheitszeichens ein

Wert zugewiesen werden. Der Objektvariablen wird ein Verweis auf ein bestimmte Objekt

übergeben. Das Objekt muss VBA bekannt sein. Es muss existieren.

Page 15: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 15Access 2007 – VBA | 06.03.08 | Seite 15

Regionales Rechenzentrum für Niedersachsen

Nicht-Standardinstanz zuweisen

Dim frmKopie As Form

Set frmKopie = New Form_frmKunde

New erzeugt automatisch eine neue Instanz von einem Formular. Es wird eine Nicht-Standardinstanz erzeugt. Die Kopie ist unabhängig vom Original. Beide Instanzen können zum

Beispiel unterschiedliche Datensätze für eine Vergleich anzeigen.

Page 16: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 16Access 2007 – VBA | 06.03.08 | Seite 16

Regionales Rechenzentrum für Niedersachsen

Variant - Typ

Dim frm As Object

Set frm = New Form_frmKunde

Der Objekttyp Object kann auf jedes Objekt in Access verweisen. Es wird automatisch so viel Speicher bereitgestellt, wie das größte Objekt

benötigt. Eine Typ-Überprüfung ist nicht möglich.

Page 17: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 17Access 2007 – VBA | 06.03.08 | Seite 17

Regionales Rechenzentrum für Niedersachsen

Verweis zerstören

Dim frm As Object

Set frm = New Form_frmKunde

Set frm = Nothing

Die Objektvariable wird auf nichts (Nothing) gesetzt. Der Verweis auf ein Objekt wird zerstört. Die Nutzung eines ungültigen Verweises wird vermieden. Wichtig: Nach dem Schließen eines Objekts sollte der Verweis zerstört

werden.

Page 18: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 18Access 2007 – VBA | 06.03.08 | Seite 18

Regionales Rechenzentrum für Niedersachsen

Eigenschaften (Attribute)

... beschreiben den aktuellen Zustand eines Objekts. ... beschreiben das Aussehen eines Objekts. Eigenschaftswerte können immer gelesen werden. Einige

Eigenschaftswerte können mit Hilfe von VBA verändert werden. ... werden von der Objektvariablen mit einem Punkt getrennt. ... können genauso wie andere Variablen genutzt werden. ... eines Formulars oder Steuerelements entsprechen den

deutschsprachigen Eigenschaften im Eigenschaftenfenster auf den Registerkarten Format, Daten und Andere. In VBA werden aber die englischsprachigen Namen benötigt. Die englischsprachigen sowie die deutschsprachigen Namen werden in der Hilfe angezeigt.

Page 19: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 19Access 2007 – VBA | 06.03.08 | Seite 19

Regionales Rechenzentrum für Niedersachsen

Eigenschaften eines Textfeldes

txtBenutzer.TextAlign = 1 ' Textausrichtung txtBenutzer.Value = "Bestellung" ' Wert txtPasswort.InputMask = "Password" ' Eingabeformat txtPasswort.SetFocus ' Methode

Page 20: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 20Access 2007 – VBA | 06.03.08 | Seite 20

Regionales Rechenzentrum für Niedersachsen

Methoden

Memberfunktion, Elementfunktion ... verändern oder lesen Attribute des dazugehörigen Objekts. Die zu implementierenden Methoden ergeben sich aus den Attributen

einer Klasse und deren Nutzung. Für Formulare, Berichte und Controls sind vorgefertigte Methoden vorhanden.

... sind Prozeduren, die an ein Objekt gebunden sind. Die Gesamtheit aller Methoden kann als Schnittstelle (Interface) nach

außen bezeichnet werden. ... ermöglichen die Kommunikation mit anderen Objekten. Als Trennzeichen zwischen der Objektvariablen und der Methode wird

ein Punkt genutzt.

Page 21: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 21Access 2007 – VBA | 06.03.08 | Seite 21

Regionales Rechenzentrum für Niedersachsen

Beispiel: Formular verschieben

100, 100

0, 0

frm.Move Left:=0, Top:= 0

Page 22: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 22Access 2007 – VBA | 06.03.08 | Seite 22

Regionales Rechenzentrum für Niedersachsen

Erläuterung der Methode Move

Definition: objekt.Move left, top, width, height left ist der einzige Parameter, der übergeben werden muss. Er gibt die

Position der linken, oberen Ecke an. top gibt den Abstand des Objekts relativ zum Access-Arbeitsbereich an. width und height legen die Größe des Objekts fest.

objekt.Move Top:= 0, Width:=1000 Die Namen der Variablen in der Parameterliste werden als Schlüsselworte

genutzt. Der Operator := weist dem Schlüsselwort ein Wert zu. Vorteil: Die gesetzten Parameter sind für den Entwickler sichtbar.

Page 23: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 23Access 2007 – VBA | 06.03.08 | Seite 23

Regionales Rechenzentrum für Niedersachsen

Collections (Auflistung)

... sind eine Auflistung von Elementen, die ein und derselben Kategorie zugeordnet werden können.

... sind dynamische Felder von einer bestimmten Objektart. ... sind Behältnisse für eine Sammlung von Objekten mit bestimmten

Eigenschaften. ... sind eine Liste aller Elemente einer Objektart. Die Bezeichnung einer Collection endet immer mit s. Zum Beispiel die

Auflistung Forms enthält alle geöffneten Formulare. ... haben genauso wie Objekte Eigenschaften und Methoden. ... sind nullbasiert. Das erste Element in der Auflistung hat den Index null. Der Index der Elemente einer Collection verändert sich in Abhängigkeit

der Anzahl der Elemente. Der Index ist nicht an ein bestimmtes Element gekoppelt.

Page 24: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 24Access 2007 – VBA | 06.03.08 | Seite 24

Regionales Rechenzentrum für Niedersachsen

Beispiel: Alle geöffneten Formulare

Dim frmKunde As FormDim frmStart As FormDim count As Integer

Set frm = Form_frmKundeSet frmStart = Form_frmStart

frmKunde.Visible = TruefrmStart.Visible = True

For count = 0 To Forms.Count – 1Debug.Print Forms.Item(count).Name

Next count

Die Eigenschaft Count gibt die Anzahl der geöffneten

Formulare zurück.

Item(count) ist ein Synonym für ein Element in der Auflistung. Im

Direktfenster wird der Name des Elements ausgegeben.

Page 25: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 25Access 2007 – VBA | 06.03.08 | Seite 25

Regionales Rechenzentrum für Niedersachsen

Beispiel: Alle Formulare einer Datenbank

Dim frm As AccessObject Set frm = Application.CurrentProject.AllForms("frmTest") Debug.Print frm.Name

Application bezeichnet die aktuelle Access-Anwendung. CurrentProject ist ein Synonym für das momentan laufende Access-

Projekt. AllForms ist eine Auflistung aller Formulare in dem Access-Projekt. Jede Auflistung hat spezifische Eigenschaften und Methoden.

Page 26: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 26Access 2007 – VBA | 06.03.08 | Seite 26

Regionales Rechenzentrum für Niedersachsen

Objektmodell von Access (Ausschnitt)

Application(Aktuelle Access-Anwendung)

Forms(Formulare)

Reports(Bericht)

Screen(Aktiver Bildschirm)

DoCmd(Befehle aus Makros)

Page 27: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 27Access 2007 – VBA | 06.03.08 | Seite 27

Regionales Rechenzentrum für Niedersachsen

Hierarchischer Aufbau von Formularen

Forms Forms(0)

Forms(1)

Forms(n)

....

Controls

Properties

Controls

Properties

Page 28: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 28Access 2007 – VBA | 06.03.08 | Seite 28

Regionales Rechenzentrum für Niedersachsen

Verweise auf die Objektmodelle

.... werden mit Hilfe des Menüs Extra – Verweise im VBA-Editor gesetzt.

Suchen Sie aus der Liste die gewünschte Bibliothek aus.

Klicken Sie auf das dazugehörige Kontrollkästchen, um den Verweis für das aktuelle Projekt zu aktivieren.

Page 29: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 29Access 2007 – VBA | 06.03.08 | Seite 29

Regionales Rechenzentrum für Niedersachsen

Dialogfenster "Verweise"

Liste aller möglichen Verweise. Die aktiven Verweise stehen am Anfang der Liste. Durch einen Klick auf das Kontrollkästchen kann ein Verweis aktiviert oder deaktiviert werden.

Zu dem ausgewählten (farbig hinterlegt) Verweis wird der Pfad zu der dazugehörigen Bibliothek angezeigt.

Reihenfolge der aktiven Verweise verändern.

Page 30: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 30Access 2007 – VBA | 06.03.08 | Seite 30

Regionales Rechenzentrum für Niedersachsen

Aktive Verweise in Access

Visual Basic for Application C:\Programme\Gemeinsame Dateien\Microsoft Shared\vba\vba6\vbe6.dll ... definiert die Programmiersprache VBA.

Microsoft Access 12.0 Object Library C:\Programme\Microsoft Office\Office12\msacc.dll ... ist ein Verweis auf das Objektmodell von Access.

Microsoft Office 12.0 Access database engine Object Library C:\Programme\Microsoft Office\Office12\acedao.dll ... ersetzt die Microsoft DAO 3.x Object Library. ... stellt eine Verbindung zu Daten in Tabellen und Abfragen her.

OLE Automation C:\Windows\System32\stdole.tbl O(bject) L(inking) E(mbedding) ... ermöglicht das Bearbeiten von fremden Daten wie zum Bildern in einer

anderen Anwendung. ...ermöglicht die Nutzung eines Objektmodells aus einer anderen Anwendung.

Page 31: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 31Access 2007 – VBA | 06.03.08 | Seite 31

Regionales Rechenzentrum für Niedersachsen

Ungültige Verweise ermitteln

Dim verweis As ReferenceDim strText As String

If Application.BrokenReference ThenstrText = "Folgende Verweis sind ungültig:

For Each verweis In Application.References

If verweis.IsBroken ThenstrText = strText & " " & verweis.Name & vbCrLf

End If

Next VerweisEnd If

Wenn Bibliotheksdateien gelöscht oder verschoben

werden, wird die Eigenschaft BrokenReference der

Application true gesetzt. Der Verweis ist ungültig.

In der for-Schleife werden alle Verweise auf Gültigkeit

geprüft.

Page 32: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 32Access 2007 – VBA | 06.03.08 | Seite 32

Regionales Rechenzentrum für Niedersachsen

Objektkatalog

... wird mit Hilfe von Ansicht – Objektkatalog geöffnet. ... enthält Bibliotheken und deren Inhalte. Die verschiedenen Objekte von Access werden hierarchisch angezeigt.

Page 33: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 33Access 2007 – VBA | 06.03.08 | Seite 33

Regionales Rechenzentrum für Niedersachsen

Aufbau

Auswahl der Bibliothek.

Verschiedene Schaltflächen zum Suchen und Arbeiten in Bibliotheken.

Alle Klassen in der Bibliothek. Klassen stellen die Bücher dar.

In Abhängigkeit der ausgewählten Klasse werden Eigenschaften, Methoden und Ereignisse angezeigt.

Informationen zum ausgewählten Element.

Page 34: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 34Access 2007 – VBA | 06.03.08 | Seite 34

Regionales Rechenzentrum für Niedersachsen

Nach Klassen suchen

Wählen Sie aus dem oberen Kombinationsfeld eine Bibliothek aus. Folgende Möglichkeiten: <Alle Bibliotheken> Access durchsucht die zu Access gehörenden Bibliotheken. In der Bibliothek

werden die Formulare, Berichte und Steuerelemente definiert. DAO enthält alle Klassen, die für die Datenverbindung zu Tabellen und

Abfragen benötigt werden. stdole enthält alles zur OLE-Automation, VBA enthält die internen Klassen von Visual Basic for Application.

Geben Sie in dem darunter stehenden Kombinationsfeld ein Suchtext ein und klicken auf das Fernglas.

Anschließend werden Ihnen alle Klassen in der rechten Liste angezeigt, die das Suchmuster enthalten.

Zu jeder Klasse werden die darin enthaltenen Elemente in der linken Liste angezeigt.

Page 35: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 35Access 2007 – VBA | 06.03.08 | Seite 35

Regionales Rechenzentrum für Niedersachsen

Genutzte Symbole

Bibliothek

Module

Collections

Klassen

Konstanten

Eigenschaften

Standard-Eigenschaften

Methoden

Ereignisse

Page 36: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 36Access 2007 – VBA | 06.03.08 | Seite 36

Regionales Rechenzentrum für Niedersachsen

Makrobefehle in VBA nutzen

Mit Hilfe des Objekts DoCmd können verschiedene Aktionen wie Öffnen Formular, Datenbank schließen etc. angestoßen werden.

Alle Befehle sind englischsprachig. Einige Befehle entsprechen den deutschsprachigen Makro-Befehlen.

Folgende Makrobefehle werden in VBA nicht unterstützt: HinzufügenMenü. Warnmeldung wird mit Hilfe einer MsgBox() ausgegeben. AusführenAnwendung wird durch den Befehl Shell ersetzt. AusführenCode wird durch den Aufruf von Prozeduren etc. nicht benötigt. Tastaturbefehle werden durch SendKeys ersetzt. SetzenWert. Der Wert eines Steuerelements kann direkt in VBA gesetzt

werden. StoppAlleMakros oder StopMakro.

Eine Auflistung der der Methoden von DoCmd finden Sie in der Hilfe von VBA.

Page 37: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 37Access 2007 – VBA | 06.03.08 | Seite 37

Regionales Rechenzentrum für Niedersachsen

Beispiel

Private Sub cmdCopyPaste_Click()

If Not (IsNull(txtTextEingabe.Value)) Then txtTextEingabe.SetFocus txtTextEingabe.SelStart = markStart txtTextEingabe.SelLength = markLength DoCmd.RunCommand acCmdCopy txtTextCopy.SetFocus DoCmd.RunCommand acCmdPaste Else txtTextCopy.Value = "" End If

End Sub

Mit Hilfe von RunCommand können Befehle aus der

Menüleiste genutzt werden. In diesem Beispiel wird aus dem aktiven Steuerelement

ein Text kopiert.

... und anschließend in ein anderes aktives

Steuerelement eingefügt werden.

Page 38: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 38Access 2007 – VBA | 06.03.08 | Seite 38

Regionales Rechenzentrum für Niedersachsen

Formulare (Forms)

... zeigen Daten aus Tabellen oder Abfragen an. ... bieten eine Eingabemaske für die gesteuerte Sammlung von Daten. ... ermöglichen eine Kommunikation zwischen dem Benutzer und Access. ... in VBA:

Mit Hilfe von DoCmd können Formulare geöffnet und geschlossen werden. Mit Hilfe der Eigenschaften kann das Formular dynamisch angepasst werden. Mit Hilfe der Methoden können schreibgeschützte Eigenschaften des

Formulars verändert werden. Es sind Event-Handler vorhanden, um auf Aktionen der Nutzer zu reagieren.

Page 39: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 39Access 2007 – VBA | 06.03.08 | Seite 39

Regionales Rechenzentrum für Niedersachsen

Formular öffnen

DoCmd.OpenForm "frmKunde", _

acNormal, _

, , _

acFormReadOnly, _

acDialog

Welches Formular wird geöffnet?

Wie wird das Formular geöffnet? Hier wird das Formular in der Formularansicht geöffnet.

Die zwei Parameter zur Filterung der Daten sind nicht gesetzt.

Das Formular ist schreibgeschützt. Es wird zum Lesen der Daten geöffnet.

Wie verhält sich das Formular? Als Dialogfenster kann die Größe nicht verändert werden. Das Fenster kann nicht verschoben werden.

Page 40: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 40Access 2007 – VBA | 06.03.08 | Seite 40

Regionales Rechenzentrum für Niedersachsen

Verhalten des Formulars

acWindowNormal: Das Fenster wird, wie in den Eigenschaften festgelegt, geöffnet.

acIcon: Das Fenster wird minimiert dargestellt. Die Titelleiste des Formulars wird in der Taskleiste angezeigt.

acHidden: Das Fenster wird nicht sichtbar dargestellt. Die Eigenschaft .Visible in VBA ist auf false gesetzt.

acDialog: Die Eigenschaft Gebunden und PopUp haben den Wert true. Solange das Formular geöffnet ist, kann keine andere Aktion ausgeführt

werden. Das Formular blockiert alle anderen Aktionen. Das Formular überdeckt alle anderen Formulare. Die Größe des Formulars kann nicht verändert werden.

Page 41: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 41Access 2007 – VBA | 06.03.08 | Seite 41

Regionales Rechenzentrum für Niedersachsen

Datenmodus

acFormAdd Der Nutzer kann neue Daten eingeben. Bestehende Datensätze können nicht verändert werden.

acFormEdit Der Nutzer kann neue Daten eingeben und bestehende verändern.

acPropertySettings Der Nutzer kann nur die Eigenschaften des Formulars verändern.

acReadOnly Die Daten werden angezeigt. Sie können vom Nutzer gelesen werden. Die Daten besitzen einen Schreibschutz. Der Nutzer kann keine Daten ändern.

Page 42: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 42Access 2007 – VBA | 06.03.08 | Seite 42

Regionales Rechenzentrum für Niedersachsen

Verweis auf das aktive Formular

Screen ... beschreibt den aktuellen Bildschirm. ... bietet einen Zugriff auf die aktiven Elementen in der Access-Anwendung.

ActiveForm ... beschreibt das Formular, welches aktuell im Vordergrund des Bildschirms

angezeigt wird. ... besitzt eine farbige Titelleiste. ... hat den Fokus.

Dim frm As Form Set frm = Screen.ActiveForm

Page 43: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 43Access 2007 – VBA | 06.03.08 | Seite 43

Regionales Rechenzentrum für Niedersachsen

Me

... kann nur in einem Klassenmodulen eines Formulars oder Berichts genutzt werden.

... bezieht sich immer auf die aktuelle Instanz eines Objekts, in der der Code momentan ausgeführt wird.

... ist ein Synonym für ein Formular oder Bericht, welches an den Code gebunden ist.

Dim ctl As Control Set ctl = Me.Controls("txtTextCopy")

Page 44: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 44Access 2007 – VBA | 06.03.08 | Seite 44

Regionales Rechenzentrum für Niedersachsen

Formular schließen

Dim frm As Form Set frm = Screen.ActiveForm

Set frm = Nothing

Was wird geschlossen?

Name des Objekts. Hier wird über ein Verweis der Name ermittelt.

Das Formular wird ohne Speicherung der Daten geschlossen.

DoCmd.Close acForm, frm.Name, acSaveNo

Page 45: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 45Access 2007 – VBA | 06.03.08 | Seite 45

Regionales Rechenzentrum für Niedersachsen

Formular nach einer bestimmten Zeitspanne ...

Const spanne = 5.0Dim frm As FormDim zeit As Single Set frm = Screen.ActiveFormzeit = Timer ' Anzahl der Sekunden seit Mitternacht

Do' Die Kontrolle wird an das Betriebssystem übergeben

' Das Betriebssystem kann andere Ereignisse verarbeiten.DoEvents

Loop Until (Timer – zeit > spanne)

DoCmd.Close acForm, frm.Name, acSaveNo Set frm = Nothing

Page 46: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 46Access 2007 – VBA | 06.03.08 | Seite 46

Regionales Rechenzentrum für Niedersachsen

... mit Hilfe des Zeitgeberintervalls schließen

Sub Form_Load()' Zeitgeberintervall wird gesetzt.Me.TimerInterval = 1000

End Sub

Sub Form_Timer()' ... wird aufgerufen, wenn das Zeitgeberintervall

' abgelaufen ist.Dim frm As Form

Set frm = Me

DoCmd.Close acForm, frm.Name, acSaveNo Set frm = Nothing

Page 47: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 47Access 2007 – VBA | 06.03.08 | Seite 47

Regionales Rechenzentrum für Niedersachsen

Suche nach einem Formular

Dim strName As StringDim projekt As ObjectDim frmObjekt As AccessObject

strName = "frmKunde"' Das aktuelle Projekt...Set projekt = Application.CurrentProject' Alle geöffneten und ungeöffneten Formularefor Each frmObjekt in projekt.AllForms

If frmObjekt.Name Like strName thenDebug.Print "Das Formular ist vorhanden."

If frmObjekt.IsLoaded = True thenDebug.Print "Das Formular ist geöffnet."

End IfEnd If

Next frmObjekt

Page 48: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 48Access 2007 – VBA | 06.03.08 | Seite 48

Regionales Rechenzentrum für Niedersachsen

Aktuelle Projekt und Datenbank

Application.CurrentProject bezieht sich auf das aktuelle Projekt der Access-Anwendung. .FullName gibt den Namen und den Pfad des Projekts zurück. .Path gibt nur den Speicherort des Projekts zurück. .Name gibt den Namen des Projekts zurück. .AllForms ist eine Auflistung aller Formulare in einem Projekt. .AllReports ist eine Auflistung aller Berichte in einem Projekt.

Application.CurrentDb bezieht sich auf die aktuell geöffnete Datenbank. .Close schließt die Datenbank. .Version gibt die Version der Microsoft Access-Datebank-Engine zurück. .Name enthält die Bezeichnung der Datenbank.

Page 49: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 49Access 2007 – VBA | 06.03.08 | Seite 49

Regionales Rechenzentrum für Niedersachsen

Zugriffsmöglichkeiten auf geöffnete Formulare

Me ... bezieht sich immer auf das Objekt, an dem das Module gebunden ist. ... bezeichnet das zum Code gehörende Objekt.

Screen.ActiveForm ... bezieht sich immer auf das Formular, welches am Bildschirm im

Vordergrund liegt. ... ist ein Synonym für das aktive Formular.

Forms("frmKunde") ... bezieht sich auf die Auflistung aller geöffneten Formulare. Als Index wird der Name des Formulars genutzt.

Forms(1) ... sollte nie genutzt werden. Die Indizes sind nicht an ein bestimmtes Formular gebunden! Der Index

verändert sich in Abhängigkeit der geöffneten Formulare. Forms!frmKunde

Die Auflistung wird vom benutzerdefinierten Namen mit einem Ausrufezeichen getrennt.

Page 50: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 50Access 2007 – VBA | 06.03.08 | Seite 50

Regionales Rechenzentrum für Niedersachsen

Eigenschaften und Methoden nutzen

Beispiele: Me.Visible = true txtName = Screen.ActiveForm.Name Forms("frmKunde").Move Top:=0, Left:=0 Forms!frmKunde.SetFocus

Eigenschaften und Methoden werden immer von der Objektvariablen mit einem Punkt getrennt.

Page 51: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 51Access 2007 – VBA | 06.03.08 | Seite 51

Regionales Rechenzentrum für Niedersachsen

Formular vergrößern und verschieben

Const breite = 400Const hoehe = 200

' Die Höhe kann nur über die Bereiche eingestellt werden.Forms!frmKunde.Section(acDetail).Height = hoehe

' Die Breite eines Formulars...Forms!frmKunde.Width = breite

' Verschieben eines Formulars.' Top, Left kann nur über die Methode gesetzt werdenForms!frmKunde.Move 0, 0, breite, hoehe

Page 52: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 52Access 2007 – VBA | 06.03.08 | Seite 52

Regionales Rechenzentrum für Niedersachsen

Twips per Pixel

Tw(entieh of a) I(nch) P(oint) werden für alle Größen verwendet. Umrechnung:

1 Punkt = 20 Twips 1 cm = 567 Twips 1 Zoll = 72 Punkt = 1440 Twips

In VBA sind kein Funktionen für die Umrechnung vorhanden. Mit Hilfe der Windows API kann eine eigene Prozedur für die Umrechnung erstellt werden.

Page 53: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 53Access 2007 – VBA | 06.03.08 | Seite 53

Regionales Rechenzentrum für Niedersachsen

Bereiche eines Formulars

.Section(acHeader)

.Section(1)

.Section(acDetail)

.Section(0)

.Section(acFooter)

.Section(2)

Page 54: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 54Access 2007 – VBA | 06.03.08 | Seite 54

Regionales Rechenzentrum für Niedersachsen

Höhe eines Formulars

Win

dow

Hei

ght

Win

dow

Hei

ght

Ihsi

deH

eigh

t

Section(0).H

eight

Page 55: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 55Access 2007 – VBA | 06.03.08 | Seite 55

Regionales Rechenzentrum für Niedersachsen

Breite eines Formulars

Width

InsideWidth

WindowWidth

Page 56: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 56Access 2007 – VBA | 06.03.08 | Seite 56

Regionales Rechenzentrum für Niedersachsen

Left und Top eines Formulars

Top0, 0

Left

Page 57: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 57Access 2007 – VBA | 06.03.08 | Seite 57

Regionales Rechenzentrum für Niedersachsen

Weitere Eigenschaften und Methoden

.Visible Wenn der Wert false ist, wird der Bereich oder das gesamte Formular

ausgeblendet. Wenn der Wert true ist, wird der Bereich oder das gesamte Formular

eingeblendet. .Refresh

... aktualisiert die angezeigten Datensätze aufgrund ihrer Datenherkunft. Neue Datensätze werden nicht angezeigt.

.Repaint ... aktualisiert die Darstellung eines Formulars am Bildschirm. Berechnete Steuerelemente werden aktualisiert.

.Requery Die Datenquelle wird neu abgefragt. Neue Datensätze werden angezeigt.

.Recalc Alle berechneten Steuerelemente werden aktualisiert.

Page 58: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 58Access 2007 – VBA | 06.03.08 | Seite 58

Regionales Rechenzentrum für Niedersachsen

Steuerelemente (Controls)

... zeigen Daten in einem Formular oder Bericht an. ... werden immer in einem Container abgelegt. Ein Steuerelement kann

nie ohne Formular oder Bericht existieren. ... werden in der Auflistung Controls eines geöffneten Formulars oder

Berichts aufgelistet. Beispiele:

Textfelder zeigen Daten an. Optionsfelder gruppieren eine bestimmte Auswahl zu einem Thema. Der

Benutzer kann ein Element aus der Gruppe auswählen. Listenfelder zeigen eine Auswahl zu einem Thema in Form einer Liste an. Der

Nutzer kann ein oder mehrere Elemente auswählen. Befehlsschaltflächen starten eine Aktion.

Page 59: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 59Access 2007 – VBA | 06.03.08 | Seite 59

Regionales Rechenzentrum für Niedersachsen

Zugriffsmöglichkeiten auf Steuerelemente

txtField Das Steuerelement befindet sich in dem Formular, welches an den Code

gebunden ist. Me!txtField

In dem Formular Me befindet sich ein Steuerelement txtField. Me ist ein Synonym für das Formular, welches an den gegenwärtig ausgeführten Code gebunden ist.

Forms("frmKunde").Controls(txtField) Jedes Objekt vom Typ Form hat die Auflistung Controls. In dieser Auflistung

werden alle zu dem Objekt gehörenden Steuerelemente aufgelistet. Hier wird als Index einen Steuerelementname genutzt.

Me.Controls!txtField Benutzerdefinierte Objektnamen werden von der Auflistung mit Hilfe eines

Ausrufezeichens getrennt. Me.Controls(varName)

Als Index kann auch eine Variable genutzt werden. Die Variable hat als Wert den Namen eines Controls oder eine Ganzzahl.

Page 60: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 60Access 2007 – VBA | 06.03.08 | Seite 60

Regionales Rechenzentrum für Niedersachsen

Steuerelement-Arten

Dim ctrl As ControlFor Each ctrl In Me.Controls

If ctrl.ControlType = acTextBox Thentemp = ctrl.Name

End IfNext ctrl

Me.Controls enthält eine Auflistung aller Steuerelemente auf dem dazugehörigen Formular.

ControlType gibt die Art des Steuerelements wieder. Hier wird nach Textfeldern gesucht. Für jede Art des Steuerelements wird eine Konstante definiert.

Name gibt die Bezeichnung des Steuerelements zurück.

Page 61: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 61Access 2007 – VBA | 06.03.08 | Seite 61

Regionales Rechenzentrum für Niedersachsen

Eigenschaften oder Methoden nutzen

Beispiele: txtField.Text = 12 Me!txtField.ForeColor = RGB(255,0,0) Forms("frmKunde").Controls(txtField).Requery Me.Controls!txtField.SetFocus.

Eigenschaften und Methoden eines Steuerelements werden von der Objektvariablen mit einem Punkt getrennt.

Page 62: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 62Access 2007 – VBA | 06.03.08 | Seite 62

Regionales Rechenzentrum für Niedersachsen

Eigenschaften

Viele Steuerelemente haben folgende Eigenschaften. Name gibt die Bezeichnung des Steuerelements zurück. BackColor legt die Hintergrundfarbe des Steuerelements fest. ForeColor legt die Vordergrundfarbe des Steuerelements fest. Häufig wird

die Schriftfarbe damit festgelegt. BorderColor, BorderWidth und BorderStyle wird für die Darstellung des

Rahmens genutzt. Die Rahmenbreite kann nur eingestellt werden, wenn die Eigenschaft SpecialEffect den Wert Flach oder Schattiert sowie BorderStyle nicht auf Transparent eingestellt ist.

Height und Width legt die Höhe und Breite eines Steuerelements fest. Top und Height ermittelt die Position des Steuerelements. Visible blendet ein Steuerelement ein oder aus. Alignment richtet den Text aus. Font legt die Schriftart fest und FontSize die Schriftgröße.

Page 63: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 63Access 2007 – VBA | 06.03.08 | Seite 63

Regionales Rechenzentrum für Niedersachsen

Methoden

Move positioniert Steuerelement auf dem Formular. Requery fragt die Datenquelle ab und aktualisiert die Daten. SetFocus übergibt den Fokus an ein Steuerelement. Das Steuerelement

ist aktiv. Es hat die Einfügemarke.

Page 64: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 64Access 2007 – VBA | 06.03.08 | Seite 64

Regionales Rechenzentrum für Niedersachsen

Farben setzen

Mit Hilfe der Funktion RGB(red, blue, green) werden den Eigenschaften ForeColor oder BackColor RGB-Farben zugewiesen.

Andere Möglichkeit: Für die Standardfarben schwarz (vbBlack), weiß (vbWhite), rot (vbRed), grün (vbGreen), gelb (vbYellow), blau (vbBlue), blaugrün (vbCyan) und magenta (vbMagenta) sind Farbkonstanten vordefiniert.

txtPlz.ForeColor = RGB(255, 0, 0)Me.Section(acDetail).BackColor = vbBlue

Page 65: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 65Access 2007 – VBA | 06.03.08 | Seite 65

Regionales Rechenzentrum für Niedersachsen

RGB-Farben

... werden für die Darstellung von Farben am Bildschirm genutzt.

Das RGB-Farbsystem addiert (mischt) Licht in verschiedenen Farben.

Jede Farbe (Rot, Grün, Blau) wird in 256 Helligkeitsstufen unterteilt. Zum Beispiel: RGB(255, 255, 255) stellt die

Farbe weiß dar. RGB(0, 0, 0) stellt die Farbe

schwarz dar. RGB(255, 255, 0) stellt die

Farbe gelb dar. Um so mehr sich eine Farbe Weiß

annährt, um so heller wird sie.

Page 66: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 66Access 2007 – VBA | 06.03.08 | Seite 66

Regionales Rechenzentrum für Niedersachsen

Gebundene und ungebundene Steuerelemente

Ungebundene Steuerelemente ... sind an keine Datenquelle gebunden. ... können feste Werte oder Werte, die durch einen Ausdruck berechnet

werden, enthalten. ... können Hilfetext oder Beschreibungen für den Nutzer enthalten.

Gebundene Steuerelemente … spiegeln immer die Daten eines Feldes aus einer Tabelle oder Abfrage

wieder. .. … sind immer mit einer Spalte aus einer Tabelle oder Abfrage verbunden. .. … filtern mit Hilfe einer SQL-Anweisung Daten aus einer Tabelle heraus.

Page 67: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 67Access 2007 – VBA | 06.03.08 | Seite 67

Regionales Rechenzentrum für Niedersachsen

Werte eines Textfeldes

.Value enthält den gespeicherten Wert des Textfeldes. .Text enthält den formatierten Text eines Steuerelements. Die

Eigenschaft kann nur genutzt werden, wenn das Textfeld den Fokus hat. Die Eigenschaft kann einen anderen Wert besitzen als .Value.

.OldValue enthält den ursprünglichen Wert eines gebundenen Textfeldes. Der Wert ist schreibgeschützt.

Page 68: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 68Access 2007 – VBA | 06.03.08 | Seite 68

Regionales Rechenzentrum für Niedersachsen

Steuerelemente aktivieren oder sperren

Falls Enabled true (wahr) ist, kann das Steuerelement den Fokus bekommen. Die Einfügemarke kann in das Steuerelement gesetzt werden.

Falls Locked true ist, können die Daten nicht bearbeitet oder gelöscht werden. Für die Daten besteht ein Schreibschutz.

Schreibschutz Abgeblendet Fokus

Enabled (Aktiviert)

Locked (Gesperrt)

True FalseTrue TrueFalse FalseFalse True

Page 69: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 69Access 2007 – VBA | 06.03.08 | Seite 69

Regionales Rechenzentrum für Niedersachsen

Zugriffsrechte für die Datensätze

Falls AllowEdits true ist, ist eine Bearbeitung der Datensätze möglich. Falls AllowDeletions true ist, können Datensätze gelöscht werden. Falls AllowAdditions true ist, können Datensätze angefügt werden. Falls DataEntry true ist, werden keine vorhandenen Datensätze

angezeigt. Es wird ein leerer Datensatz angezeigt. Es können neue Datensätze eingegeben werden.

Forms("frmKunde").AllowEdits = True

Forms("frmKunde").AllowDeletions = False

Forms("frmKunde").AllowAdditions = True

Forms("frmKunde").DataEntry = True

Page 70: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 70Access 2007 – VBA | 06.03.08 | Seite 70

Regionales Rechenzentrum für Niedersachsen

Formular mit Schreibschutz öffnen

Das Formular wird nur zum Lesen der Daten geöffnet. Die vorhandenen Daten können nicht verändert werden. Neue Daten können nicht hinzugefügt werden.

DoCmd.OpenForm "frmKunde", acNormal, _

, , _ acFormReadOnly, _

acWindowNormal

Page 71: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 71Access 2007 – VBA | 06.03.08 | Seite 71

Regionales Rechenzentrum für Niedersachsen

Ereignis (Event)

... tritt immer in Verbindung mit einem Objekt auf. ... wird vom Nutzer des Formulars oder Steuerelements ausgelöst. ... ist eine Reaktion auf eine Benutzeraktion. Beispiele für Ereignisse:

Die Größe eines Formulars wird verändert. Ein weiteres Fenster wird mit Hilfe einer Schaltfläche geöffnet. Ein Optionsfeld wird mit Hilfe der Maus aktiviert. Ein Textfeld wird nach der Eingabe von Zeichen verlassen. In ein Textfeld werden Zeichen mit Hilfe der Tastatur eingegeben. Aus einer Liste werden Elemente ausgewählt.

Page 72: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 72Access 2007 – VBA | 06.03.08 | Seite 72

Regionales Rechenzentrum für Niedersachsen

Ereignis-Gruppen in Access

Fenster- und Fokus-Ereignis: Die Größe eines Formulars wird verändert. Ein Formular wird geöffnet.

Tastatur- und Maus-Ereignis: Ein Optionsfeld wird mit Hilfe der Maus aktiviert. Es werden Zeichen in ein Textfeld eingegeben.

Daten- und Filter-Ereignisse: Die angezeigten Daten werden verändert. Ein Datensatz wird gelöscht.

Fehler-Ereignisse oder zeitabhängige Ereignisse: Nach einer bestimmten Zeitspanne wird ein Formular geschlossen.

Page 73: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 73Access 2007 – VBA | 06.03.08 | Seite 73

Regionales Rechenzentrum für Niedersachsen

Ereignisprozeduren (Event-Handler)

... fangen ein Ereignis ab. ... reagieren mit Hilfe von Anweisungen auf das ausgelöste Ereignis. ... enthalten häufig keine Anweisungen. Der Aufruf des Ereignisses bleibt

ohne Folgen. ... bestehen genauso wie selbstdefinierte Prozeduren aus einem

Prozedurenkopf und -rumpf. ... geben kein Wert zurück. ... sind immer privat. Sie können nur innerhalb des Moduls, in dem sie

definiert sind, aufgerufen werden.

Private Sub plz_BeforeUpdate (Cancel As Integer)End Sub

Private Sub Form_Load()End Sub

Page 74: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 74Access 2007 – VBA | 06.03.08 | Seite 74

Regionales Rechenzentrum für Niedersachsen

Aufbau des Prozedurkopfs

Private Sub Form_Load ()

Private Sub plz_BeforeUpdate (Cancel As Integer)

Jede Prozedur beginnt mit diesem Schlüsselwort und endet dementsprechend mit End Sub.

Der Bezeichner eines Event-Handler setzt sich aus dem Namen des Steuerelements oder Form (Formular) und dem Ereignis zusammen.

In Abhängigkeit des Ereignisses werden dem Event-Handler Informationen übergeben.

Auf ein Event-Handler kann nur innerhalb des Moduls zugegriffen werden.

Page 75: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 75Access 2007 – VBA | 06.03.08 | Seite 75

Regionales Rechenzentrum für Niedersachsen

Formular-Ereignisse

Load, wenn das Formular geöffnet wird und die Datensätze angezeigt werden.

Open, wenn das Formular geöffnet wird und bevor die Datensätze angezeigt werden.

Close, wenn das Formular geschlossen wird. Current, wenn von einem Datensatz zum anderen gesprungen wird. Der

Datensatzzeiger wird bewegt. Activate, wenn das Formular den Fokus bekommt. Deactivate, wenn das momentan aktuelle Formular den Fokus abgibt. Resize, wenn die Größe des Fensters geändert wird. Timer, sobald das ZeitgeberIntervall abgelaufen ist.

Page 76: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 76Access 2007 – VBA | 06.03.08 | Seite 76

Regionales Rechenzentrum für Niedersachsen

Beispiel

Das Ereignis Form_Load wird häufig genutzt, um das Formular anzupassen.

Beispiele: Standardeinstellungen der Elemente werden gesetzt. Steuerelemente, die in Abhängigkeit eines Ereignisses eingeblendet werden,

werden ausgeblendet.

Private Sub Form_Load() chkBananen.Value = False chkBirne.Value = False chkAepfel.Value = False txtSumme.Value = "0.00 €"End Sub

Page 77: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 77Access 2007 – VBA | 06.03.08 | Seite 77

Regionales Rechenzentrum für Niedersachsen

Öffnen eines Formulars

Open(Beim Öffnen)

Load(Beim Laden)

Resize(Bei Größenänderung)

Activate(Bei Aktivierung)

Current(Beim Anzeigen)

DoC

md.

Ope

nFor

m

Page 78: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 78Access 2007 – VBA | 06.03.08 | Seite 78

Regionales Rechenzentrum für Niedersachsen

Schließen eines Formulars

Unload(Beim Entladen)

Deactivate(Bei Deaktivierung)

Close(Beim Schließen)

DoC

md.C

lose

Page 79: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 79Access 2007 – VBA | 06.03.08 | Seite 79

Regionales Rechenzentrum für Niedersachsen

Daten- und Filter-Ereignisse des Formulars

BeforeDelConfirm und AfterDelConfirm werden durch das Löschen eines Datensatzes ausgelöst, aber bevor oder nach dem Anzeigen der Warnmeldung.

Delete wird ausgelöst, wenn ein Datensatz gelöscht wird. Das Ereignis entspricht der Aktion Datensatz löschen.

BeforeUpdate und AfterUpdate werden vor oder nach der Aktualisierung der Daten ausgelöst.

Dirty und DataChange bei Änderungen an den Daten.

Page 80: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 80Access 2007 – VBA | 06.03.08 | Seite 80

Regionales Rechenzentrum für Niedersachsen

Dateneingabe und -speicherung

BeforeUpdate(Vor Aktualisierung)

AfterUpdate(Nach Aktualisierung)

AfterInsert(Nach Eingabe)

Current(Beim Anzeigen)

Daten validieren, prüfen

Datensatz speichern

Page 81: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 81Access 2007 – VBA | 06.03.08 | Seite 81

Regionales Rechenzentrum für Niedersachsen

Löschbestätigung anpassen

Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)

Const strClear As String = "Möchten Sie den Datensatz löschen?"Dim result As VbMsgBoxResult

result = MsgBox(strClear, vbYesNo + vbCritical, _ "Datensatz löschen")

if result = vbNo ThenCancel = True

End if

End SubDie Löschung des Datensatzes wird

abgebrochen.

Page 82: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 82Access 2007 – VBA | 06.03.08 | Seite 82

Regionales Rechenzentrum für Niedersachsen

Ereignisse von Steuerelementen

BeforeUpdate wird ausgelöst, wenn ein Datensatz geändert wurde, aber noch nicht gespeichert wurde.

AfterUpdate wird ausgelöst, wenn ein Datensatz geändert wurde und in der Datenbank gespeichert wurde.

Change wird ausgelöst, wenn der Inhalt des Steuerelements geändert wird.

Enter wird ausgelöst, wenn in das Steuerelement hineingegangen wird. Exit wird ausgelöst, wenn das Steuerelement verlassen wird.

Page 83: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 83Access 2007 – VBA | 06.03.08 | Seite 83

Regionales Rechenzentrum für Niedersachsen

Steuerelemente betreten und verlassen

Enter(Beim Hingehen)

GotFocus(Bei Fokuserhalt)

Exit(Beim Verlassen)

LostFocus(Bei Fokusverlust)

Page 84: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 84Access 2007 – VBA | 06.03.08 | Seite 84

Regionales Rechenzentrum für Niedersachsen

Auswertung eines Optionsfeldes

Private Sub fraAmpel_AfterUpdate() Select Case fraAmpel.Value Case 1 rectFarbe.BackColor = RGB(255, 0, 0) Case 2 rectFarbe.BackColor = RGB(0, 255, 0) Case 3 rectFarbe.BackColor = RGB(255, 200, 0) Case Else rectFarbe.BackColor = RGB(0, 0, 0) End Select Me.RefreshEnd Sub

Page 85: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 85Access 2007 – VBA | 06.03.08 | Seite 85

Regionales Rechenzentrum für Niedersachsen

Ziffern aus einem Textfeld filtern

Private Sub fraWaehrung_AfterUpdate() Const komma As String = "," Const punkt As String = "." Dim betrag As String Dim curBetrag As Currency betrag = txtGeld.Value ' Problem: Mehrere Kommatas If InStr(betrag, komma) Then betrag = Replace(betrag, komma, punkt) End If ' Problem: Erstes Zeichen ist ein Buchstaben... curBetrag = Val(betrag) 'Besser: Nach der Eingabe wird jedes Zeichen überprüft

Page 86: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 86Access 2007 – VBA | 06.03.08 | Seite 86

Regionales Rechenzentrum für Niedersachsen

Daten formatieren

Private Sub fraWaehrung_AfterUpdate() Dim betrag As String Dim curBetrag As Currency Dim sumBetrag As Currency betrag = txtGeld.Value If IsNumeric(betrag) Then curBetrag = CCur(betrag) Select Case fraWaehrung Case 1: sumBetrag = curBetrag * 0.7992 txtnewGeld.Value = Format$(sumBetrag * 1000, "0\.000 £") Case 2: sumBetrag = curBetrag * 7.4576 txtnewGeld.Value = Format$(sumBetrag * 1000, "0\.000 DKK") Case 3: sumBetrag = curBetrag * 3.3486 txtnewGeld.Value = Format$(sumBetrag * 1000, "0\.000 PLN") End Select Else txtnewGeld.Value = "Falsche Eingabe" End If

Page 87: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 87Access 2007 – VBA | 06.03.08 | Seite 87

Regionales Rechenzentrum für Niedersachsen

Tastatur- und Maus-Ereignisse

KeyDown, wenn die Taste gedrückt wird. KeyPress, wenn die Taste gehalten wird. KeyUp, wenn die Taste losgelassen wird. Click, wenn auf eine Schaltfläche etc. mit der Maus geklickt wird. MouseDown, wenn die Maustaste gedrückt wird. MouseUp, wenn die Maustaste losgelassen wird. MouseMove, wenn der Maus bewegt wird. Falls die Eigenschaft Me.KeyPreview = True ist, werden

Tastatureingaben zuerst vom Formular empfangen und dann an das aktive Steuerelement weitergeleitet. Bei der Standardeinstellung False empfängt nur das aktive Steuerelement die Tastatureingaben.

Page 88: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 88Access 2007 – VBA | 06.03.08 | Seite 88

Regionales Rechenzentrum für Niedersachsen

Reihenfolge der Tastatur-Ereignisse

KeyDown(Bei Taste Ab)

KeyPress(Bei Taste)

KeyUp(Bei Taste Auf)

Page 89: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 89Access 2007 – VBA | 06.03.08 | Seite 89

Regionales Rechenzentrum für Niedersachsen

Beispiel: KeyPress

Private Sub plz_KeyPress(KeyAscii As Integer)

If (KeyAscii < 48) Or (KeyAscii > 57) ThenKeyAscii = 0

End If

End Sub

Jedes ANSI-Zeichen wird mit Hilfe einer Ganzzahl codiert. Diese Ganzzahl kann für die Überprüfung der eingegebenen Zeichen

genutzt werden. Falls das eingegebene Zeichen keine Ziffer ist, wird das Zeichen mit der

Anweisung KeyAscii = 0 unterdrückt.

Page 90: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 90Access 2007 – VBA | 06.03.08 | Seite 90

Regionales Rechenzentrum für Niedersachsen

ANSI-Zeichen; 0 bis 125

Page 91: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 91Access 2007 – VBA | 06.03.08 | Seite 91

Regionales Rechenzentrum für Niedersachsen

ANSI-Zeichen; 126 bis 255

Page 92: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 92Access 2007 – VBA | 06.03.08 | Seite 92

Regionales Rechenzentrum für Niedersachsen

Beispiel: KeyUp

Private Sub plz_KeyUp(KeyCode As Integer, Shift As Integer)

If (KeyCode < 48) Or (KeyCode > 57) ThenKeyCode = 0

End If

End Sub

Jedes ANSI-Zeichen wird mit einen virtuellen Tastencode von Windows versehen. Das Alphabet sowie die Ziffern haben die gleiche Codierung wie in der ANSI-

Tabelle. Zusätzlich können Funktions- und Navigationstasten abgefragt werden.

Der Parameters KeyCode enthält die Codierung des Zeichens. Shift: Sind die Tasten <UMSCHALT>, <STRG> oder <ALT> mit einer

anderen Taste gedrückt wurden?

Page 93: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 93Access 2007 – VBA | 06.03.08 | Seite 93

Regionales Rechenzentrum für Niedersachsen

Focus setzen

With txtGedicht.Valueautor = Instr(.Value, "Autor")

if autor Then.SetFocus.SelStart = autor - 1

End ifEnd With

Mit Hilfe von .SetFocus bekommt das angegebene Steuerelement den Fokus.

Das Steuerelement wird aktiv. In einem Textfeld wird die Einfügemarke angezeigt.

Page 94: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 94Access 2007 – VBA | 06.03.08 | Seite 94

Regionales Rechenzentrum für Niedersachsen

Einfügemarke in einem Textfeld setzen

With txtGedicht.Valueautor = Instr(.Value, "Autor")

if autor Then.SetFocus.SelStart = autor - 1

End ifEnd With

.SelStart setzt die Einfügemarke an eine bestimmte Position. .SelStart = 0 setzt die Einfügemarke an den Anfang eines Textes. .SelStart = Len(text) setzt die Einfügemarke an das Ende des

Textes. In diesem Beispiel wird die Einfügemarke in Abhängigkeit der Position des

Suchtextes gesetzt.

Page 95: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 95Access 2007 – VBA | 06.03.08 | Seite 95

Regionales Rechenzentrum für Niedersachsen

Markierter Text

With txtGedicht.Valueautor = Instr(.Value, "Autor")

if autor Then.SetFocus.SelLength = Len("Ringelnatz")temp = .SelText

End ifEnd With

.SelLength markiert eine bestimmte Anzahl von Zeichen ab der Einfügemarke. Falls der Nutzer Text markiert hat, wird die Anzahl der markierten Zeichen zurück gegeben.

.SelText enthält die markierten Zeichen.

Page 96: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 96Access 2007 – VBA | 06.03.08 | Seite 96

Regionales Rechenzentrum für Niedersachsen

Kontrollkästchen

... ermöglichen eine Mehrfach-Auswahl aus einer Gruppe von Möglichkeiten. Anforderung von Informationsmaterial. Bestellung von Waren.

... werden als Quadrate dargestellt. Rechts vom Quadrat befindet sich ein Bezeichnungsfeld, welches die Auswahlmöglichkeit beschreibt.

... arbeiten wie ein Schalter. Wenn ein Kontrollkästchen aktiv ist, wird es mit einem Mausklick deaktiviert und umgekehrt.

Ein Häkchen im Quadrat kennzeichnet ein aktives Kontrollkästchen. .Value gibt True (aktiv) oder False (deaktiv) zurück.

Page 97: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 97Access 2007 – VBA | 06.03.08 | Seite 97

Regionales Rechenzentrum für Niedersachsen

Kontrollkästchen abfragen

If chkBananen.Value = True Then ergebnis = ergebnis + 1.99End If If chkBirne.Value = True Then ergebnis = ergebnis + 2.99End If If chkAepfel.Value = True Then ergebnis = ergebnis + 2.33End If

Page 98: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 98Access 2007 – VBA | 06.03.08 | Seite 98

Regionales Rechenzentrum für Niedersachsen

Optionsgruppen

Der Nutzer kann eine Möglichkeit aus vielen wählen. Beispiel: Getränkeautomat. Kleidergrößen für einen bestimmten Artikel.

... bestehen aus Optionsfeldern, die als runde Kreise dargestellt werden. Rechts vom Quadrat befindet sich ein Bezeichnungsfeld, welches die Auswahlmöglichkeit beschreibt.

Falls ein Optionsfeld in einer Gruppe aktiviert wird, werden alle anderen Optionsfelder deaktiviert. Es kann immer nur eine Möglichkeit aus einer Gruppe ausgewählt werden.

Ein aktives Optionsfeld wird durch einen schwarzen Kreis im Kreis gekennzeichnet.

.Value der Optionsgruppe gibt eine Ganzzahl zurück, die das aktive Optionsfeld eindeutig identifiziert.

Page 99: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 99Access 2007 – VBA | 06.03.08 | Seite 99

Regionales Rechenzentrum für Niedersachsen

Optionsgruppe abfragen

Select Case fraWaehrung Case 1: sumBetrag = curBetrag * 0.7992 txtnewGeld.Value = Format$(sumBetrag * 1000, "0\.000 £") Case 2: sumBetrag = curBetrag * 7.4576 txtnewGeld.Value = Format$(sumBetrag * 1000, "0\.000 DKK") Case 3: sumBetrag = curBetrag * 3.3486 txtnewGeld.Value = Format$(sumBetrag * 1000, "0\.000 PLN")End Select

Page 100: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 100Access 2007 – VBA | 06.03.08 | Seite 100

Regionales Rechenzentrum für Niedersachsen

.Value

Ein Klick auf ein Optionsfeld innerhalb einer Gruppe löst das OnClick-Ereignis der Optionsgruppe aus.

OptionValue ist eine Eigenschaft des Optionsfeldes. Die Eigenschaft enthält einen Integer-Wert, der das Optionsfeld eindeutig identifiziert.

Value ist eine Eigenschaft der Optionsgruppe. Die Eigenschaft enthält die ID des aktiven Optionsfeldes. Der Eigenschaft wird der Wert in der Eigenschaft OptionValue eines Optionsfeldes übergeben.

Page 101: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 101Access 2007 – VBA | 06.03.08 | Seite 101

Regionales Rechenzentrum für Niedersachsen

Listenfelder

... bestehen aus mehreren Zeilen von Elementen. ... können mehrspaltig sein. ... ermöglichen eine Auswahl aus einer großen Anzahl von Möglichkeiten. ... erlauben eine Mehrfachauswahl. Das Auswählen von mehreren

Elementen ist aber für viele Nutzer ungewöhnlich und führt zur Verwirrung.

Page 102: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 102Access 2007 – VBA | 06.03.08 | Seite 102

Regionales Rechenzentrum für Niedersachsen

Eigenschaften der Spalten und Elemente

With lstKleidung.ColumnCount = 1.ColumnWidths = "2 cm".AllowValueListEdits = False.BoundColumn = 1

End With

ColumnCount: Aus wie vielen Spalten besteht das Listenfeld? ColumnWidths: Wie groß ist jede Spalte? Die Angabe "0cm; 2 cm"

blendet die erste Spalte aus und die zweite Spalte ist zwei Zentimeter breit.

BoundColumn bezeichnet die gebundene Spalte. Hier wird der Wert der ersten Spalte der markierten Zeile gespeichert.

AllowValueListEdits sperrt das Editieren von Listenelementen.

Page 103: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 103Access 2007 – VBA | 06.03.08 | Seite 103

Regionales Rechenzentrum für Niedersachsen

Datenquelle: Wertliste

With lstKleidung.RowSourceType = "Value List".RowSource = "Pullover; Bluse; Hose"

End With

Die Art der angezeigten Daten wird durch RowSourceType festgelegt. Hier wird eine Wertliste genutzt. Das heißt, die Daten kommen nicht aus einer Tabelle oder Abfrage, sondern werden direkt vom Entwickler eingegeben.

RowSource legt die Daten in Abhängigkeit von RowSourceType fest.. Hier wird eine Liste von Werten in der Formularansicht angezeigt. Die einzelnen Elemente der Liste werden durch das Semikolon getrennt.

Page 104: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 104Access 2007 – VBA | 06.03.08 | Seite 104

Regionales Rechenzentrum für Niedersachsen

Daten hinzufügen

With lstKleidung.RowSourceType = "Value List".RowSource = "".AddItem "Pullover".AddItem "Hemd", .ListCount - 1

End With

Voraussetzung: Die Datenquelle muss eine Wertliste sein. Die Datenquelle wird geleert (.RowSource = ""). Anschließend wird ein Element an das Ende der Liste eingefügt

(.AddItem "Pullover"). Der Methode kann auch ein Index übergeben bekommen

(.AddItem "Hemd", .ListCount - 1). Der Index legt die Zeile fest, an der das neue Element eingefügt wird. Alle vorhandenen Elemente werden ab dieser Position um eine Zeile nach unten verschoben.

Page 105: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 105Access 2007 – VBA | 06.03.08 | Seite 105

Regionales Rechenzentrum für Niedersachsen

Daten in mehrspaltigen Listen hinzufügen

With lstKleidung.ColumnCount = 1.ColumnWidths = "2 cm; 3cm".AllowValueListEdits = False.BoundColumn = 1.RowSourceType = "Value List".RowSource = "".AddItem "Pullover;Baumwolle".AddItem "Pullover;Mischgewebe"

End With

Die verschiedenen Listenelemente werden durch ein Semikolon getrennt.

Page 106: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 106Access 2007 – VBA | 06.03.08 | Seite 106

Regionales Rechenzentrum für Niedersachsen

Ausgewähltes Element löschen

With lstKleidung.RemoveItem(.Column(.BoundColumn – 1, .ListIndex).RemoveItem(.ListCount - 1)

End With

RemoveItem ... löscht den angegebenen Wert und damit das Element aus der Liste. In

diesem Beispiel wird der Wert aus der gebundenen Spalte in der markierten Zeile für das Löschen des Listenelements genutzt. ListIndex gibt die Zeile des ausgewählten Elements zurück.

... löscht in Abhängigkeit des Index ein Listenelement. In diesem Beispiel wird in Abhängigkeit der Anzahl (.ListCount) das letzte Element in der Liste gelöscht.

... kann nur Elemente aus einer Wertliste löschen.

Page 107: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 107Access 2007 – VBA | 06.03.08 | Seite 107

Regionales Rechenzentrum für Niedersachsen

Alle Elemente löschen

With lstKleidungDo While .ListCount > 0

.RemoveItem(0)Loop

End With

Es wird immer das erste Element gelöscht. Der Index des letzten Elements würde sich in Abhängigkeit der Anzahl der Elemente immer verändern.

Das erste Element wird so lange gelöscht bis die Anzahl der Elemente gleich null ist.

Page 108: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 108Access 2007 – VBA | 06.03.08 | Seite 108

Regionales Rechenzentrum für Niedersachsen

Daten aus einer Tabelle

With lstKleidung.ColumnCount = 2.ColumnWidths = "1cm; 2cm".AllowValueListEdits = False.BoundColumn = 1.RowSourceType = "Table/Query".RowSource = "tblKleidung"

End With

Als Grundlage wird in dem Beispiel eine Tabelle genutzt. RowSourceType wird dementsprechend angepasst.

RowSource enthält den Namen einer Tabelle oder Abfrage als String.

Page 109: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 109Access 2007 – VBA | 06.03.08 | Seite 109

Regionales Rechenzentrum für Niedersachsen

Ausflug zu SQL (Structured Query Language)

Strukturierte Abfragesprache für relationale Datenbanken. Datendefinition, -manipulation, -abfrage. ... definiert Kriterien, um nach Daten zu suchen. ... kann eine Menge von Datensätze automatisch aktualisieren oder

löschen. ... besteht aus sehr wenigen Kommandos, sehr vielen Schlüsselwörter

und einfachen Funktionen. In SQL sind keine Schleifen, bedingte Anweisungen oder die Nutzung von

Variablen implementiert.

Page 110: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 110Access 2007 – VBA | 06.03.08 | Seite 110

Regionales Rechenzentrum für Niedersachsen

Werte in der Tabelle ansehen

Durch das Sternchen werden alle Datensätze aus einer Tabelle angezeigt. SELECT (Wähle aus, Selektierte) alle FROM (Wo?, von) tabelle.

SELECT * FROM tabellenname

Page 111: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 111Access 2007 – VBA | 06.03.08 | Seite 111

Regionales Rechenzentrum für Niedersachsen

Bestimmte Spalten auswählen

Das Sternchen kann durch Spaltennamen in der Tabelle ersetzt werden. Es werden nur die Daten in den angegebenen Spalten angezeigt. Die Spaltennamen

... werden durch ein Kommata getrennt. ... müssen in der angegebenen Tabelle vorkommen. Andernfalls wird ein

Fehler angezeigt. Die Reihenfolge der Spaltennamen spielt keine Rolle.

SELECT datenfeld1, datenfeld2, ... FROM tabellenname

Page 112: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 112Access 2007 – VBA | 06.03.08 | Seite 112

Regionales Rechenzentrum für Niedersachsen

Daten sortieren

Hier werden die Daten sortiert. ... ORDER BY datenfeld ASC.

ASC entspricht einer aufsteigenden Sortierung (A bis Z und 0 bis 9). ... ist die Standardsortierung.

... ORDER BY datenfeld DESC. DESC entspricht einer absteigenden Sortierung (Z bis A und 9 bis 0).

Es kann mit Hilfe von ORDER BY feld1, feld2 mehrere Felder sortiert werden. Die Daten werden zuerst nach feld1 sortiert und anschließend nach feld2.

SELECT * FROM tabellenname ORDER BY datenfeld

Page 113: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 113Access 2007 – VBA | 06.03.08 | Seite 113

Regionales Rechenzentrum für Niedersachsen

SQL als Datenquelle in Listen nutzen

Dim sqlString As StringsqlString = "SELECT * FROM tblKleidung"sqlString = sqlString & " ORDER BY Kleidung"With lstKleidung

.ColumnCount = 2

.ColumnWidths = "0cm; 2cm"

.AllowValueListEdits = False

.BoundColumn = 1

.RowSourceType = "Table/Query"

.RowSource = sqlStringEnd With ... entspricht der SQL-Ansicht

einer Abfrage. Jede Abfrage in Access wird intern in SQL

gespeichert.

Page 114: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 114Access 2007 – VBA | 06.03.08 | Seite 114

Regionales Rechenzentrum für Niedersachsen

Auswahl der Elemente einschränken

Dim sqlString As StringsqlString = "SELECT * FROM tblKleidung"sqlString = " WHERE Kleidung LIKE 'H*'"sqlString = sqlString & " ORDER BY Kleidung"With lstKleidung

.ColumnCount = 2

.ColumnWidths = "0cm; 2cm"

.AllowValueListEdits = False

.BoundColumn = 1

.RowSourceType = "Table/Query"

.RowSource = sqlStringEnd With

WHERE leitet die Bedingung ein. Die

Bedingung steht immer im Anschluss an der Auswahl der

Felder. Die Bedingung werden ähnlich wie in der Zeile Kriterien in der Abfrage gebildet.

Page 115: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 115Access 2007 – VBA | 06.03.08 | Seite 115

Regionales Rechenzentrum für Niedersachsen

Listenelemente

liste.Column(0) gibt den Wert in der ersten Spalte der markierten Zeile wieder. Die erste Spalten hat den Index 0.

liste.Column(1, 2) gibt den Wert in der zweiten Spalte der dritten Zeile wieder. Die erste Zeile hat den Index 0.

Falls der Spalten- oder Zeilenindex der maximalen Anzahl der Spalten oder Zeilen überschreitet, wird keine Fehlermeldung ausgegeben. Der Rückgabewert ist null.

Mit Hilfe von liste.ColumnCount() kann die Anzahl der Spalten ermittelt werden.

Mit Hilfe von liste.ListCount() kann die Anzahl der Zeilen ermittelt werden.

Page 116: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 116Access 2007 – VBA | 06.03.08 | Seite 116

Regionales Rechenzentrum für Niedersachsen

Ausgewähltes Element

auswahl = lstKleidung.Valueauswahl = lstKleidung.Column(1, lstKleidung.ListIndex)

.Value liefert den Wert der gebundenen Spalte der markierten Zeile. .ListIndex liefert den Index der ausgewählten Zeile. Beide Eigenschaften können nur bei einer Auswahl von einem Element

genutzt werden.

Page 117: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 117Access 2007 – VBA | 06.03.08 | Seite 117

Regionales Rechenzentrum für Niedersachsen

Ausgewähltes Element

With lstKleidungFor count = 0 To .ListCount – 1

If .Selected(count)auswahl = .Column(.BoundColumn – 1, count)Exit For

End IfNext count

End With

Die Liste wird vollständig durchlaufen. Mit Hilfe von .Selected wird überprüft, ob die Zeile markiert ist.

Falls die Zeile markiert ist, wird die gebundene Spalte gespeichert und die Schleife verlassen.

Falls mehr als ein Element ausgewählt werden kann, darf die Schleife nicht vorzeitig abgebrochen werden.

Page 118: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 118Access 2007 – VBA | 06.03.08 | Seite 118

Regionales Rechenzentrum für Niedersachsen

Kombinationsfelder

... sind eine Kombination aus einem Textfeld und einem Listenfeld. Das Textfeld ist sichtbar. Das Listenfeld wird mit dem Pfeil nach unten am rechten Rand des Textfeldes

geöffnet. Der Nutzer kann

... Elemente aus der Liste auswählen. ... Werte in das Textfeld eingeben.

Das ausgewählte Element wird im Textfeld angezeigt.

Page 119: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 119Access 2007 – VBA | 06.03.08 | Seite 119

Regionales Rechenzentrum für Niedersachsen

Textfeld leeren und Liste automatisch öffnen

With cmbMitarbeiterNew

.Value = ""

.SetFocus

.DropdownEnd With

Das Textfeld wird geleert. Es ist kein Listenelement markiert. Der eingegebene Text wird entfernt.

Die Liste des Kombinationsfeldes wird automatisch geöffnet.

Page 120: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 120Access 2007 – VBA | 06.03.08 | Seite 120

Regionales Rechenzentrum für Niedersachsen

With nutzen

Private Sub Form_Load() Dim sqlSource As String sqlSource = "SELECT [tblGroesse].[IDGroesse], " sqlSource = sqlSource & "[tblGroesse].[groesse] " sqlSource = sqlSource & "FROM tblGroesse " sqlSource = sqlSource & " ORDER BY [groesse]" With cboGroesse .RowSourceType = "Table/Query" .RowSource = sqlSource .ColumnCount = 2 .ColumnWidths = "0cm; 2cm" .BoundColumn = 1 .LimitToList = True .AllowValueListEdits = False End WithEnd Sub

Page 121: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 121Access 2007 – VBA | 06.03.08 | Seite 121

Regionales Rechenzentrum für Niedersachsen

Bearbeitung der Listenelemente sperren

LimitToList beschränkt die Eingabe in das Textfeld nur auf Elemente, die in der Liste vorkommen. Falls Text eingegeben wird, der nicht mit einem Listenelement übereinstimmt, wird eine Fehlermeldung ausgegeben.

AllowValueListEdits erlaubt die Bearbeitung vorhandener Listenelemente. Voraussetzung: Als Datenquelle wird eine Wertliste genutzt.

Mit Hilfe von ListItemsEditForm wird ein Formular zur Speicherung und Bearbeitung von nicht, in der Liste vorhandenen, Elementen angegeben. Die Quelle der Liste muss eine Wertliste sein.

Page 122: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 122Access 2007 – VBA | 06.03.08 | Seite 122

Regionales Rechenzentrum für Niedersachsen

Daten im Textfeld nicht in der Tabelle vorhanden

Private Sub cboGroesse_NotInList(NewData As String, Response As Integer) Dim strError As String Dim result As VbMsgBoxResult Dim count As Integer Dim element As String strError = "Der Wert ist nicht in der Liste vorhanden." strError = strError & vbCrLf & "Möchten Sie den Wert übernehmen?" result = MsgBox(strError, vbInformation + vbYesNo) If result = vbNo Then MsgBox "Bitte wählen Sie ein Element aus der Liste aus" cboGroesse.Text = "" 'Textfeld leeren Response = acDataErrContiune 'Standard-Meldung unterdrücken Else DoCmd.SetWarnings False 'Warnmeldungen ausstellen DoCmd.RunSQL "INSERT INTO tblGroesse (groesse) " & _ "VALUES (" & NewData & ");" DoCmd.SetWarnings True Response = acDataErrAdded 'Standard-Meldung unterdrücken

'Liste automatisch aktualisieren End If End Sub

Page 123: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | 11.12.08 | Folie 123Access 2007 – VBA | 06.03.08 | Seite 123

Regionales Rechenzentrum für Niedersachsen

SQL-Anweisung "Einfügen"

INSERT INTO tabellenname(Spaltenname, Spaltenname, ...)

VALUES (Wert1, Wert2, ...);

In welche Tabelle sollen die Daten eingefügt werden?

Liste von Spaltennamen, in der die Daten abgelegt werden. Die Listenelemente werden durch Kommata getrennt.

Mit welchen Werten werden die Spalten belegt?

Werte <-> Spalten.

Page 124: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 124Access 2007 – VBA | 06.03.08 | Seite 124

Regionales Rechenzentrum für Niedersachsen

Mauszeiger

Mit Hilfe von Screen.MousePointer können folgende Icons genutzt werden: 0 Standardeinstellung. 1 Auswahlpfeil. 3 Einfügemarke. 7 Vertikale Größe ändern. 8 Horizontale Größe ändern. 11 Sanduhr.

DoCmd.Hourglass blendet die Sanduhr als Mauszeiger ein oder aus.

Screen.MousePointer = 11DoCmd.Hourglass = True...Screen.MousePointer = 0DoCmd.Hourglass = False

Page 125: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 125Access 2007 – VBA | 06.03.08 | Seite 125

Regionales Rechenzentrum für Niedersachsen

Bericht (Report)

... haben folgende Aufgaben: Ausdruck von Informationen in Listenform. Präsentation von Daten mit Hilfe von Diagrammen etc. Serien- und Etikettendruck.

... bestehen aus Bezeichnungsfeldern und Textfeldern. ... haben sehr viele grafische Eigenchaften. Die Daten in einem Bericht

... werden häufig als Liste dargestellt. ... können vom Nutzer nicht verändert werden. ... können berechnet werden. ... können nach bestimmten Kriterien sortiert und gruppiert werden.

... nutzen als Grundlage immer eine Tabelle oder Abfrage. ... haben viele Eigenschaften und Methoden, die auch Formulare besitzen.

Page 126: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 126Access 2007 – VBA | 06.03.08 | Seite 126

Regionales Rechenzentrum für Niedersachsen

Zugriffsmöglichkeiten auf geöffnete Formulare

Me ... bezieht sich immer auf das Objekt, an dem das Module gebunden ist. ... bezeichnet das zum Code gehörende Objekt.

Screen.ActiveReport ... bezieht sich immer auf den Bericht, welcher am Bildschirm im Vordergrund

liegt. ... ist ein Synonym für den aktiven Bericht.

Reports("repListeKunde") ... bezieht sich auf die Auflistung aller geöffneten Berichte. Als Index wird der Name des Berichts genutzt.

Reports(1) ... sollte nie genutzt werden. Die Indizes sind nicht an einen bestimmten Bericht gebunden! Der Index

verändert sich in Abhängigkeit der geöffneten Berichte. Reports!repListeKunde

Die Auflistung wird vom benutzerdefinierten Namen mit einem Ausrufezeichen getrennt.

Page 127: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 127Access 2007 – VBA | 06.03.08 | Seite 127

Regionales Rechenzentrum für Niedersachsen

Eigenschaften und Methoden nutzen

Beispiele: Me.Visible = true txtName = Screen.ActiveReport.Name Reports("repListeKunde").Move Top:=0, Left:=0 Reports!repListeKunde.SetFocus

Eigenschaften und Methoden werden immer von der Objektvariablen mit einem Punkt getrennt.

Page 128: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 128Access 2007 – VBA | 06.03.08 | Seite 128

Regionales Rechenzentrum für Niedersachsen

Bericht öffnen

DoCmd.OpenReport "repKunde", _

acViewLayout, _

, , _

acWindowNormal

Welcher Bericht wird geöffnet?

In welcher Ansicht wird der Report geöffnet? Hier wird die Layout-Ansicht genutzt.

Die zwei Parameter zur Filterung der Daten sind nicht gesetzt.

Wie wird der Bericht geöffnet?Wie verhält sich der Bericht?

Page 129: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 129Access 2007 – VBA | 06.03.08 | Seite 129

Regionales Rechenzentrum für Niedersachsen

Verhalten des Formulars

acWindowNormal: Der Bericht wird, wie in den Eigenschaften festgelegt, geöffnet.

acIcon: Das Fenster wird minimiert dargestellt. Die Titelleiste des Berichts wird in der Taskleiste angezeigt.

acHidden: Der Bericht wird nicht sichtbar dargestellt. Die Eigenschaft .Visible in VBA ist auf false gesetzt.

acDialog: Die Eigenschaft Gebunden und PopUp haben den Wert true. Solange der Bericht geöffnet ist, kann keine andere Aktion ausgeführt werden.

Der Bericht blockiert alle anderen Aktionen. Der Bericht überdeckt alle anderen Objekte der Datenbank. Die Größe des Berichts kann nicht verändert werden.

Page 130: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 130Access 2007 – VBA | 06.03.08 | Seite 130

Regionales Rechenzentrum für Niedersachsen

Ansichten eines Berichts

acViewDesign, um den Bericht in der Entwurfsansicht zu öffnen. acViewLayout, um den Bericht in der Layoutansicht zu öffnen. Die

Layoutansicht bietet eine Vorschau auf die Daten. acViewPreview, um den Bericht in der Seitenansicht zu öffnen. acViewReport, um den Bericht in der Berichtsansicht zu öffnen. acViewNormal, um den Bericht zu drucken. acViewPivotChart, um die Daten in einem Pivot-Diagramm

darzustellen. acViewPivotTable, um die Daten in einem Pivot-Tabelle darzustellen.

Page 131: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 131Access 2007 – VBA | 06.03.08 | Seite 131

Regionales Rechenzentrum für Niedersachsen

Bericht öffnen

DoCmd.OpenReport "repBuchInfo", _

acViewPreview, _

, _

"[nachname] LIKE 'W*'", _

acWindowNormal

Der Bericht wird in der Vorschau geöffnet

Als Parameter wird eine Bedingung ähnlich wie in Abfragen; Zeile Kriterien übergegeben. Die Anführungszeichen innerhalb des Kriterienausdrucks werden durch Apostrophs ersetzt.In diesem Beispiel wird die Spalte nachname auf Daten überprüft, die mit dem Buchstaben W beginnen.

Page 132: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 132Access 2007 – VBA | 06.03.08 | Seite 132

Regionales Rechenzentrum für Niedersachsen

Bericht auswählen

DoCmd.OpenReport "repKunde", acViewNormal, , , _ acWindowHidden

DoCmd.SelectObject acReport, "repKunde", false

Mit Hilfe von SelectObject wird ein Objekt ausgewählt. Die Art des Objekts wird durch den ersten Parameter bestimmt. Als zweiter Parameter wird eine Objektbezeichnung übergeben. Falls der dritte Parameter true ist, wird das Objekt im Navigationsfenster

markiert. Ein verstecktes Objekt wird aber nicht eingeblendet. Falls der Wert false (Standardeinstellung) ist, wird das Objekt markiert und ausgeblendete Objekte eingeblendet.

Page 133: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 133Access 2007 – VBA | 06.03.08 | Seite 133

Regionales Rechenzentrum für Niedersachsen

Anzahl der Seiten

Caption legt den Text in der Titelleiste eines Berichts fest. Page gibt die aktuell angezeigte Seitenzahl an. Pages gibt die Anzahl der Seiten in einem Bericht an.

Me.Caption = "Seite " & Me.Page & " von " & Me.Pages

Page 134: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 134Access 2007 – VBA | 06.03.08 | Seite 134

Regionales Rechenzentrum für Niedersachsen

Keine Datensätze vorhanden

Das Ereignis NoData tritt ein, wenn der Bericht keine Datensätze enthält, aber nicht gedruckt ist.

Ein Drucken des leeren Berichts kann mit der Anweisung Cancel = True verhindert werden.

Private Sub Report_NoData(Cancel As Integer)MsgBox "Der Bericht ist leer."Cancel = True

End Sub

Page 135: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 135Access 2007 – VBA | 06.03.08 | Seite 135

Regionales Rechenzentrum für Niedersachsen

Bericht schließen

Dim rep As Report Set rep = Screen.ActiveReport

Set rep = Nothing

Was wird geschlossen?

Name des Objekts. Hier wird über ein Verweis der Name ermittelt.

Der Bericht wird ohne Speicherung der Daten geschlossen.

DoCmd.Close acReport, rep.Name, acSaveNo

Page 136: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 136Access 2007 – VBA | 06.03.08 | Seite 136

Regionales Rechenzentrum für Niedersachsen

Bereiche eines Berichts

.Section(acHeader)

.Section(1)

.Section(acPageHeader)

.Section(2)

.Section(acDetail)

.Section(0)

.Section(acPageFooter)

.Section(3)

.Section(acFooter)

.Section(4)

Page 137: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 137Access 2007 – VBA | 06.03.08 | Seite 137

Regionales Rechenzentrum für Niedersachsen

Bereiche ausblenden

.Visible = False blendet Bereiche aus. Die Bereiche werden aber nicht entfernt.

Private Sub Report_Load()Me.Section(acHeader).Visible = False

End Sub

Page 138: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 138Access 2007 – VBA | 06.03.08 | Seite 138

Regionales Rechenzentrum für Niedersachsen

Bereiche ausblenden

Das Ereignis ... wird vor der Formatierung des Bereichs ausgelöst. ... wird nur in der Seitenansicht gesendet. ... wird abgebrochen und die Seite nicht gedruckt.

In diesem Beispiel werden Bereiche in Abhängigkeit der Seitenzahl aus- oder eingeblendet.

Private Sub Berichtskopf_Format(Cancel As Integer, FormatCount As Integer)

If Me.Page = 1 ThenMe.Section(acHeader).Visible = TrueMe.Section(acFooter).Visible = False

ElseMe.Section(acHeader).Visible = FalseMe.Section(acFooter).Visible = True

End If

End Sub

Page 139: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 139Access 2007 – VBA | 06.03.08 | Seite 139

Regionales Rechenzentrum für Niedersachsen

Jede zweite Zeile im Detailbereich einfärben

Das Ereignis wird durch ein Neuzeichnen des Detailbereichs ausgelöst. In Abhängigkeit der Variablen isColor wird die Zeile eingefärbt.

Dim isColor As Boolean

Private Sub Detailbereich_Paint()If isColor Then

Me.Section(acDetail).BackColor = RGB(0,0, 180)Else

Me.Section(acDetail).BackColor = RGB(255, 255, 255)End If

isColor = Not isColor

End Sub

Page 140: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 140Access 2007 – VBA | 06.03.08 | Seite 140

Regionales Rechenzentrum für Niedersachsen

... seit Access 2007

BackColor setzt die Hintergrundfarbe im Detailbereich. AlternateBackColor setzt eine alternative Farbe für Färben jeder

zweiten Zeile im Detailbereich eines Berichts.

Private Sub Report_Load()Me.Section(acDetail).BackColor = RGB(255,255, 255)Me.Section(acDetail).AlternateBackColor = RGB(0, 0, 180)

End Sub

Page 141: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 141Access 2007 – VBA | 06.03.08 | Seite 141

Regionales Rechenzentrum für Niedersachsen

Zoomfaktor eines Berichts

Der Bericht wird mit Hilfe einer Schaltfläche oder in einem Modul geöffnet. Mit Hilfe von RunCommand können Befehle aus dem Ribbon gestartet

werden. acCmdZoom%% zeigt den Bericht in der Vorschau mit einem bestimmten

Zoomfaktor an. acCmdFitToWindow verkleinert den Bericht so weit, dass er vollständig im

Fenster der Application angezeigt werden kann. Der Zoom kann nicht in dem Modul gesetzt werden, der zu dem

zoomenden Bericht gehört.

Sub openBericht()DoCmd.OpenReport "repAutomat", acViewPreview, , ,acWindowNormalDoCmd.RunCommand acCmdZoom25DoCmd.RunCommand acCmdFitToWindow

End Sub

Page 142: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 142Access 2007 – VBA | 06.03.08 | Seite 142

Regionales Rechenzentrum für Niedersachsen

Bericht maximieren

DoCmd.Maximize zeigt das aktive Objekt im Vollbild an. DoCmd.Minimize verkleinert das aktive Objekt auf die Größe der

Titelleiste. Die Titelleiste des Berichts wird angezeigt. DoCmd.Restore stellt die ursprüngliche Größe wieder her. DoCmd.SetWarnings(False) unterdrückte alle Standard-

Warnmeldungen von Access.

Private Sub Report_activate()DoCmd.SetWarnings(False)DoCmd.Maximize

End SubPrivate Sub Report_Close()

DoCmd.RestoreEnd Sub

Page 143: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 143Access 2007 – VBA | 06.03.08 | Seite 143

Regionales Rechenzentrum für Niedersachsen

Daten gruppieren

.Section(acGroupLevel1Header) und .Section(acGroupLevel1Footer) definiert den Gruppenkopf und Gruppenfuß in der ersten Ebene.

Mit Hilfe von .Section("GroupKategorie") kann der Bereich direkt über den Namen angesprochen werden.

Page 144: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 144Access 2007 – VBA | 06.03.08 | Seite 144

Regionales Rechenzentrum für Niedersachsen

Eigenschaften setzen

.GroupLevel(index) verweist auf eine bestimmte Gruppierungsebene. Der Index 0 bezeichnet die erste Gruppierungsebene.

.GroupOn legt die Art der Gruppierung in Abhängigkeit des Datentyps fest. In diesem Beispiel wird Text in Abhängigkeit des Wertes gruppiert.

.GroupIntervall gibt ein Intervall für die Gruppierung in Abhängigkeit des Datentyps vor. Hier wird nach dem vollständigen Wert gruppiert.

.KeepTogether hält eine Gruppe auf einer Seite zusammen. In diesem Beispiel wird die erste Gruppierungsebene immer auf eine Seite gedruckt.

Private Sub Report_Open(Cancel As Integer) With Me.GroupLevel(0) .GroupOn = 0

.GroupInterval = 1 .KeepTogether = 1

End WithEnd Sub

Page 145: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 145Access 2007 – VBA | 06.03.08 | Seite 145

Regionales Rechenzentrum für Niedersachsen

Neue Seite einfügen

In Abhängigkeit der Seitenansicht (.CurrentView) wird eine neue Seite (.ForceNewPage) vor dem dem Gruppenkopf eingefügt.

Private Sub Report_Open(Cancel As Integer) If Me.CurrentView = 5 Then

Me.Section(acGroupLevel1Header).ForceNewPage = 1 End If

End Sub

Page 146: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 146Access 2007 – VBA | 06.03.08 | Seite 146

Regionales Rechenzentrum für Niedersachsen

Bericht drucken

Public Sub PrintOut() On Error GoTo Fehlercode DoCmd.RunCommand acCmdPrint Exit SubFehlercode: If Err.Number = 2501 Then Exit Sub Else MsgBox Err.Number & vbCRLF & Err.Description End IfEnd Sub

Öffnen des Drucken-Dialogs. Der Dialog bezieht sich immer auf das

aktive Objekt.

Abbruch des Drucken-Dialogs.

Page 147: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 147Access 2007 – VBA | 06.03.08 | Seite 147

Regionales Rechenzentrum für Niedersachsen

Mehrere Kopien eines Berichts drucken

Public Sub PrintOut() On Error GoTo Fehlercode DoCmd.PrintOut acPrintAll,,,acMedium, 2, True Exit SubFehlercode: MsgBox Err.Number & vbCRLF & Err.DescriptionEnd Sub

DoCmd.PrintOut druckt alle Seiten (acPrintAll) des aktiven Berichts in einer mittleren Druckqualität (acMedium) zweimal sortiert (True) aus.

Page 148: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 148Access 2007 – VBA | 06.03.08 | Seite 148

Regionales Rechenzentrum für Niedersachsen

Seite von bis ausdrucken

Public Sub PrintOut() On Error GoTo Fehlercode DoCmd.PrintOut acPages,1,2,acMedium Exit SubFehlercode: MsgBox Err.Number & vbCRLF & Err.DescriptionEnd Sub

DoCmd.PrintOut druckt die Seiten (acPages) eins bis zwei des aktiven Berichts in einer mittleren Druckqualität (acMedium) aus.

Page 149: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 149Access 2007 – VBA | 06.03.08 | Seite 149

Regionales Rechenzentrum für Niedersachsen

Printer-Objekt

... ist seit Access 2002 implementiert. ... ermöglicht eine Konfiguration der installierten Drucker. ... ist eine Eigenschaft des Berichts oder der Anwendung. ... verfügt über Eigenschaften, die die Druckeinstellungen beeinflussen. ... verfügt aber über keine Methoden, um einen Druck zu starten.

Page 150: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 150Access 2007 – VBA | 06.03.08 | Seite 150

Regionales Rechenzentrum für Niedersachsen

Welche Drucker sind vorhanden?

Private Sub Form_Load()Dim objDrucker As PrinterFor Each objDrucker In Printers

Me.lstDrucker.AddItem objPrinter.DeviceNameNext objDrucker

End Sub

Die Auflistung Printers enthält alle Drucker, die auf dem System installiert sind.

Der Name (DeviceName) jeden Druckers wird einer Liste hinzugefügt.

Page 151: VBA (Visual Basic for Application) · PDF fileJedes Objekt hat aber bestimmte Attributwerte, die das Objekt von anderen Objekten des gleichen Typs unterscheiden. ... Methoden (Memberfunction,

OpenOffice | | Folie 151Access 2007 – VBA | 06.03.08 | Seite 151

Regionales Rechenzentrum für Niedersachsen

Drucker des Berichts

Private Sub cmdDruckReport_Click() Const repName As String = "repKunde" Dim objDrucker As Printer Dim whichDrucker As Integer

DoCmd.OpenReport repName, acViewPreviewIf (Not IsNull(Me.lstDrucker)) Then

whichDrucker = Me.lstDrucker.ValueSet objPrinter = Application.Printers(whichDrucker)Set Reports(repName).Printer = objPrinter

DoCmd.OpenReport repName, acViewNormalEnd If

End Sub