Hilfe für LibreOffice 24.8
Die Funktion CompatibilityMode() steuert oder fragt den Laufzeitmodus ab. Sie wirkt sich auf den gesamten Code aus, der nach dem Setzen oder Zurücksetzen des Laufzeitmodus ausgeführt wird.
Verwenden Sie diese Funktion mit Vorsicht, beschränken Sie sie beispielsweise auf die Dokumentkonvertierung.
      CompatibilityMode(Optional Aktivieren As Boolean) As Boolean
    Die Funktion CompatibilityMode gibt immer den Modus zurück, der nach ihrer Ausführung aktiv ist. Das heißt, wenn es mit einem Argument aufgerufen wird, wird der neue Modus zurückgegeben. Wenn es ohne Argument aufgerufen wird, gibt es den aktiven Modus zurück, ohne ihn zu ändern.
Aktivieren: Setzt oder deaktiviert den neuen Kompatibilitätsmodus, wenn das Argument vorhanden ist.
Die Funktion CompatibilityMode bezieht sich auf Option VBASupport 1, in diesem Fall gibt sie immer True zurück. Sie hat nichts mit der Compiler-Direktive Option Compatible zu tun.
Diese Funktion kann in folgenden Situationen Auswirkungen haben oder helfen:
Gültigkeitsbereich von Variablen.
Ausführen des Befehls RmDir im VBA-Modus. In VBA werden nur leere Verzeichnisse von RmDir entfernt, während LibreOffice Basic ein Verzeichnis rekursiv entfernt.
Ändern des Verhaltens des Basisbefehls Dir. Das Verzeichnis-Flag (16) für den Befehl Dir bedeutet, dass in LibreOffice Basic nur Verzeichnisse zurückgegeben werden, während in VBA normale Dateien und Verzeichnisse zurückgegeben werden.
Farbkomponentenberechnung mit den Funktionen Rot und Blue, die ausgetauscht sind (die Funktion Green ist nicht betroffen).
Gegeben sei ein NICHT leeres Verzeichnis unter file:///home/me/Test
      Sub RemoveDir
          MsgBox CompatibilityMode() ' False
      
          CompatibilityMode( True )
          RmDir( "file:///home/me/Test" )
          CompatibilityMode False 
      
          MsgBox CompatibilityMode ' False
      End Sub
   Bei CompatibilityMode( True ) gibt das Programm einen Fehler aus, ansonsten wird das Verzeichnis Test samt Inhalt gelöscht.
Ändern des Verhaltens von Dir
    Sub VBADirCommand
        CompatibilityMode( Enable := True ) ' Zeigt auch normale Dateien an
        Entry$ = Dir( "file:///home/me/Tmp/*.*", 16 )
        Total$ = ""
        While Entry$ <> ""
            Total$ = Total$ + Entry$ + Chr$(13)
            Entry$ = Dir
        Wend
        MsgBox Total$
        CompatibilityMode Enable := False ' Zeigt nur Verzeichnisse an
    End Sub