Tabelle unter Kontrolle

Workshop OpenOffice StarBasic, Teil 2

01.04.2009
OpenOffice bringt eine eigene Makro-Programmiersprache mit: Mit StarBasic können Sie umständliche manuelle Tätigkeiten automatisieren. Wir stellen Variablen, Kontrollstrukturen und Schleifen vor.

In der vorletzten Ausgabe haben Sie die Grundlagen der Makroprogrammierung mit OpenOffice Calc kennen gelernt. In diesem zweiten Teil der StarBasic-Einführung geht es um fortgeschrittene Themen:

  • Variablen haben Sie bereits kurz kennengelernt. Es gibt noch mehr darüber zu wissen, und Sie lernen zusätzlich Variablenfelder kennen.
  • Mit der Kontrollstruktur If ... Then ... Else können Sie Fallunterscheidungen in Ihre Makros einbauen. Abhängig davon, ob bestimmte Bedingungen erfüllt sind, führt Ihr Makro dann unterschiedliche Befehle aus.
  • Schleifen helfen dabei, gleiche oder ähnliche Befehle mehrfach auszuführen – ohne, dass Sie diese auch mehrfach hinschreiben müssen.

Damit können Sie bereits mächtige Makros erstellen.

Arbeiten mit Variablen

In größeren Makroprojekten ist es hilfreich, Variablen nicht einfach bei Bedarf zu verwenden, sondern diese vorab im Makro-Programmtext zu "deklarieren": Variablen können verschiedene Typen annehmen – eine Zahl ist etwas anderes als ein Text-String.

Über das Schlüsselwort Dim definieren Sie den Typ einer Variable. Wollen Sie etwa eine Zählvariable i verwenden, die nur ganzzahlige Werte annimmt, setzen Sie den Befehl

Dim i As Integer

an den Anfang des Makros (gleich hinter die erste Zeile, in der Sub Makroname() steht). Damit ist klar, dass i nur Werte vom Typ Integer annimmt, in OpenOffice sind das ganze Zahlen zwischen -32768 und 32767 (-2^15 bis 2^15 - 1). Jeden Versuch, i nun etwas anderes als einen Integer-Wert zuzuordnen, wird OpenOffice künftig mit einer Fehlermeldung quittieren.

Weitere wichtige Variablentypen sind:

  • String: nimmt Textketten (engl. Strings), wie z. B. "test", auf.
  • Single, Double: nehmen Zahlen mit Nachkommastellen, wie z. B. 3,1415, auf. Achtung: Auch wenn die deutschsprachige OpenOffice-Version Zahlen in Calc das hier übliche Dezimalkomma verwendet, müssen Sie in Makros Zahlen mit Dezimalpunkt schreiben, also 3.1415 statt 3,1415. Der Datentyp Double hat im Vergleich zu Single eine höhere Genauigkeit; vereinfacht gesagt speichern Variablen vom Typ Double mehr Nachkommastellen als ihre Schwestern vom Typ Single.
  • LongInt: speichert (wie Integer-Variablen) ganze Zahlen, aber mit deutlich größerem Wertebereich: Die Zahlen dürfen dem Betrag nach bis über 2,1 Milliarden groß werden (-2.147.483.648 bis 2.147.483.647, oder – um das Prinzip zu erkennen: -2^31 bis 2^31 - 1).
  • Boolean: können Wahrheitswerte (True, False) enthalten – die können Sie später direkt überall dort einsetzen, wo sonst ein logischer Ausdruck (wie etwa ein Test auf Gleichheit) hingehört, z. B. in eine If-Then-Else-Konstruktion.

Wenn Sie sich beim Programmieren selbst disziplinieren wollen, fügen Sie ganz am Anfang im Makro-Editor (noch vor der ersten Makrodefinition) die Zeile

Option Explicit

ein: Die zwingt Sie dann, alle verwendeten Variablen ordentlich zu deklarieren – vergessen Sie eine Dim-Anweisung, kommt es zu einem Laufzeitfehler, wenn Sie das Makro ausführen.

Variablenfelder

Häufig benötigen Sie gleich mehrere Variablen, die gleichartige Daten enthalten und in einer bestimmten Reihenfolge genutzt werden. Wollen Sie etwa die Zellen A1 bis A8 auslesen und in Variablen speichern, könnten Sie dafür acht Variablen Wert1 bis Wert8 definieren und für diesen Zweck nutzen. Das ist aber umständlich: Besser ist es, ein so genanntes Variablenfeld zu definieren, das mehrere Werte speichert und diese über einen gemeinsamen Feldnamen zugänglich macht. Das würde dann so gehen:

Dim Werte(8) As Integer

Damit legen Sie eine ganze Sammlung von Variablen an, die Sie über Werte(0), Werte(1) bis Werte(8) ansprechen können. Die so genannte Feldgröße ist hier also 9 und nicht 8, weil StarBasic bei 0 zu zählen beginnt und der Dim-Befehl den letzten gültigen Index angibt. Wollen Sie nur acht Variablen im Feld verwalten und diese Werte(1) bis Werte(8) nennen, können Sie die Feldgrenzen auch explizit angeben:

Dim Werte(1 To 8) As Integer

Vor und hinter dem Schlüsselwort To stehen in dieser Befehlsvariante der jeweils erste und letzte gültige Index.

Elegant an den Variablenfeldern ist, dass Sie ohne großen Aufwand deren Größe ändern können. Haben Sie in der Vergangenheit ein Makro geschrieben, dass acht Werte in der oben beschriebenen Weise speichert, und benötigen Sie nun stattdessen 20 Werte, ändern Sie einfach den Dimensionierungsbefehl von Dim Werte(8) As Integer in Dim Werte(20) As Integer, und schon stehen Ihnen entsprechend mehr Speicherbereiche zur Verfügung.

Die Änderung ist allerdings nicht im laufenden Programm möglich – der folgende Code wird nicht funktionieren:

Dim v(10) As Integer
v(5) = 100
Dim v(30) As Integer
v(15) = 115

Das zweite Dim-Kommando würde eine Fehlermeldung verursachen (Abbildung 1). Es gibt ein Kommando namens ReDim, das eine Neudimensionierung ("Re-Dimensionierung") eines Felds erlaubt. Um ein bereits vorhandenes Feld wie oben nachträglich ohne Datenverlust zu vergrößern, müssten Sie beim zweiten Aufruf ReDim Preserve v(20) As Integer schreiben – die Korrektur des obigen Listings ist also:

Dim v(10) As Integer
v(5) = 100
ReDim Preserve v(20) As Integer
v(15) = 115
Abbildung 1: Felder doppelt mit "Dim" zu definieren, ist verboten – verwenden Sie stattdessen "ReDim".

Für das schnelle und automatische Verarbeiten solcher Variablenfelder eignet sich besonders eine Schleifenkonstruktion, die Sie weiter unten im Abschnitt For-Schleifen kennenlernen.

Felder dürfen auch mehrdimensional sein: Während Sie sich ein einfaches Variablenfeld als Teil einer Tabellenspalte oder -zeile vorstellen können, entspricht ein zweidimensionales Feld einem rechteckigen Ausschnitt aus der Tabelle.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Tabellenprogrammierer
    OpenOffice Calc ist eine mächtige Tabellenkalkulation, die zahlreiche eingebaute Funktionen fürs automatische Berechnen von Zelleninhalten hat. Mit StarBasic-Programmen erweitern Sie die Standard-Features.
  • Basic-Skripte in LibreOffice Calc
    Die Tabellenkalkulation LibreOffice Calc eignet sich besonders gut für den Einstieg ins Programmieren, denn wer schon mit Formeln in Tabellen umgehen kann, hat bereits den halben Weg zum Programmierer zurückgelegt. Hier zeigen wir Ihnen den Rest des Wegs.
  • Power-Makros
    Die ersten zwei Teile der Workshop-Reihe haben Ihnen die Grundlagen der Makroprogrammierung vorgestellt. In dieser Ausgabe zeigen wir einige Spezialfunktionen und stellen auch den VBA-Support vor.
  • Automatikgetriebe
    Makros automatisieren wiederkehrende Tätigkeiten in OpenOffice. Schon mit wenigen Zeilen Programmcode hört im virtuellen Büro alles auf Ihr Kommando.
  • Zeit ist Geld
    Die OpenOffice-Komponenten Base und Basic fristen ein Schattendasein – zu Unrecht, wie unser Workshop beweist.
Kommentare

Infos zur Publikation

title_2014_04

Digitale Ausgabe: Preis € 9,80
(inkl. 19% MwSt.)

EasyLinux erscheint vierteljährlich und kostet EUR 9,80. Weitere Informationen zum Heft finden Sie auf der EasyLinux-Homepage.

Das EasyLinux-Jahresabo mit Prämie kostet ab EUR 33,30. Details zum EasyLinux-Jahresabo finden Sie im Medialinx-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!      

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.