Home / EasyLinux / 2008 / 04 / Tabellenprogrammierer

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

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.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1703 Hits
Wertung: 110 Punkte (2 Stimmen)

Schlecht Gut

Infos zum Autor

Hans-Georg Eßer

Hans-Georg Eßer

Hans-Georg Eßer ist Chefredakteur der Zeitschrift EasyLinux, Doktorand an der Uni Erlangen-Nürnberg und seit Mitte der 90er begeisterter Linux-Anwender.


Infos zur Publikation

Infos zur Publikation

title_2012_02

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

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

Das EasyLinux-Jahresabo kostet EUR 33,30. Details zum EasyLinux-Jahresabo finden Sie im LNM-Shop.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...