Jede VBA-Eigenschaft enthält oder erwartet nur einen einzigen Wert. Manchmal handelt es sich dabei jedoch um Zahlenwerte, die mehr als einen Eigenschaftswert repräsentieren. Ein gutes Beispiel dafür ist die MsgBox-Anweisung, für die Sie mit einem einzigen Zahlenwert gleichzeitig die anzuzeigenden Schaltflächen und das Symbol festlegen. Diese Festlegung ist einfach – schwieriger wird es, wenn Sie solche Eigenschaften auswerten müssen. Dieser Artikel liefert das notwendige Know-how zu diesem Thema.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1207_Binaerzahlen.mdb.
Was sind Binärzahlen
Im Gegensatz zu den hierzulande gebräuchlichen Dezimalzahlen, die mit Ziffern von 0 bis 9 zusammengesetzt werden, gibt es im Binärsystem nur die beiden Zahlen 0 und 1. Wie im Dezimalsystem entscheidet die Stelle über die Wertigkeit des jeweiligen Teils. 123 entspricht einem Hunderter, zwei Zehnern und drei Einern. Im Binärsystem gibt es Zahlen wie 1101. In diesem Fall heißt dies: Ein Achter, ein Vierer, kein Zweier und ein Einer, in Summe: 13. Jede Stelle wird also gegenüber der Stelle rechts davon nicht um den Faktor 10, sondern lediglich um den Faktor 2 erhöht.
Was soll man als Access-Entwickler damit anfangen Die Frage ist berechtigt, denn in den meisten Fällen werden solche Zahlenwerte als Parameter für VBA-Funktionen verwendet oder als Ergebnisse von Eigenschaften geliefert – und zwar gut kaschiert.
Binärzahlen als Parameter der MsgBox-Anweisung
Ein gutes Beispiel ist die MsgBox-Anweisung (siehe Artikel Meldungsfenster anzeigen und auswerten). Diese Funktion erwartet als zweiten Parameter Informationen darüber, welche Schaltflächen es anzeigen soll, welches Icon erscheint und welche Schaltfläche als Standardschaltfläche markiert wird.
Ein Beispiel ist die folgende Anweisung:
MsgBox "Beispielmeldung", vbOKCancel + vbCritical + vbDefaultButton2
Wie nur ermittelt VBA nun, welche Schaltflächen und Icons angezeigt werden und welche Schaltfläche als Standardschaltfläche dient Es ist ganz einfach: Jeder der Ausdrücke, also vbOKCancel, vbCritical oder vbDefaultButton2, entspricht einem Zahlenwert. Durch den Plus-Operator (+) werden die Zahlenwerte addiert und später von VBA wieder auseinandergenommen. Damit dies funktioniert, dürfen die Zahlenwerte jedoch nicht willkürlich eingesetzt werden.
Die Zahlenwerte hinter vbDefaultButton1 bis vbDefaultButton4 lauten beispielsweise 0, 256, 512 und 768. Die Schaltflächen geben Sie mit diesen Werten an:
- vbOKOnly: 0
- vbOKCancel: 1
- vbAbortRetryIgnore: 2
- vbYesNoCancel: 3
- vbYesNo: 4
- vbRetryCancel: 5
Fehlen noch die Icons, die durch folgende Konstanten angegeben werden:
- vbCritical: 16
- vbQuestion: 32
- vbExclamation: 48
- vbInformation: 64
Wenn Sie nun etwa ein Meldungsfenster mit den Schaltflächen OK und Abbrechen, der zweiten Schaltfläche als Standardschaltfläche und dem Icon mit dem Fragezeichen (vbQuestion) anzeigen möchten, verwenden Sie als zweiten Parameter diesen Ausdruck:
vbOKCancel + vbDefaultButton2 + vbQuestion
Dies entspricht wiederum den folgenden Zahlenwerten:
1 + 256 + 32
Sie könnten also auch schreiben:
MsgBox "Beispielmeldung", 289
Statt dem Plus-Zeichen können Sie auch den Operator Or verwenden:
vbOKCancel Or vbDefaultButton2 Or vbQuestion
Das Plus-Zeichen hat die gleiche Bedeutung wie Or Wäre hier nicht eher And das passende Pendant Nein – dies können Sie leicht prüfen. Wenn Sie das Ergebnis von der Variante mit Or im Direktfenster ausgeben, erhalten Sie dieses Ergebnis:
vbOKCancel Or vbDefaultButton2 Or vbQuestion 289
Die And-Variante liefert hingegen:
vbOKCancel And vbDefaultButton2 And vbQuestion 0
Was führt zu diesen Ergebnissen für Or und And Nun: Or steht für eine logische Disjunktion. Hier wird jede Position der binären Zahlen miteinander verglichen und mit Or verknüpft. Dabei gilt:
- 1 Or 1= 1
- 1 Or 0 = 1
- 0 Or 1= 1
- 0 Or 0 = 0
Um dies für das obige Beispiel umzusetzen, berechnen Sie zunächst die Binärzahlen:
1 + 32 + 256 entspricht somit 1 + 100000 + 100000000. Dies ergibt 100100001, umgerechnet 289.
Die And-Verknüpfung wiederum entspricht einer logischen Konjunktion, das heißt, dass nur solche Bits erhalten bleiben, die in allen verknüpften Zahlen vorkommen. Hier lauten die Regeln:
- 1 And 1= 1
- 1 And 0 = 0
- 0 And 1= 0
- 0 And 0 = 0
Deshalb ergibt auch 1 + 32 + 256, also 1 + 100000 + 100000000, den Wert 0.
Nun wissen Sie, wie sich der Wert für die Konfiguration des Meldungsfensters zusammensetzt. Wie aber ermittelt VBA, welche Schaltflächen und welche Icons anzuzeigen sind
Dazu wird der mit Or zusammengestellte Wert per And-Operator mit allen verfügbaren Einzelwerten verglichen. Das einfachste Beispiel sind die Schaltflächen. VBA wird etwa wie folgt vorgehen und nacheinander alle Werte von 0 bis 5 mit dem übergebenen Wert vergleichen. Angenommen, der zweite Parameter hat den Wert 1, was der Konstanten vbOKCancel entspricht.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: