Klammersetzung: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Pwania (Diskussion | Beiträge) |
Pwania (Diskussion | Beiträge) |
||
Zeile 36: | Zeile 36: | ||
* Klammern werden beim Aufruf von Funktionen mit Übergabeparametern verwendet, wenn der Rückgabewert der Funktion verwendet wird. | * Klammern werden beim Aufruf von Funktionen mit Übergabeparametern verwendet, wenn der Rückgabewert der Funktion verwendet wird. | ||
<span style="Color:green">' Beispiel eins: Die MsgBox-Funktion gibt den vom Anwender gewählten Knopf zurück. Bei der Anzeige der MsgBox ohne zusätzliche Knöpfe wird der Rückgabewert jedoch ignoriert. Hier dürfen also keine Klammern gesetzt werden!</span> | |||
MsgBox <span style="Color:gray">"Hallo!"</span>, , <span style="Color:gray">"Begrüßung"</span> | MsgBox <span style="Color:gray">"Hallo!"</span>, , <span style="Color:gray">"Begrüßung"</span> | ||
<span style="Color:green">' Beispiel zwei: Die MsgBox-Funktion soll einen Dialog mit den Knöpfen 'Ja' und 'Nein' anzeigen. Die Wahl des Benutzers wird in einer Variablen gespeichert.</span> | |||
lngContinue <span style="Color:gray">=</span> MsgBox<span style="Color:gray">("Möchten Sie weiter machen?"</span>, vbYesNo, <span style="Color:gray">"Abfrage")</span> | lngContinue <span style="Color:gray">=</span> MsgBox<span style="Color:gray">("Möchten Sie weiter machen?"</span>, vbYesNo, <span style="Color:gray">"Abfrage")</span> |
Version vom 19. Dezember 2018, 14:53 Uhr
Klammersetzung bei Berechnungen
Sie können bei mathematischen Berechnungen einzelne Rechenschritte mit runden Klammern gruppieren:
Debug.Print 2 * (3 + 4) ' Ergebnis: 14 Debug.Print 8 ^ (1 / 3) ' Ergebnis: Die dritte Wurzel von 8 ist 2
Klammersetzung bei If-Abfragen
Bei If-Abfragen können mit 'And' bzw. 'Or' zusammengefasste Auswertungen mithilfe von Klammern logisch zusammengefasst werden. In diesem Beispiel besteht die zweite Bedingung (in Klammern) aus zwei optionalen Werten (durch 'Or' verknüpft), insgesamt muss jedoch auch die erste Bedingung erfüllt sein. Ohne Klammern setzt die letzte Bedingung nicht voraus, dass auch die erste erfüllt ist.
If strInput01 = "Begrüßung" And (strInput02 = "Hallo" Or strInput02 = "Huhu") Then ' ... End If
Klammersetzung beim Aufruf von Prozeduren
Bitte merken Sie sich zur Klammersetzung (außerhalb von Berechnungen und If-Abfragen) folgende Eselsbrücke:
- Wenn links vor dem Befehl eine Zuweisung oder eine weitere Anweisung steht, müssen Übergabeparameter in Klammern gesetzt werden:
lngContinue = MsgBox("Möchten Sie weiter machen?", vbYesNo, "Abfrage") ' Zuweisung mit '=' Debug.Print MsgBox("Möchten Sie weiter machen?", vbYesNo, "Abfrage") ' Ergebnis wird an 'Debug.Print' übergeben If MsgBox("Möchten Sie weiter machen?", vbYesNo, "Abfrage") = True Then Exit Sub ' Ergebnis wird in If-Abfrage weiter verwertet
- Wenn dem Befehl eine Zuweisung folgt, werden ebenfalls Klammern verwendet:
Cells(1, 5) = "Hallo"
- Ansonsten dürfen KEINE Klammern verwendet werden, auch wenn es sich bei dem Befehl um eine Funktion handelt:
MsgBox "Hallo!", , "Begrüßung" ' Der Befehl steht alleine in dieser Befehlszeile
Im Einzelnen erklärt sich diese Eselsbrücke wie folgt:
- Klammern werden beim Aufruf von Funktionen mit Übergabeparametern verwendet, wenn der Rückgabewert der Funktion verwendet wird.
' Beispiel eins: Die MsgBox-Funktion gibt den vom Anwender gewählten Knopf zurück. Bei der Anzeige der MsgBox ohne zusätzliche Knöpfe wird der Rückgabewert jedoch ignoriert. Hier dürfen also keine Klammern gesetzt werden! MsgBox "Hallo!", , "Begrüßung"
' Beispiel zwei: Die MsgBox-Funktion soll einen Dialog mit den Knöpfen 'Ja' und 'Nein' anzeigen. Die Wahl des Benutzers wird in einer Variablen gespeichert. lngContinue = MsgBox("Möchten Sie weiter machen?", vbYesNo, "Abfrage")
- Beim Aufruf von Sub-Prozeduren werden KEINE Klammern verwendet!
DoSomething "With this"
- Zur näheren Bestimmung von Objekten werden ebenfalls immer die Klammern verwendet.
Cells(1,5).Select
- Klammern werden ebenfalls im Kopf einer Prozedur verwendet, um die Übergabeparameter anzugeben.
- Wenn keine Übergabeparameter erwartet werden, wird ein leeres Klammernpaar verwendet.
Private Sub MyProcedure() ' ... End Sub
Private Sub DoSomething(ByVal strWithThis As String) ' ... End Sub