Initialisierung

Herstellung gesicherter Anfangswerte

Ohne weitere Maßnahmen wird eine Kalkulation meist an jener Stelle geöffnet, an der sie zuletzt geschlossen wurde. Dabei werden die zuletzt benutzten Eingabewerte angezeigt. Für professionelle Ansprüche ist das nicht ausreichend. Starten sie zu einem übersichtlichen Splash-Screen und stellen sie sicher, dass die "richtigen" Anfangswerte eingesetzt sind.
Kalkulation Zahlen-Werkzeug
Profi Tipps und Tricks für Kalkulations-Profis
Workbook_Open Das Start-Ereignis der Kalkulations-Lösung
Splash-Blatt Übersicht und Klarheit schaffen
Parameter Anfangs-Daten einsetzen
VBA-Profi Angepasste Lösungen

Workbook_Open - Das Start-Ereignis

Beim Öffnen eines Excel-Dokuments wird das Ereignis (Event) Workbook_Open ausgelöst. Mit Visual Basic (VBA) können sie es "abfangen" und alle erforderlichen Arbeiten zur Initialisierung ausführen. Symmetrisch dazu wird beim Schließen das Ereignis Workbook_BeforeClose ausgelöst, das sie zum "Aufräumen" benutzen.
Öffnen sie das Arbeitsblatt und danach VBA mit
Alt-F11 oder Menübefehl Extras | Makro | Visual Basic Editor
Suchen sie (links) im Fenster "Project Explorer" ihr Dokument.
Falls ihr Dokument noch kein VBA-Modul enthält, dann fügen sie eines dazu: Menü Einfügen | Modul.
VBA-Modul Öffnen sie das VBA-Modul ihres Dokuments und tragen sie das rechts angezeigte Sub ein.
(Dieses Sub können sie zum Test auch mit dem Menü Extras | Makro oder mit Hilfe eines Buttons starten).
Sub init()
MsgBox ("Initialisierung")
' weitere Anweisungen hier einfügen
End Sub
Workbook Öffnen sie die Arbeitsmappe ihres Dokuments.
Klicken sie auf die Objekt-Auswahlliste links oben (Allgemein) und wählen sie Workbook
Wählen sie aus der Prozedur-Auswahlliste rechts oben Open
Es wird ein leeres Sub erzeugt. Tragen sie die rechts gezeigte Anweisung ein.
Private Sub Workbook_Open()
Call init
' weitere Calls hier einfügen
End Sub
Sichern und Schließen sie ihr Dokument.
Öffnen sie es wieder - Die Init-Meldung sollte in einem Alarmfenster angezeigt werden.
Damit haben sie das Grundgerüst für die Initialisierung gelegt.
Für alle weiteren Init-Arbeiten ergänzen sie entweder das Sub init() oder sie legen weitere Subs (im VBA-Modul) an und fügen die ntsprechenden Call-Anweisungen im Sub Workbook_Open() dazu.

Splash-Blatt

Jede Profi-Lösung hat einen gut durchdachten Splash-Screen, ebenso benötigt jede Kalkulations-Lösung ein Splash-Blatt.
Diese Seite sollte unverwechselbar sein und das "Look & Feel" der gesamten Lösung konzentriert zum Ausdruck bringen.
Sowohl AnfängerInnen als auch regelmäßige AnwenderInnen finden an dieser Stelle eine übersichtliche Ausgangs-Position.
Die Splash-Seite sollte knapp gehalten sein: man soll nicht rollen (scrollen), und von dort rasch zum gewünschten Ziel gelangen.
So sieht das Navigations-Sub aus, welches zum Splash-Blatt bringt: Auf Wunsch können sie anschließend eine Zelle oder einen Bereich des Splash-Blatts auswählen. Ändern sie den Namen des Arbeitsblatts nach Bedarf.
Ergänzen sie das Sub Workbook_Open() durch den Befehl Call goto_splash.
Es ist für AnwenderInnen sehr angenehm, auf jedem Blatt (möglichst an der gleichen Stelle) ein Home-Icon zu finden. Sie laden es von einer Datei mit Menü Einfügen | Grafik | Aus Datei.
Home Rechtsklick auf das Icon, Befehl Macro zuweisen, wählen sie aus der Liste goto_splash. -> So verwandeln sie das Icon in einen Home-Button.
Sub goto_splash()
Sheets("Splash").Select
' Range("A1").Select
End Sub
Häufig sind im Splash-Blatt auch Navigations-Elemente enthalten. Details zum Thema Navigation.

Parameter

In fast jeder Kalkulations-Lösung sind zumindest einige wenige Parameter einstellbar. Es macht Sinn, diese Parameter am Anfang mit sorgfältig ausgewählten Standard-Werten einzustellen ("default") In bestimmten Fällen können sie auch mehrere "Sätze" von Parametern vorrätig halten, von denen je nach Bedarf einer eingesetzt wird.

Namen:

Vergeben sie dazu für alle in Frage kommenden Zellen und Bereiche Namen:
Bereich auswählen, Menü Einfügen | Namen | Definieren

Vergeben sie sprechende Namen. Ausgeschlossen sind Texte, welche mit Zell-Adressen verwechselt werden können (z.B. A1 )
Verwenden sie Namen (z.B. mwst_satz ) statt Adressen ( A1 ), denn letztere sind empfindlich gegen Einfügen, Löschen oder Verschieben von Zellen.
So sieht ein einfaches Sub zur Initialisierung eines (!) Parameters aus.
Ergänzen sie dieses Modell für alle Parameter, die initialisiert werden sollen.
Ergänzen sie das Sub Workbook_Open() durch den Befehl Call init_parameter.
Gleitkomma-Zahlen werden in VBA immer mit Komma-Punkt (!) formatiert. Im Kalkulationsblatt erscheint dann das jeweils eingestellte Komma-Zeichen.
Falls die Init-Daten sehr umfangreich sind, oder sich öfters ändern, kann man sie auch von einer Datei einlesen. Kurzfristig ist dazu das Format "Text" am besten, mittelfristig eher → XML.
Sub init_parameter()
Dim p As Range
Set p = Range("mwst_satz")
' Set p = Range("A15") ' Vorsicht !
p.Value = 0.2
End Sub

VBA-Profi

In komplett ausgearbeiteten Lösungen erinnert kaum mehr etwas an das Original-Kalkulationsprogramm:
Sie können Menüs und Menüleisten ändern, ergänzen, abschalten und durch spezielle angepasste Menü-Befehle ersetzen.
Zahlreiche Standard-Elemente können durch spezielle Lösungs-Komponenten ersetzt werden.
Alle dazu notwendigen Maßnahmen werden normalerweise während der Initialisierung durchgeführt.
So weitgehende Änderungen müssen vor dem Abschalten wieder rückgängig gemacht werden, derartige komplexe Lösungen verwenden dazu den → Event-Handler Workbook_BeforeClose