Klammersetzung: Unterschied zwischen den Versionen

Aus VBA-wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
[[Category:vba-wiki]]
== Klammersetzung bei Berechnungen ==
== Klammersetzung bei Berechnungen ==



Aktuelle Version vom 28. Januar 2023, 00:35 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