Basic

Die Programmiersprache BASIC (Beginner’s All-purpose Symbolic Instruction Code) war die erste weit verbreitete und die einzige jemals populäre Programmiersprache.

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

Die Programmiersprache Basic


Die Programmiersprache BASIC (Beginner’s All-purpose Symbolic Instruction Code) war die erste weit verbreitete und die einzige jemals populäre Programmiersprache.

Sie wurde 1964 von dem aus Ungarn stammenden John George Kemeny (1926-1992) und Thomas Eugene Kurtz (*1928) am Dartmouth College in den USA entwickelt. Es war ihnen besonders wichtig, dass Basic für alle AnwenderInnen kostenfrei war.

John George Kemeny
(János Kemény)
Quelle: Wikipedia (modif.)


Original-BASIC wird heute nicht mehr verwendet. Es gibt jedoch funktionsfähige Nostalgie-Versionen für alle gängigen Betriebssysteme.
Von Microsoft wurde später die stark veränderte Version 'Visual Basic for Applications' ( VBA) zur Unterstützung von MS-Office-Programmen entwickelt.
BASIC steht heute in verschiedenen Versionen als  LibreOffice-Basic,  OpenOffice-Basic oder  MS‑Visual Basic (VBA) zur Verfügung.

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

Tabellen-Kalkulation @ Basic


Mit der Programmiersprache Basic kann man die Funktionalität aller typischen Office-Programme erweitern. In der Praxis spielt allerdings nur die Anwendung mit → Kalkulations-Programmen eine wichtige Rolle. Man findet im Internet zahlreiche Basic-Module, -Programme und -Funktionen - allerdings sehr unterschiedlicher Qualität.

Basic wird vorwiegend für 2 Aufgaben eingesetzt:
Zusätzliche Funktionen für Kalkulations-Programme. Sauber programmierte Funktionen sind portabel. Man kann sie mit allen gängigen Kalkulations-Programmen verwenden.
Automation und → Animation. Diese Basic-Programme sind normalerweise nicht portabel, weil sie auf Objekte zugreifen, die in den einzelnen Kalkulations-Programmen unterschiedlich organisiert sind.

In den älteren Excel-Versionen war es einfach und durchaus üblich, das Programm mit Basic-Funktionen zu erweitern.
Als jedoch mit Basic auch Viren programmiert 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.

Transport

Basic-Programme werden entweder als Quelltext oder in binärer Form (Digital signierte Module) transportiert.

In diesem Web werden ausschließlich offene Versionen vorgestellt, in denen man den Basic-Quelltext ansehen, kontrollieren und bei Bedarf auch ändern kann.
Die Programme sind allerdings - im Gegensatz zu einfachen Kalkulations-Dateien - zwischen LibreOffice-Calc und MS-Excel (derzeit) nur eingeschränkt portabel.
Man transportiert den Basic-Quelltext in einer eigenen Text-Datei und importiert ihn so wie nachfolgend vorgestellt.

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

Sicherheit

Basic-Viren waren nur für eine kurze Zeit lästig und nicht sehr gefährlich. Sie sind heute praktisch ausgestorben, weil sie von jedem Sicherheits-Programm erkannt werden und weil nur eine Minderheit anspruchsvoller AnwenderInnen überhaupt Basic-Funktionen erlaubt und verwendet.

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

Makro

Im Zusammenhang mit der Programmiersprache Basic wird oft auch der Begriff 'Makro' verwendet.
Damit wird jedoch in modernen Programmiersprachen ein anderes Objekt bezeichnet, nämlich ein Alias-Name für einen mehrfach verwendbaren Textbaustein.

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 ?


Jedes Tabellen-Kalkulations-Programm bietet bereits zahlreiche Standard-Funktionen.
Wozu sollte man eigene Funktionen mit Basic programmieren ?

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.

Es gibt spezielle Aufgaben, die man mit Standard-Funktionen nicht lösen kann.
Eine Programmiersprache unterliegt viel weniger Beschränkungen und kann daher auch schwierige Aufgaben berechnen, wenn dafür überhaupt ein Algorithmus existiert.

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 einfache Aufgaben, die nach Erfahrung leider oft falsch programmiert werden.
Klassische Beispiele sind die Berechnung der Mehrwertsteuer, des Brutto-Preises aus dem Netto-Preis u.ä.:
Man kann diese Aufgaben in einfache Basic-Funktionen verlegen und allein durch die Benennung der Formeln und Argumente die richtige Berechnung sicherstellen.

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.

Die meisten hier vorgestellten Beispiele sind allerdings nach anderen Kriterien ausgewählt:
Sie sind so einfach wie möglich gehalten, damit die jeweiligen Ziele gut erkennbar sind. Dazu sind Aufgaben gewählt, die man alternativ auch mit Tabellen-Kalkulation lösen und daher gut kontrollieren kann.

Typische Beispiele

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

Diese Basic-Funktionen sind für höhere Ansprüche programmiert und ihr kompletter Quelltext wird zum Download angeboten. Der Schwerpunkt liegt auf der praktischen Anwendung. Damit soll insbesondere auch die Phantasie angeregt werden, sinnvolle Aufgaben zu programmieren oder in Auftrag zu geben.

Typische Beispiele

Einige Beispiele zeigen, dass man mit Basic-Hilfs-Funktionen auch Aufgaben lösen kann, die man der Tabellen-Kalkulation nicht zutraut.

Diese Beispiele sollen die Phantasie anregen, auch schwierig erscheinende Aufgaben zumindest in einfacher Form anzugehen. Damit kann man die verwendeten Algorithmen besser verstehen und manchmal sogar praktisch anwenden, weil in vielen Fällen auch einfache Ausführungen sinnvoll sind.

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

Auslagerung an andere Methoden

Es gibt (betriebliche) Aufgaben, die über einen längeren Zeitraum - meist auch von mehreren Personen - wiederholt ausgeführt werden und dabei immer genau den gleichen Regeln folgen sollen.

Man kann die Berechnung mit Tabellen-Kalkulation programmieren und die Datei an alle damit arbeitenden Personen verteilen, muss jedoch beachten:

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:

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

Entwicklungs-Umgebung


Tabellen-Kalkulation

Basic ist eine Programmiersprache, mit der man - je nach der verwendeten Version - vollständige ausführbare Programme, Programm-Bibliotheken oder Webseiten herstellen kann.

Diese Art der Anwendung wird hier nicht vorgestellt, weil die Anwendung in der Praxis auf das Windows-Betriebssystem begrenzt ist.

In den Basic-Seiten dieses Webs wird Basic als Programmiersprache gezeigt, mit der man Hilfs-Programme für die Tabellen-Kalkulation erstellen kann. Für diese Art der Anwendung ist der Name VBA (Visual Basic for Applications) üblich.

Mit VBA-Programmen kann man jedes Standard Büro-Programm ergänzen, z.B. auch Textverarbeitung, Präsentation, PC-Datenbank oder Objekt-Grafik.
Die Beispiele dieses Webs sind auf die Unterstützung der → Tabellen-Kalkulation beschränkt, und darüber hinaus meist auf die Programmierung von 'BenutzerInnen-definierten' Funktionen, mit denen die verfügbaren Standard-Funktionen ergänzt werden.

Zur Programmierung braucht man mindestens 1 Standard Tabellen-Kalkulations-Programm, z.B. LibreOffice-Calc oder MS-Excel.

Das freien Programm-Paket LibreOffice gibt es für jedes gängige Betriebssystem.
Man sollte eine aktuelle Version verwenden. Es lässt 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.

Basic-Editor

In jedem Kalkulations-Programm gelangt man u.a. mit den Tasten Alt-F11 zum Basic-Fenster und wieder zurück zur Tabellen-Kalkulation.
Im Basic-Fenster steht ein Text-Editor-Programm zur Verfügung, welches die Basic-Programmierung mit einigen Werkzeugen unterstützt.
Entnehmen sie die Details der integrierten Hilfe oder der jeweiligen Dokumentation.

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.

Das Editor-Programm von LibreOffice 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.

Zeichensatz

In Basic-Modulen wird der verwendete → Zeichensatz meist nicht ausdrücklich vereinbart.
Verwenden sie jedoch zur Programmierung nur die 96 'druckbaren' → ASCII-Zeichen.
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.

Basic-Interpreter

Basic-Programme werden vom jeweiligen (Tabellen-Kalkulations)-Programm 'interpretiert', d.h. Live in Maschinensprache übersetzt und anschließend sofort ausgeführt.

Jede Änderung im Basic-Quelltext ist daher ohne weitere Maßnahmen bereits bei der nächsten Ausführung wirksam.
Das ist zwar etwas langsamer als die Verwendung fertig übersetzter (compilierter) Programme, jedoch wesentlich leichter zu bedienen.

Jedes gängige Büro-(Office)-Programm enthält einen Basic-(VBA)-Interpreter. Die Interpreter-Programme wurden im Laufe der Zeit getrennt weiterentwickelt und unterscheiden sich daher leider in einigen Details.

Tipp: Sammeln sie erste Erfahrungen mit einfachen Funktions-Beispielen. Dazu kann man jedes beliebige Büro-Programm-Paket verwenden.

Unterschiede und Ausnahmen

Sauber programmierte Basic-Funktionen vom Typ Function sind 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 beim Transport von Basic-Quelltext zwischen MS-Office und LibreOffice 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.