Basic

(LibreOffice-Basic, MS-Visual Basic, OpenOffice-Basic, VBA)



Original-BASIC wird heute nicht mehr verwendet. Es gibt jedoch funktionsfähige Nostalgie-Versionen für alle gängigen Betriebssysteme. Die Version TrueBasic wurde 1983 von Kemeny und Kurtz entwickelt und bis heute weiter gepflegt.

Von Microsoft wurde anfangs die an das Original angelehnte Version MS-Basic angeboten, später die stark veränderte Version Visual Basic sowie Visual Basic for Applications (VBA) zur Unterstützung von MS‑Office-Programmen.

Diese Programmiersprache steht heute in verschiedenen Versionen als LibreOffice-Basic, OpenOffice-Basic oder MS‑Visual Basic (VBA) zur Verfügung.

Hier werden einige Anwendungen zur Erweiterung von Tabellen-Kalkulations-Programmen vorgestellt. Diese Basic-Funktionen arbeiten problemlos mit allen hier erwähnten Kalkulations-Programmen

Beispiel


In einem Basic-Modul der gleichen Kalkulations-Datei ist der Quelltext der Funktion eingetragen:
Function doppel(x)
doppel = 2 * x
End Function
Dieses Basic-'Programm' ist stark vereinfacht, jedoch funktionsfähig.


Die Verwendung einer Basic-Funktion für eine derart einfache Aufgabe ist möglich, jedoch nicht sinnvoll.
Mit Basic-Funktionen kann man jedoch auch sehr komplexe Aufgaben lösen. Der Basic-Quelltext muss nur 1mal programmiert werden, und kann danach auf alle gängigen Kalkulations-Programme portiert und in beliebig vielen Kalkulations-Aufgaben ohne Programmier-Kenntnisse verwendet werden.

Tabellen-Kalkulations-Programme & Basic


In den älteren Excel-Versionen war es einfach und durchaus üblich, das Programm mit Basic-Funktionen zu erweitern.
Als jedoch mit Basic auch Viren entwickelt wurden, änderte sich das Verhalten. Die Hersteller bieten weiterhin volle Unterstützung für Basic, diese ist jedoch in allen Standard-Versionen abgeschaltet und wird nur auf ausdrückliche Anweisung aktiviert. Seither sind Basic-Viren praktisch verschwunden.

Basic-Programme werden entweder als Quelltext oder in binärer Form (Digital signierte Module) transportiert. In diesem Web werden ausschließlich die offenen Versionen vorgestellt, in denen man den Basic-Quelltext ansehen, kontrollieren und bei Bedarf auch ändern kann.



Mit allen hier vorgestellten Basic-Funktionen kann man die Standard-Funktionen der Kalkulations-Programme ergänzen.

Der Quelltext solcher Basic-Funktionen ist bei sauberer Programmierung unabhängig von Art und Version des Kalkulations-Programms.
Details zur → Programmierung von portablem Basic-Code



Trotzdem sollte man nicht leichtfertig sein:
Importieren sie nur solche Basic-Funktionen, deren Quelltext sie mindestens in groben Zügen verstehen.


Zur Vermeidung von Missverständnissen wird 'Makro' auf den Seiten dieses Webs nicht verwendet.
Die Begriffe Function() für eine Basic-Funktion und Sub() für ein Basic-Programm werden bevorzugt, weil sie eindeutig und mit ähnlichen Begriffen moderner Programmiersprachen kompatibel sind.

Wozu Basic-Funktionen ?


Allen hier genannten Beispielen ist gemeinsam:
Schwierige oder zeitraubende Teil-Aufgaben werden in Basic-Funktionen verlagert.
Die AnwenderInnen erhalten jedoch kein fixes Programm, sondern können mit bequem anwendbaren (Basic)-Funktionen eigene Kalkulations-Lösungen erstellen.


Manche Aufgaben sind nur mit großem Aufwand lösbar, z.B. mit vielen komplizierten Formeln und daher meist auch mit der Gefahr von Tippfehlern.
Man kann solche Aufgaben mit Basic zusammenfassen und danach die Basic-Funktion einfach und übersichtlich anwenden.


Es gibt Aufgaben, die besonders viele (tausende) Schritte zur Lösung erfordern.
Die Programmierung auf einem Kalkulations-Blatt wird damit mühsam und unübersichtlich, die Berechnung unzumutbar langsam.
Eine Programmiersprache wie Basic kann Schleifen verwenden und damit die Berechnung stark vereinfachen. Die Basic-Funktion löst die Aufgabe in einer einzigen Zelle und berechnet das Ergebnis um Größenordnungen schneller.


Eine andere Kategorie von Beispielen zeigt Lösungen von Aufgaben, die in der Standard Tabellen-Kalkulation mangelhaft gelöst sind oder damit schlecht lösbar sind.

Diese Basic-Funktionen sind mit höheren Ansprüchen programmiert und ihr kompletter Quelltext wird zum Download angeboten. Sie werden auf den Webseiten nur gekürzt vorgestellt, der Schwerpunkt liegt auf der Anwendung.
Damit soll insbesondere auch die Phantasie angeregt werden, sinnvolle Aufgaben zu programmieren oder in Auftrag zu geben.

Typische Beispiele


Der größte Vorteil der Tabellen-Kalkulation ist die Möglichkeit der individuellen, kreativen Anwendung.
Dazu braucht man neben der Fachkenntnis nur Grundkenntnisse der Informatik und Tabellen-Kalkulation. Schwierige Teil-Aufgaben kann man in Basic-Funktionen verlagern (lassen) und damit die Konzentration auf die eigentliche Aufgabe richten.

Viele standardisierte Aufgaben erfordern weder Kreativität noch eine individuelle Anpassung der Formeln. Sie werden zwar noch oft mit Tabellen-Kalkulation ausgeführt, sollten jedoch besser mit anderen Methoden der modernen Informatik gelöst werden. Der ↓ nächste Absatz beschreibt solche Lösungen.



Es ist schwierig, diese Kriterien mit Tabellen-Kalkulation zu erfüllen. Die Aufgabe wird besser in eine moderne Datenbank-Lösung verlagert. Sie kann alle genannten Anforderungen mit Standard-Methoden erfüllen und bietet zusätzliche Vorteile:
  • Der Zugang kann mit Name und Passwort geschützt und kontrolliert werden.
  • Zur Bedienung kann man jeden beliebigen Browser auf jedem Betriebssystem verwenden.
  • An den Geräten der AnwenderInnen braucht man nichts installieren, kontrollieren oder warten.

Einige einfache Beispiele demonstrieren solche Lösungen. Sie sind mit Absicht so programmiert, dass sie wie traditionelle Kalkulations-Blätter aussehen:

Entwicklungs-Umgebung



Zur Programmierung braucht man mindestens 1 Standard Tabellen-Kalkulations-Programm, z.B. LibreOffice-Calc oder MS-Excel  ( OpenOffice-Calc wird kaum noch weiter-entwickelt).

Die freien Programm-Pakete LibreOffice und OpenOffice gibt es für jedes gängige Betriebssystem.
Man sollte eine aktuelle Version verwenden. Beide Programme lassen sich auf dem gleichen PC installieren, auch zusätzlich zu MS-Excel.

MS-Excel hat eine lange Tradition und existiert in sehr vielen Versionen. Ältere Versionen sind zu bevorzugen, weil sie die Entwicklung besser unterstützen, viel weniger Resourcen brauchen und weil der Hersteller besonders auf die Abwärts-Kompatibilität neuer Versionen achtet. Die hier vorgestellten Beispiele laufen problemlos mit allen Excel-Versionen ab MS-Office-2000

Wer verschiedene Programm-Versionen ausprobieren will, verwendet dazu am besten → Virtuelle Computer: Man kann sie sehr einfach ausstatten und danach Clone-Kopien herstellen. Auf jedem Clone wird nur eine einzige Programm-Version installiert.


Das Basic-Editor-Programm von MS-Excel bietet die besten Bedingungen zur Programmierung. Es ist bereits in älteren Excel-Versionen in ausgezeichneter Qualität enthalten und wurde zum Glück kaum geändert.
Tipp: Programmieren sie Basic-Funktionen mit MS-Excel und portieren sie die fertigen Produkte auf LibreOffice oder OpenOffice.

Das Editor-Programm von LibreOffice oder OpenOffice ist brauchbar, jedoch jenem von MS-Excel weit unterlegen. Fortgeschrittene EntwicklerInnen können zwar auch damit gut programmieren, man muss die Produkte aber ohnehin auch auf Excel portieren und dort ausprobieren.


In den Formeln der Tabellen-Kalkulation werden große und kleine Buchstaben nicht unterschieden.
Das gilt jedoch nicht für den Basic-Quelltext: Dort sollte man große und kleine Buchstaben streng unterscheiden, auch wenn manche Programm-Versionen dabei eine gewisse Toleranz zeigen.


Unterschiede und Ausnahmen

Sauber programmierte Basic-Funktionen sind fast immer problemlos portabel. Man sollte jedoch unbedingt auf Besonderheiten bestimmter Versionen verzichten, weil solche Basic-Programme nicht portabel sind und ihr Gebrauchswert damit stark vermindert wird.

Es gibt einige wenige Ausnahmen, die man dennoch beim Transport von Basic-Quelltext zwischen MS-Office und LibreOffice bzw. OpenOffice beachten sollte.
Die Dokumentation zu diesem wichtigen Thema ist leider spärlich, unvollständig und unzuverlässig.

Eine eigene Seite bietet Tipps und Tricks zur → Entwicklung portabler Basic-Programme.

Basic-Programme vom Typ Sub() sind nur selten portabel, weil sie oft auf die speziellen Objekte eines bestimmten Kalkulations-Programms zugreifen.
Auf der Seite → Animation wird an einem einfachen Beispiel die Programmierung eines Basic Sub() Programms vorgestellt.