Inhalte

# Prozeduren, Funktionen und Eigenschaften verwenden

Im Folgenden ist die grundsätzliche Verwendung von Prozeduren, Funktionen und Eigenschaften in LibreOffice Basic beschrieben.

Wenn Sie ein neues Modul erstellen, implementiert LibreOffice Basic automatisch ein Sub namens "Main". Dieser voreingestellte Name beeinflusst nicht die Reihenfolge oder den Startpunkt von einem LibreOffice Basic Projekt. Sie können die Sub-Routine problemlos umbenennen.

Für die Namen Ihrer öffentlichen Variablen, Unterprogramme, Funktionen und Eigenschaften gelten einige Einschränkungen. Sie dürfen nicht denselben Namen wie eines der Module der gleichen Bibliothek verwenden.

Prozeduren (Routinen Sub), Funktionen (Function) und Eigenschaften (Property) helfen Ihnen, eine strukturierte Übersicht zu behalten, indem sie ein Programm in logische Teile unterteilen.

Ein Vorteil von Prozeduren, Funktionen und Eigenschaften ist, dass Sie einen einmal entwickelten Programmcode, der Task-Komponenten enthält, in einem anderen Projekt wiederverwenden können.

## Übergabe von Variablen an Prozeduren, Funktionen oder Eigenschaften

Variablen können an Prozeduren, Funktionen oder Eigenschaften übergeben werden. Die Funktion oder Eigenschaft Sub muss deklariert werden, um Parameter zu erwarten:

      Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
          ' Ihr Code gehört hier hin
      End Sub

Das Sub wird mit der folgenden Syntax aufgerufen:

      [Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)

Die an Sub übertragenen Parameter müssen zu denen passen, die in der Deklaration von Sub angegeben sind.

Das gleiche Verfahren gilt für eine Funktion. Darüber hinaus geben Funktionen immer ein Funktionsergebnis zurück. Das Ergebnis einer Funktion wird definiert, indem der Rückgabewert dem Funktionsnamen zugewiesen wird:

      Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
          ' Ihr Code gehört hier hin
          FunctionName=Result
      End Function

Die Funktion wird mit der folgenden Syntax aufgerufen:

      Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)

Eigenschaften verbinden die Syntax von Prozeduren und Funktionen. Eine Eigenschaft benötigt für gewöhnlich bis zu einem Parameter.

      Private _IsApproved As TYPENAME
      Property Get IsApproved As TYPENAME
          ' Ihr Code gehört hier hin
          IsApproved = some_computation
      End Property
      Property Let IsApproved(value As TYPENAME)
          ' Ihr Code gehört hier hin
          _IsApproved = computed_value
      End Property

Die Eigenschaft wird durch die folgende Syntax aufgerufen:

      var = IsApproved
      IsApproved = some_value

Sie können auch vollqualifizierte Namen verwenden, um Prozeduren, Funktionen oder Eigenschaften aufzurufen:
[Call] Library.Module.Macro(), wobei Call optional ist.
Zum Beispiel, um das Makro Autotext von der Bibliothek Gimmicks aufzurufen, verwenden Sie den folgenden Befehl:
Gimmicks.AutoText.Main()

## Übergeben von Variablen als Wert oder Referenz

Parameter können entweder per Referenz oder per Wert an eine Prozedur, eine Funktion oder eine Eigenschaft übergeben werden. Sofern nicht anders angegeben, wird ein Parameter immer als Referenz übergeben. Das bedeutet, dass Sub, Function oder Property den Parameter bekommt und seinen Wert lesen und ändern kann.

Wenn Sie einen Parameter als Wert übergeben möchten, fügen Sie beim Aufruf von Sub, Function oder Property das Schlüsselwort ByVal vor dem Parameter ein, zum Beispiel:

      Function ReadOnlyParms(ByVal p2, ByVal p2)
          ' Ihr Code gehört hier hin
      End Function
      result = ReadOnlyParms(parm1, parm2)

In diesem Fall wird der ursprüngliche Inhalt des Parameters durch Function nicht verändert, da sie nur den Wert und nicht den Parameter selbst erhält.

## Optionale Parameter festlegen

Funktionen, Prozeduren oder Eigenschaften können mit optionalen Parametern definiert werden, beispielsweise:

      Sub Rounding(number, Optional decimals, Optional format)
          ' Ihr Code gehört hier hin
      End Sub

## Positions- oder Schlüsselwort-Argumente

Wenn Sie eine Funktion oder eine Unterroutine aufrufen, können Sie deren Argumente nach Position oder nach Namen übergeben. Die Übergabe nach Position bedeutet, dass nur die Argumente in der Reihenfolge aufgelistet werden, in der die Parameter in der Funktion oder Unterroutine festgelegt sind. Die Übergabe des Namens erfordert, dass Sie dem Argument den Namen des entsprechenden Parameters voranstellen, gefolgt von einem Doppelpunkt und einem Gleichheitszeichen (:=). Schlüsselwort-Argumente können in beliebiger Reihenfolge angezeigt werden. Beispiele finden Sie in der Basic-Funktion Replace().

Wenn Sie weniger Parameter übergeben müssen, verwenden Sie Schlüsselwort-Argumente. Das Übergeben von Werten für weniger Parameter nach Position erfordert, dass Werte für alle Parameter vor ihnen angegeben werden, ob optional oder nicht. Dadurch wird sichergestellt, dass sich die Werte an den richtigen Positionen befinden. Wenn Sie die Parameter nach Namen übergeben – mit Schlüsselwort-Argumenten – können Sie alle anderen Zwischenargumente weglassen.

## Gültigkeitsbereich von Variablen

Eine innerhalb von Sub, Function oder Property definierte Variable bleibt nur gültig, bis die Prozedur beendet wird. Dies wird als "lokale" Variable bezeichnet. In vielen Fällen benötigen Sie eine Variable, um in allen Prozeduren, in jedem Modul aller Bibliotheken oder nach Sub, Function oder Property gültig zu sein.

### Deklarieren von Variablen außerhalb von Sub, Function oder Property

    Global VarName As TYPENAME

Die Variable ist solange gültig, wie die LibreOffice-Sitzung andauert.

    Public VarName As TYPENAME

Die Variable hat in allen Modulen Gültigkeit.

    Private VarName As TYPENAME

Die Variable hat nur im Modul Gültigkeit.

    Dim VarName As TYPENAME

Die Variable hat nur im Modul Gültigkeit.

### Beispiele für private Variablen

Sie erzwingen, dass private Variablen modulübergreifend privat sind, indem Sie CompatibilityMode(True) setzen.

      ' ***** Module1 *****
      Private myText As String
      Sub initMyText
          meinText = "Hallo"
          Print "In Modul 1 : ", meinText
      End Sub

      ' ***** Module2 *****
      'Option Explicit
      Sub demoBug
          CompatibilityMode( True )
          initMyText
          ' Gibt jetzt einen leeren String zurück
          ' (oder löst einen Fehler für Option Explicit aus)
          Print "Jetzt in Modul 2 : ", meinText
      End Sub

### Den Inhalt einer Variablen nach dem Beenden eines Sub, einer Funktion oder einer Eigenschaft speichern

      Static VarName As TYPENAME

Die Variable behält ihren Wert bis zur nächsten Eingabe einer Function, Sub oder Property. Die Deklaration muss innerhalb von Sub, Function oder Property existieren.

## Den Typ eines Rückgabewerts einer Funktion oder einer Eigenschaft festlegen

Fügen Sie wie bei Variablen ein Typdeklarationszeichen nach dem Funktionsnamen oder den durch As angegebenen Typ und den entsprechenden Datentyp am Ende der Parameterliste ein, um den Rückgabetyp der Funktion oder Eigenschaft zu definieren Wert, zum Beispiel:

      Function WordCount(WordText As String) As Integer

Verwandte Themen

Funktion CompatibilityMode()

Anweisung Option Explicit

Optionales Schlüsselwort

Anweisung Property

Statische Anweisung