Tabellenprogrammierer

Mit StarBasic Calc-Tabellen aufbohren (Teil 1)

09.09.2009
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.

Alle großen Tabellenkalkulationen bringen eine Makrosprache mit, in der Sie Tabellendokumente mit selbst geschriebenen Funktionen anreichern können, die komplexere Berechnungen vornehmen oder einfach für eine komfortablere Eingabe von Daten sorgen. Was bei Microsoft Excel die Programmiersprache VBA (Visual Basic for Applications) ist, heißt bei OpenOffice StarBasic.

StarBasic können Sie in allen OpenOffice-Dokumenten verwenden, also unter anderem in Writer, Calc und Impress – in diesem Artikel betrachten wir nur die Möglichkeiten, welche die Sprache Ihnen in Calc bietet.

Ein Basic-Dialekt

StarBasic ist ein Basic-Dialekt, verwendet also eine ähnliche Syntax, wie sie in den Home-Computern der 80er Jahre (C64, Schneider CPC, Atari XL etc.) üblich war. Während die klassischen Basic-Sprachen weder Funktionen oder Prozeduren noch Objektorientierung kannten und für Sprungbefehle Zeilennummern verwendet wurden, bieten die modernen Basic-Varianten alle bekannten Features anderer moderner Hochsprachen: Das macht z. B. Zeilennummern überflüssig.

Um ein erstes Makro zu erstellen, erzeugen Sie ein neues (leeres) Tabellendokument und rufen dann über Extras / Makros / Makros verwalten / Makro die Makroverwaltung auf. Abbildung 1 zeigt das erscheinende Fenster: Makros können Sie in einzelnen Dokumenten oder in Ihren privaten OpenOffice-Einstellungen ablegen.

Abbildung 1: In der Makro-Verwaltung finden Sie auch alle selbst angelegten Makros.

In der Makroverwaltung sehen Sie links eine Baumansicht; ganz oben stehen Ihre eigenen Makros (Meine Makros), darunter allgemeine OpenOffice-Makros und am Schluss die Makros des neu erzeugten Dokuments, das noch keinen Namen hat und hier als Unbenannt1 erscheint. Der Teilbaum mit Ihren privaten Makros ist bereits aufgeklappt, und der Eintrag Meine Makros / Standard / Module1 markiert ist markiert. Im rechten Teil sehen Sie eine Übersicht der im Modul gespeicherten Makros: Hier gibt es nur das Makro Main. Klicken Sie ganz rechts auf die Schaltfläche Bearbeiten, um den Makro-Editor zu starten.

Es erscheint ein Editor-Fenster, das im Hauptteil nur drei Zeilen Text enthält:

REM    *  BASIC    *
Sub Main
End Sub

Die erste der drei Zeilen ist nur ein Kommentar (engl.: remark), dahinter folgen Anfang und Ende einer Prozedurdeklaration: Sub Main leitet die Prozedur namens Main ein, End Sub zeigt ihr Ende an. Da zwischen diesen zwei Befehlen nur eine Leerzeile steht, tut die Prozedur gar nichts.

Das können Sie im folgenden Schritt ändern: Fügen Sie zwischen den beiden Zeilen eine weitere mit folgendem Inhalt ein:

Print "Hallo Welt"

Damit haben Sie ein erstes Programm geschrieben, das in allen Programmiersprachen als "Hello-World-Programm" bekannt ist. Klicken Sie nun in der Symbolleiste auf das zweite Icon von links (Dokument und Pfeil; BASIC-Programm ausführen). Dann erscheint ein kleines Dialogfenster mit der Meldung "Hallo Welt" (Abbildung 2).

Abbildung 2: Das "Hallo Welt"-Programm können Sie gleich aus dem Makro-Editor heraus starten.

Das ist nun nicht besonders spannend – wichtig für die Arbeit mit Tabellendokumenten ist die Möglichkeit, auf einzelne oder mehrere Tabellenzellen zuzugreifen und deren Werte auszulesen oder zu verändern.

Tabellenzellen im Griff

Um sich an einzelne Zellen heranzutasten, gehen Sie in StarBasic schrittweise vor: Zunächst müssen Sie das Dokument bestimmen, mit dem Sie arbeiten wollen – Makros werden Sie später direkt aus der Dokumentansicht heraus über einen Menüpunkt oder eine selbst vergebene Tastenkombination aufrufen, und zu diesem Zweck bietet StarBasic eine eingebaute Variable, die das aktuelle Dokument zurückgibt:

Dokument = StarDesktop.CurrentComponent

Die Variable Dokument enthält nach diesem Aufruf die Information, mit welchem Dokument Sie gerade arbeiten. Ein Tabellendokument besteht aus Tabellenblättern, die Sie in Calc über die Reiter am unteren Rand des Fensters erreichen. Diese haben meist Namen der Form Tabelle1, Tabelle2 usw., unabhängig vom Namen zählt Calc aber auch numerisch von links nach rechts und beginnt die Zählung bei 0 – das erste Tabellenblatt hat also die Nummer 0. Um nun in Ihrem Calc-Dokument, das Sie über die Variable Dokument ansprechen, auf das erste Tabellenblatt zuzugreifen, verwenden Sie die Objektfunktion Sheets():

Blatt = Dokument.Sheets(0)

Danach enthält die Variable Blatt den Verweis auf das erste Tabellenblatt. Jetzt sind Sie fast am Ziel: Einzelne Zellen in diesem Blatt sprechen Sie über die Objektfunktion getCellByPosition() an, die zwei Argumente (Spalte und Zeile) erwartet. Die Nummerierung der Spalten und Zeilen beginnt auch hier intern bei 0 – Vorsicht: Calc beginnt in der normalen Tabellenansicht mit Zeile 1 und Spalte A; die Zelle C7 wird also in StarBasic-Notation zu (2,6) – dritte Spalte, siebte Zeile. Sie erreichen diese Beispielzelle nun über

Zelle = Blatt.getCellByPosition(2,6)

Auf den Inhalt dieser Zelle können Sie nun mit drei unterschiedlichen Objektfunktionen zugreifen:

  • getValue() gibt einen Zahlenwert des Zellinhalts zurück – egal, ob die Zelle eine Zahl oder eine Formel enthält: im Fall einer Formel berechnet StarBasic diese und gibt das Ergebnis zurück. Wenn die Zelle Text enthält, ist der Rückgabewert 0.
  • getString() gibt den Text zurück, der in der Tabelle steht. Das ist der Wert, den Sie in der normalen Tabellenansicht sehen können, egal ob dem ein Wert, eine Formel oder wirklich einfacher Text zugrundeliegt.
  • getFormula() schließlich gibt bei einer Formelzelle die enthaltene Formel zurück. Steht in der Zelle keine Formel, ist der Rückgabewert derselbe String, den auch getString() zurückgeben würde.

Um herauszufinden, von welchem Typ eine Zelle ist (Wert, Text, Formel), verwenden Sie die Objektfunktion getType(), die vier mögliche Rückgabewerte hat: 0 (leere Zelle), 1 (Wert), 2 (Text) und 3 (Formel). Die Beispielzelle C7 könnten Sie also wie folgt auswerten:

t = Zelle.getType()
if t = 0 then print "C7 ist leer"
if t = 1 then print "C7 enthält Wert " + Zelle.getValue()
if t = 2 then print "C7 enthält Text " + Zelle.getString()
if t = 3 then print "C7 enthält Formel " + Zelle.getFormula() + " mit Wert " + Zelle.getValue()

Dabei sind die ifthen-Konstrukte Fallunterscheidungen: Den Befehl, der hinter then folgt, führt StarBasic nur aus, wenn die zwischen if und then stehende Bedingung erfüllt ist. Dieser Code-Ausschnitt testet also auf die vier möglichen Rückgabewerte von getType() und gibt entsprechend sinnvolle Informationen aus.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • 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.
  • 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.
  • StarBasic
  • Tabelle unter Kontrolle
    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.
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

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...