13.07.2015 Aufrufe

Modellbasiertes Logistikmanagement - Prof. Dr. Heinz-Michael ...

Modellbasiertes Logistikmanagement - Prof. Dr. Heinz-Michael ...

Modellbasiertes Logistikmanagement - Prof. Dr. Heinz-Michael ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Logistikmanagement</strong>mit HeuristikenLogistische Problemstellungenunter Verwendung von Excel VBA lösen<strong>Prof</strong>. <strong>Dr</strong>. <strong>Heinz</strong>-<strong>Michael</strong> WinkelsWS 2013/14


InhaltsverzeichnisA.3.2 Standardkonventionen für die Namensgebung .................................... 47A.3.3 Prozeduren .......................................................................................... 48A.3.3.1 Sub-Prozeduren ...................................................................... 48A.3.3.2 Function-Prozeduren............................................................... 50A.3.3.3 Property-Prozeduren ............................................................... 50A.3.4 Konstante, Variable und Datenfeldern ................................................. 51A.3.4.1 Standard-Datentypen .............................................................. 51A.3.4.2 Benutzerdefinierte Datentypen ................................................ 52A.1.1 Aufzähl-Typen ......................................................................... 53A.3.4.3 Deklarieren von Konstanten .................................................... 53A.3.4.4 Deklarieren von Variablen ....................................................... 55A.3.4.5 Deklarieren von Variablen innerhalb einer Prozedur ............... 56A.3.4.6 Deklarieren von Datenfeldern innerhalb einer Prozedur ......... 57A.3.5 Operatoren .......................................................................................... 59A.3.5.1 Arithmetische Operatoren zum Durchführen mathematischerBerechnungen ......................................................................... 59A.3.5.2 Vergleichsoperatoren zum Durchführen von Vergleichen ....... 59A.3.5.3 Verkettungsoperatoren zum Aneinanderhängen vonZeichenfolgen ......................................................................... 59A.3.5.4 Logische Operatoren zum Durchführen logischer Operationen59A.3.6 Kontrollstrukturen................................................................................. 60A.3.6.1 IF-Verzweigung ....................................................................... 60A.3.6.2 IIF-Verzweigung ...................................................................... 60A.3.6.3 For-Next-Schleife .................................................................... 61A.3.6.4 For-Each-Next-Schleife ........................................................... 61A.3.6.5 Do-Until-Loop-Schleife ............................................................ 62A.3.6.6 Do-While-Loop-Schleife .......................................................... 62A.3.6.7 Select Case-Anweisung .......................................................... 62A.4 Verwendung der verschiedenen Funktions-Arten in Excel-VBA .................... 64A.4.1 Die verschiedenen Funktions-Arten in Excel-VBA ............................... 64A.4.2 Benutzerdefinierte VBA-Funktionen..................................................... 64A.4.2.1 Verwendung in VBA-Prozeduren ............................................ 64A.4.2.2 Verwendung in Arbeitsblättern ................................................ 65A.4.3 Vorinstallierte VBA-Funktionen ............................................................ 66A.4.3.1 Verwendung in VBA-Prozeduren ............................................ 66A.4.3.2 Verwendung in Arbeitsblättern ................................................ 66A.4.4 Excel-Funktionen ................................................................................. 67A.4.4.1 Besonderheiten von Excel-Funktionen.................................... 67A.4.4.2 Verwendung in VBA-Prozeduren ............................................ 68A.4.4.3 VBA-Befehle für die Zellenbelegung in Arbeitsblättern ........... 69A.5 Verwendung von Objekten in Excel-VBA ....................................................... 71A.5.1 Begriffsklärung ..................................................................................... 72A.5.2 Schreibweisen ..................................................................................... 73A.5.3 Objektlisten .......................................................................................... 74A.5.4 Objektvariablen .................................................................................... 74A.5.5 Das Excel Objektmodell ....................................................................... 75A.5.5.1 Das Application-Objekt ............................................................ 76A.5.5.2 Das Workbook-Objekt ............................................................. 76A.5.5.3 Das Worksheet-Objekt ............................................................ 77A.5.5.4 Das Range-Objekt................................................................... 77A.5.6 Spezielle Verwendungen des Excel Objektmodells ............................. 78III


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.5.6.1 Positionierung in Range-Objekten .......................................... 78A.5.6.2 Positionierung mit der Cells-Eigenschaft ................................. 79A.5.6.3 Cursorposition feststellen ........................................................ 79A.5.6.4 Zellen, Zellbereiche, Zeilen, Spalten gezielt auswählen.......... 80A.5.6.5 Relatives Versetzen von Bereichen und Cursor ...................... 80A.5.6.6 Bereichsnamen vergeben mit Name-Eigenschaft ................... 81A.5.6.7 Wertzuweisungen mit Value-Eigenschaft ................................ 82A.5.6.8 Formeln eintragen mit der Formula-Eigenschaft ..................... 82A.5.6.9 Formatierung von Zellbereichen ............................................. 82A.5.6.10 Löschen von Zellbereichen ................................................. 83A.5.7 Erstellung eigener Klassen .................................................................. 83A.5.7.1 Definition einer Klasse ............................................................ 83A.5.7.2 Eigenschaften ......................................................................... 83A.5.7.3 Methoden ................................................................................ 85A.5.7.4 Spezielle Ereignisprozeduren: Konstruktor und Destruktor ..... 85A.5.8 Erzeugung neuer Objekte .................................................................... 86A.5.9 Entfernen von Objekten ....................................................................... 87A.5.10 Erstellung von Ereignisprozeduren ......................................... 87A.5.10.1 Allgemeine Ereignisprozeduren .......................................... 87A.5.10.2 Eigene Ereignisprozeduren ................................................. 88A.5.10.3 Objekt mit WithEvents erstellen .......................................... 88A.5.10.4 Deklaration einer Objektvariablen vom Typ Application ...... 89A.5.10.5 Eingabe des Programmcodes für die Ereignisprozedur ...... 90A.5.10.6 Ausführen der Ereignisprozedur.......................................... 90B Übersicht über die vorinstallierten VBA-Funktionen .............................................. 91B.1 Datums- und Zeitfunktionen ........................................................................... 91B.2 Textfunktionen ............................................................................................... 92B.3 Dateifunktionen und Anweisungen ................................................................ 95B.4 Mathematische Funktionen ............................................................................ 97C Übersicht über die Excel-Funktionen ................................................................... 100C.1 Finanzmathematische Funktionen ............................................................... 100C.2 Logische Funktionen .................................................................................... 104C.3 Textfunktionen ............................................................................................. 104C.4 Datums- und Uhrzeitfunktionen ................................................................... 106C.5 Nachschlage- und Verweisfunktionen .......................................................... 108C.6 Mathematische und trigonometrische Funktionen ....................................... 110C.7 Statistische Funktionen ................................................................................ 114C.8 Konstruktionsfunktionen............................................................................... 122C.9 Cubefunktionen ............................................................................................ 124C.10Informationsfunktionen................................................................................. 126C.11Datenbankfunktionen ................................................................................... 127C.12Kompatibilitätsfunktionen ............................................................................. 128C.13Add-ins und Automatisierung ....................................................................... 131D Übersicht über die wichtigsten Excel-Objekte ..................................................... 132D.1 Das Application-Objekt ................................................................................ 132D.1.1 Eigenschaften .................................................................................... 132D.1.2 Methoden ........................................................................................... 133D.1.3 Ereignisse .......................................................................................... 133D.2 Das Workbook-Objekt .................................................................................. 137D.2.1 Eigenschaften .................................................................................... 137D.2.2 Methoden ........................................................................................... 137IV


InhaltsverzeichnisD.2.3 Ereignisse .......................................................................................... 138D.3 Das Worksheet-Objekt ................................................................................. 141D.3.1 Eigenschaften .................................................................................... 141D.3.2 Methoden ........................................................................................... 142D.3.3 Ereignisse .......................................................................................... 142D.4 Das Range-Objekt ....................................................................................... 144D.4.1 Eigenschaften .................................................................................... 144D.4.2 Methoden ........................................................................................... 145D.4.3 Ereignisse .......................................................................................... 145Literaturverzeichnis.................................................................................................. 146Stichwortverzeichnis ................................................................................................ 149V


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A Crash-Kurs in Excel VBAIn diesem Abschnitt geben wir einen Überblick über die Programmiersprache VisualBasic for Applications (VBA) von Microsoft, ausgerichtet auf Excel, wobei wirKenntnisse in einer gängigen Programmiersprache voraussetzen. Das hat denVorteil, dass damit die Erklärung grundlegendender Begriffe nicht logischaufeinander aufbauend erklärt werden muss. Der nachfolgende Text ist als Steilkursfür Programmierer mit Vorkenntnissen gedacht, die sich möglichst schnell in eine fürsie neue Programmiersprache und deren Entwicklungsumgebung einarbeiten wollen,ohne sich lange mit zwar pädagogischen aber für ihre momentane Problemstellungirrelevanten Beispielen zu beschäftigen. 12VBA ist eine leistungsfähige Skriptsprache und die am weitesten verbreiteteMöglichkeit, auf Microsoft-Office-Anwendungen (Excel, Word, Access etc.)basierende Programme zu erstellen. VBA ist auf prozedurale Programmierungausgerichtet. Zwar gibt es auch in diesem Zusammenhang Klassen und Objekte mitMerkmalen wie Datenkapselung, nicht jedoch die Implementierungsvererbungobjektorientierter Sprachen.In diesem kurzen Schnelleinstieg können natürlich nur die wichtigsten Aspekte vonVBA behandelt werden. Wir empfehlen dem Nutzer, die nicht erwähnten Icons undMenüs auf dem Bildschirm selbständig aus zu probieren, um auf diese Weise derenFunktionalität spielerisch zu erfassen. Sie lassen sich in der Regel intuitiv verstehen.Diese Vorgehensweise empfiehlt sich übrigens für jede neueProgrammierumgebung.Als Hilfsmittel greifen wir vornehmlich auf die von Microsoft bereits in Excelintegrierte und somit direkt verfügbare Hilfe-Funktion zurück. Im Bedarfsfall können1 Umfassende und sehr ausführliche Einführungen in Excel-VBA findet man beispielsweise in denBüchern von Held (2004, 2010a, 2010b). Eine kompakte Einführung bietet Nahrstedt (2011). Füreinen Grundkurs in Programmierung mit Visual Basic siehe beispielsweise Kämper (2009).2 Die Ausführungen hier basieren weitgehend auf der Excel-Hilfe und dabei insbesondere aufhttp://office.microsoft.com/de-de/ecel-help/http://www.excel-functions.infohttp://de.excelfunctions.eu/6


Crash-Kurs in Excel VBAhier Antworten zu den meisten Fragen der Themenstellung gefunden werden.Weitere Hilfestellungen kann man dann über das Internet erlangen, diesbezüglicheLinks werden angegeben.Am Ende eines Abschnittes wird in der Regel ein zugehöriges Suchkriterium für dieHilfe-Funktion angegeben und durch markiert. Damit kann man dannweiterführende Informationen zu den jeweiligen Themen finden. Eine weitereMöglichkeit besteht darin, mit der Maus auf ein entsprechendes Icon des Bildschirmszu zeigen und die F1-Hilfe-Taste zu drücken.A.1 Die Entwicklungsumgebung von Excel VBAA.1.1Aktivierung der EntwicklertoolsDie Registerkarte Entwicklertools wird in Excel 2010 nicht standardmäßigangezeigt. Sie kann wie folgt aktiviert werden:Registerkarte Datei Optionen Menüband anpassen Hauptregisterkarten Kontrollkästchen Entwicklertools aktivieren OK.Abbildung: Aktivierung der EntwicklertoolsA.1.2Aufruf der Entwicklungsumgebung7


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Innerhalb der Entwicklungsumgebung kann für eine Anwendung der Programm-Codegeschrieben und Bildschirmformulare mit deren Steuerelemente entwickelt werden.Sie ist somit das Gegenstück zur Ausführung einer Anwendung.Die Entwicklungsumgebung kann in Excel 2010 über folgende Möglichkeitenaufgerufen werden:• Tastenkombination ALT + F11 (die schnellste Möglichkeit).• Innerhalb der Registerkarte Entwicklertools durch Anklicken des VisualBasic Symbols oder alternativ des Menüpunktes Code Anzeigen.• Anklicken eines beliebigen Tabellenreiters (unten auf dem Blatt) und innerhalbdes <strong>Dr</strong>op-down-Menüs Code Anzeigen wählen.Abbildung: Aufrufen der BenutzeroberflächeMakros: Erstellen oder Löschen eines MakrosDie Menüstruktur wirkt auf den ersten Blick recht komplex. Es können diverseFenster über den Menüpunkt Ansicht angezeigt werden, die sich bei nähererBetrachtung hinsichtlich ihrer Funktionalität sehr praktisch ergänzen. Neben denStandards wie Projekt-Explorer und Eigenschaftenfenster sind da auch noch dieFenster Überwachungsfenster, Direktfenster, Lokal-Fenster sowie derObjektkatalog.A.1.3Der Projekt-ExplorerUnter einem Projekt versteht man eine Zusammenfassung unterschiedlicherProgrammtexte für eine bestimmte Anwendung (im Beispiel: eine Tourenplanung).8


Crash-Kurs in Excel VBAMan spricht auch von einem Container für die unterschiedlichen Arten vonProgramm-Code und nennt die Arten allgemein Module. Dazu gehören 1 :• Programm-Code hinsichtlich der geöffneten Excel-Objekte: derArbeitsmappen (mit der Standard-Bezeichnung: DieseArbeitsmappe) undderen Arbeitsblätter (mit den Standard-Bezeichnungen Tabelle1, etc.),• Programm-Code für Formulare (oder: UserForms, kurz: Forms) genannteBenutzeroberflächen mit den Standard-Bezeichnungen UserForm1, etc. Hierhandelt es sich um Container für Bildschirmmasken, Steuerelemente undzugehörigen Anweisungen in Form von Prozeduren.• Allgemeiner, nicht objekt-spezifischer Programm-Code in Form vonProzeduren, der in unterschiedlichen Sinneinheiten (für die Programmstrukturund eventuellen Textaustausch zwischen Projekten) zusammengefasst bzw.„gekapselt“ wird: Standardmodule mit den Standard-Bezeichnungen Modul1,etc. 2• sowie den Klassenmodulen mit den Standard-Bezeichnungen Klasse1, etc.als Container für selbst definierte Objekte mit den Definitionen ihrer Methodenund Eigenschaften.Jedes Projekt besitzt einen Namen. Wird der gleiche Projektname (im BeispielVBAProjekt) in unterschiedlichen Dateien benutzt, so erscheint in Klammern dahinterauch der Dateiname.1 Oftmals wird sprachlich nicht zwischen Modulen und Standardmodulen unterschieden, was häufigzur Verwirrung beiträgt.2 Standardmodule wurden von Microsoft bis 2007 als Code-Module bezeichnet.9


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Abbildung: Projekt-ExplorerDer Projekt-Explorer dient nur zur Verwaltung der Projekte, nicht zu deren inhaltlicherErstellung. Er zeigt eine hierarchische Liste aller Projekte der momentan geöffnetenArbeitsmappen an, sowie die über den Excel-Manager eingebundenen Add-Ins(installierte Dateien mit der Endung .xla bzw. .xlam, in der Abbildung beispielsweiseder Solver). Diese lassen sich jedoch nur dann im Detail anzeigen, wenn sie nichtPasswort-geschützt sind.10


Crash-Kurs in Excel VBADarüber hinaus wird auch noch das Projekt Personal.xlsb angezeigt 1 , in der alspersönliche Library solche Programm-Codes gespeichert werden können, die dannauch für alle weiteren eigenen Arbeitsmappen zur Verfügung stehen sollen.Für das Öffnen des Projekt-Explorers gibt es folgende Möglichkeiten:• Tastenkombination STRG + R drücken.• Registerkarte Ansicht Projekt-Explorer wählen.• Anklicken des Icons Projekt-Explorer in der Symbolleiste derEntwicklungsumgebung.Bei einem neuen Projekt wird immer VBAProjekt als Vorgabe-Namen für das aktuelleProjekt aufgeführt. Für ein solches neues Projekt sind nur die Microsoft ExcelObjekte standardmäßig vorhanden und angezeigt. Formulare, Standardmodule oderKlassenmodule müssen dann erst noch angelegt werden.Mit Rechtsklick auf VBAProjekt Eigenschaften von VBAProjekt kann man denNamen ändern und die detaillierte Anzeige des Projektes per Passwort sperren.Projekt-ExplorerA.1.4Das EigenschaftenfensterIm Eigenschaftenfenster werden alle Eigenschaften und Einstellungen des imProjekt-Explorer ausgewählten Moduls zur Entwurfszeit angezeigt. Dievoreingestellten Werte können hier verändert werden, ohne dass dafür aufwändigeProgrammierarbeit zu leisten ist. (Beispiele: Ein- und Ausblenden von Tabellen,Festlegen von Eingabebereichen, für die Programmierung genutzte interneNamensgebungen für alle angesprochenen Module, usw.).Für das Öffnen des Eigenschaftenfensters gibt es folgende Möglichkeiten:• Taste F4 drücken,• Registerkarte Ansicht Eigenschaftenfenster wählen,1 Personal.xlsb wird seit Excel 2007 für die persönliche Makrosammlung benutzt, vorher war das dieDatei personl.xls11


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>• Anklicken des Icons Eigenschaftenfenster in der Symbolleiste derEntwicklungsumgebung.Abbildung: Eigenschaftenfenster bezogen auf das Excel Objekt DieseArbeitsmappeEigenschaftenfensterIn der Hilfe befindet sich ebenfalls eine Übersicht mit nützlichen Shortcuts für dasEditieren der Eigenschaften.Shortcuts für das EigenschaftenfensterUm die Definition/Bedeutung der einzelnen Eigenschaften zu erhalten, markiere manden Namen durch Anklicken bis er blau hinterlegt ist und drücke dann auf die F1-Taste.A.1.5Das Code-FensterDas Code-Fenster ist der eigentliche Visual-Basic-Editor. Es dient zum Erstellen,Anzeigen und Bearbeiten von Visual-Basic-Code.12


Crash-Kurs in Excel VBAFür das Öffnen eines Code-Fensters gibt es folgende Möglichkeiten:• Doppelklick im Projektfenster auf ein Excel-Objekt, Standardmodul oderKlassenmodul.Beim Doppelklick auf ein Formular öffnet sich zunächst ein graphischer Editor,der sogenannte Formular-Designer zum Entwurf von Dialog-Formularen undPlatzieren von Steuerelementen, beim weiteren Doppelklick auf einSteuerelement oder eine Formularfläche dann das Code-Fenster für dieEingabe zugehöriger Prozeduren.• Markieren eines Moduls im Projektfenster und Anklicken der SchaltflächeCode anzeigen in der Kopfzeile des Projektfensters.• Markieren eines Moduls im Projektfenster und im Menü Ansicht auf Codeklicken oder F7 drücken.Abbildung: Code-FensterIm oberen Teil sind zwei Auswahlfelder zu sehen. Im Feld Objekt (1) können alleverfügbaren Objekte ausgewählt werden. Abhängig von der Auswahl ändern sichdann auch die Einträge im Feld Prozedur (2). Es werden nur die für das Feld Objektmöglichen Ereignisse angezeigt.In der Kennzeichenleiste im Fenster unten links kann gewählt werden, ob dieProzeduren eines Modules einzeln oder gesamt angezeigt werden.Code-Fenster13


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.1.6Der ObjektkatalogDer Objektkatalog wird über den Menüpunkt Anzeige oder die F2-Taste angezeigt.Er stellt alle relevanten Objekte übersichtlich dar, nicht nur die Objekte aus denvordefinierten Excel-Bibliotheken, sondern auch die eventuell manuell erstelltenObjekte aus allen zugänglichen Projekten.Abbildung: ObjektkatalogDas Feld Projekt/Bibliothek zeigt alle Bibliotheken an, auf die das aktive Projektverweist. Es können Bibliotheken hinzugefügt oder über die Auswahl AlleBibliotheken angezeigt werden.Im Feld Suchtext darunter kann Freitext eingeben werden, wobei auchPlatzhalterzeichen verwendet werden können. Die letzten vier Einträge werdengespeichert und können ausgewählt werden.In dem Teilfenster Klassen werden alle verfügbaren Klassen der ausgewähltenBibliothek aufgelistet. Die Klasse wird in Fettschrift dargestellt, wenn für diese Code14


Crash-Kurs in Excel VBAvorhanden ist. Standardelement einer Klasse sind durch ein * markiert und werdenautomatisch verwendet, wenn kein anderes Element festgelegt wurde.Das Teilfenster Elemente von zeigt alle Elemente der ausgewählten Klasse, wobeiMethoden, Eigenschaften, Ereignisse oder Konstante, für die Code vorhanden ist, inFettschrift dargestellt werden.Das Teilfenster Details zeigt detaillierte Informationen des ausgewählten Elementsoder der übergeordneten Klasse an. Der hier angezeigte Text kann kopiert werden.In diesem <strong>Dr</strong>op-down-Feld lassen sich die Bibliotheken, in denen gesucht werdensoll, wiederum eingrenzen.Dabei kann zwischen folgenden Bereichen gewählt werden:BIBLIOTHEKBESCHREIBUNGAlle BibliothekenAlle Elemente aus allen Klassen werden angezeigt.ExcelNur Elemente, die in Excel zur Verfügung stehen.MSFormsOfficestdoleVBAVBAProjectElement, die für die Erstellung von Microsoft Formularenbenutzt werden können.Alle Elemente, die im gesamten Office-Paket genutztwerden können.Die für das Microsoft Objektsystem OLE zur Verfügungstehenden Elemente.Alle Elemente, die nur im VBA Editor zur Verfügungstehen.Zeigt alle Elemente an, die im aktuellen Projekt benutztwerden.Tabelle: Bibliotheken des ObjektkatalogesNachdem der Suchbegriff in das zweite <strong>Dr</strong>op-down-Feld eingeben wurde, erscheinenalle gefundenen Ergebnisse im Bereich Suchergebnisse. Dabei werden die15


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>gefundenen Elemente angezeigt, welchen Klassen diese zugeordnet sind und inwelcher Bibliothek sie sich befinden. Das untere Anzeigefeld zeigt die Eigenschaftendes jeweiligen Elementes. Beispielhaft ist in der nachfolgenden Abbildung derSuchbegriff sqrt zu sehen. Anschließend wurde das Element SqrtPi ausgewählt, umdie Eigenschaften des Elementes zu veranschaulichen.An dieser Stelle kann durch einfaches Markieren eines Elementes die Excel-Hilfe zudiesem aufgerufen werden. Dazu muss entweder die F1-Taste, der Button imObjektkatalog oder das Excel-Hilfe Icon im Kontextmenü gewählt werden. DieElemente lassen sich per Copy & Paste in das gewünschte Projekt kopieren.Abbildung: Suchanfrage im Objektkatalog16


Crash-Kurs in Excel VBAWird ein Rechtsklick innerhalb des Objektkataloges ausgeführt, so öffnet sich dasbekannte Kontextmenü. Dieses enthält zwei nützliche Funktionen. Zum einen lässtder Punkt Verborgene Elemente anzeigen auch versteckte Elemente sichtbarwerden und zum anderen können mit dem Unterpunkt Verweise zusätzlicheBibliotheken in den Objektkatalog eingebunden werden. Durch einfaches Anhakendes jeweiligen Verweises wird die Verknüpfung zum Objektkatalog hergestellt und istdurch anschließende Bestätigung des Fensters verfügbar. Die zur Verfügungstehenden Bibliotheken hängen von der Software ab, die auf dem Rechner installiertist.Die folgende Abbildung zeigt ein Dialogfenster zur Aktivierung weiterer Bibliotheken.Abbildung: Verweise im ObjektkatalogObjektkatalogA.1.7Testumgebung: Das DirektfensterZum Austesten von Programmen und zur Fehlersuche lässt sich das Direktfensterverwenden. Es wird über die Registerkarte Ansicht Direktfenster oder alternativdurch die Tastenkombination STRG + G geöffnet.17


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Im Direktfenster kann temporärer Code eingegeben werden, der nach Betätigung derEingabetaste ausgeführt wird. Der (ausgetestete) eingegebene Code kann aus demDirektfenster kopiert und in das Code-Fenster eingefügt werden. Das Speichern desCodes im Direktfenster ist nicht möglich.Abbildung: DirektfensterDirektfensterA.1.8Testumgebung: Das ÜberwachungsfensterDas Überwachungsfenster dient ebenfalls für Testzwecke. Es erscheint automatisch,sobald im Code spezielle Überwachungsausdrücke deklariert wurden.Abbildung: Überwachungsfenster18


Crash-Kurs in Excel VBADer Überwachungsausdruck wird in der Spalte Ausdruck angezeigt. In der SpalteWert wird der Wert des Ausdrucks beim Übergang in den Haltemodus angezeigt.Dieser Wert kann bearbeitet werden. Bei unzulässigen Werten bleibt dasBearbeitungsfeld aktiv, der Wert wird markiert und eine Meldung mit derFehlerbeschreibung erscheint. Durch Betätigen der ESC-Taste können Änderungenzurückgenommen werden.Aktuelle Werte, die nicht im Gültigkeitsbereich liegen, werden beim Wechsel in denHaltemodus nicht angezeigt.ÜberwachungsfensterA.1.9Testumgebung: Das Lokal-FensterDas Lokal-Fenster komplettiert die Instrumente der Testumgebung. Es zeigt allefestgelegten Variablen in der gegenwärtigen Prozedur mit zugehörigem Wert an.Nach einem Wechsel zwischen Laufzeit- und Haltemodus oder der Auswahl einesanderen Eintrages in der Aufrufliste wird das Lokal-Fenster aktualisiert.Abbildung: Lokal-FensterDie Namen der Variablen werden in der Spalte Ausdruck aufgelistet und könnennicht verändert werden. Um alle Variablen des aktuellen Moduls auf Modulebeneanzuzeigen, kann die erste Variable in der Liste, eine spezielle Modulvariable,erweitert werden. Variablen werden in den verschiedenen Modulen differenziertdargestellt. Die Systemvariable ist bei einem Klassenmodul definiert, währendbei Standardmodulen der die erste Variable darstellt19


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Über das Lokal-Fenster sind globale Variablen und Variablen in anderen Projektennicht verfügbar.Der Eintrag in der Spalte Wert kann bearbeitet werden. Bei unzulässigen Wertenbleibt das Bearbeitungsfeld aktiv, der Wert wird markiert und eine Meldung mit derFehlerbeschreibung erscheint. Durch Betätigen der ESC-Taste können Änderungenzurückgenommen werden. Dabei muss für alle numerischen Variablen ein gültigerWert angegeben werden, während bei Zeichenfolgevariablen keine Eingabevorhanden sein muss. Es besteht die Möglichkeit, Variablen mit untergeordnetenVariablen ein- oder auszublenden, wobei ausgeblendete Variablen keinen Wertanzeigen. Der Variablentyp wird im Element Typ angezeigt und kann nicht bearbeitetwerden.Lokal-FensterA.1.10 Die Excel-Hilfe innerhalb der EntwicklungsumgebungDie Excel-Hilfe bietet dem Entwickler zahlreiche Möglichkeiten, Fragen zur VisualBasic Thematik nachzuschlagen.Für den Aufruf der Excel-Hilfe innerhalb der VBA-Entwicklungsumgebung gibt esfolgende Möglichkeiten:• Über die Menüleiste durch Aufruf des Icons .• Anklicken des Punktes .• <strong>Dr</strong>ücken der F1-Taste.Abbildung: Aufruf der Excel-Hilfe in der MenüleisteDie nachfolgende Abbildung zeigt die Excel-Hilfe nach dessen Aufruf. Das gesamteInhaltsverzeichnis der Hilfe wird durch das Symbol(1) angezeigt und an der20


Crash-Kurs in Excel VBAgleichen Stelle auch wieder ausgeblendet. Für die Suchanfragen wird dasEingabefeld (2) genutzt. Darüber hinaus besteht die Möglichkeit, über den <strong>Dr</strong>opdown-Button(3) den Suchbereich einzuschränken oder zu erweitern.Abbildung: Die Excel-HilfeDie nächste Abbildung zeigt die Einschränkung der Suche. Die Inhalte desSuchbereichs sind in zwei Kategorien aufgeteilt. Der obere Bereich Inhalte vonOffice.com (1) stellt die sogenannte Online-Suche dar. In diesem Abschnitt werdenalle Suchanfragen mit der Online-Hilfe von Microsoft bearbeitet. Dazu wird eineaufgebaute Internetverbindung benötigt.Der Bereich Inhalte von diesem Computer (2) bewirkt, dass nur die lokalen Inhalteder Excel-Hilfe durchsucht werden. Diese wird automatisch bei derStandardinstallation von Microsoft Excel 2010 auf dem Computer installiert und reichtfür die meisten Suchanfragen aus.21


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Abbildung: Einschränkung der SucheA.1.11 Einstellen der EntwicklungsumgebungDie Entwicklungsumgebung von Excel VBA kann individuell eingestellt werden überdie Befehlsfolge: Registerkarte Entwicklertools Extras Optionen.Abbildung: Einstellungen der Entwicklungsumgebung: EditorUnter den Editor-Einstellungen sollte Variablendeklaration erforderlich aktiviertsein. Damit ist es dann im Sinne einer sauberen Programmentwicklung erforderlich,alle verwendeten Variablen vor deren Nutzung zu deklarieren. Auf diese Weise wirdin allen neuen Modulen die Anweisung Option Explicit an erster Stelle den22


Crash-Kurs in Excel VBAallgemeinen Deklarationen hinzugefügt. Für jede nicht definierte Variable erfolgtdann eine Fehlermeldung.Abbildung: Einstellungen der Entwicklungsumgebung: VerankerungVerankerbare Fenster werden automatisch ausgerichtet, nicht verankerbare Fensterkönnen an eine beliebige Position auf dem Bildschirm verschoben werden. Auf dieseWeise können beispielsweise Projekt- und Eigenschaftenfenster praktischerweiseauf einen zweiten Bildschirm verlagert werden.Optionen23


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.2 Die Eingabe von Programm-CodeDie Programmierumgebung von Visual Basic unterscheidet Excel-Objekte,Formulare, Standardmodule und Klassenmodule. Als Programm-Code werden (imSprachgebrauch von Microsoft) sogenannte (VBA-) Makros erzeugt, das sindTextbausteine in der Syntax der Programmiersprache VBA, die durch den Visual–Basic-Interpreter oder Präprozessor bei der Ausführung automatisch durch eingrößeres Stück Programm-Code ersetzt werden. Der Makro-Begriff stammt aus denAnfängen von Excel (Version 4). Damals wurde noch eine auf BASIC abzielenderudimentäre Programmiersprache benutzt. Im Zusammenhang mit demfortgeschrittenen VBA sind die Begriffe Makro und (VBA-) Prozedur synonym.Der Programm-Code wird innerhalb der Entwicklungsumgebung über das Code-Fenster eingegeben. Hierbei werden die bereits erwähnten Modul-Blätter, kurzModule erzeugt. Ein Modul kann eines oder mehrere Makros/Prozeduren enthalten.Der besondere Vorteil der Nutzung des Code-Fensters besteht in denProgrammierhilfen, genannt IntelliSense, die Microsoft hier bietet. Alternativ kannman aber auch für die Programmerzeugung externe (ASCII-) Text-Editoren benutzenund diesen Text dann über den Projekt-Explorer importieren:Rechtsklick auf Modul und Datei importieren wählen.Das Exportieren von Programm-Code in ASCII-Dateien zum Sichern undeventuellen Verwendung für andere Zwecke verläuft entsprechend.A.2.1Erfassen von Makros mit dem Makro-RekorderMit dem Makro-Rekorder lassen sich bequem und einfach Makros erstellen. Er wirdüber die Registerkarte Entwicklertools (1) Makro aufzchn. (2) OK gestartet.Ein neues Fenster öffnet sich, in dem der Makroname und der Speicherortangegeben werden. Eine Tastenkombination zum späteren Ausführen des Makroskann optional hinterlegt werden.24


Crash-Kurs in Excel VBAAbbildung: Makro aufzeichnen mit Makro-RekorderNach dem Start des Makro-Rekorders werden alle Tastatureingaben und Mausklicksaufgezeichnet. Diese Aufzeichnungen werden relativ zur Cursor-Position beimAufruf des Rekorders vorgenommen, wenn vorher noch die Option RelativeAufzeichnung durch Anklicken festgestellt wird (dabei wird der Text gelb hinterlegt).Die Aufzeichnung wird über die Registerkarte Entwicklertools Aufzeichnungbeenden (3) gestoppt.Abbildung: Makro-Aufzeichnung beenden25


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Schnellstart: Erstellen eines MakrosA.2.2Bearbeiten oder Ausführen eines vorhandenen Makros überdie MenüstrukturDie vorhandenen Makros (gleichgültig, ob per Aufzeichnung oder manuell erstellt)können über viele Möglichkeiten ausgeführt oder bearbeitet werden.In der Excel-Umgebung:• unter der Registerkarte Entwicklertools mit Klick auf das Symbol Makros• oder alternativ über die Alt + F8 -Taste.In der Entwicklungsumgebung:• wählt man unter dem Menü Ausführen Sub/UserForm ausführen• oder über die F5-Taste• oder über den Rechtspfeil in der Werkzeugleiste.Man erhält in allen Fällen das nachfolgende Fenster.Abbildung: Fenster nach Aufruf des Menüpunktes MakroBeim Klick auf Bearbeiten öffnet sich das Code-Fenster für das Modul, das diesesMakro enthält, bei Schritt die schrittweise Testausführung.26


Crash-Kurs in Excel VBAUnter Optionen lässt sich nachträglich eine zugehörige Tastenkombination mit derSTRG-Taste einrichten oder ändern, mit der das Makro aus Excel heraus gestartetwerden kann.Ausführen eines MakrosA.2.3Der Start von Makros mit Graphiken und SteuerelementenEine alternative, aber sehr benutzerfreundliche Möglichkeit zum Ausführen einesMakros besteht darin, eine Graphik oder ein Steuerelement in eines der geöffnetenExcel-Arbeitsblätter aufzunehmen und mit dem Makro zu verbinden.A.2.3.1Ausführen eines Makros durch Anklicken einesGrafikobjektesFür diesen Zweck wird zunächst in ein Arbeitsblatt ein Grafikobjekt eingefügt, z. B.ein Bild, eine ClipArt, eine Form oder eine SmartArt. Die entsprechendenMöglichkeiten finden sich unter der Registrierkarte Einfügen.Abbildung: Einfügen von GraphikobjektenHinzufügen, Ändern oder Löschen von Formen.Man kann das Graphikobjekt nun mit der rechten Maustaste anklicken und einemMakro zuweisen. Microsoft spricht hier von einem Hotspot. Es lässt sich durchAnklicken dann noch zusätzlich formatieren:Abbildung: Formatieren eines GraphikobjektesAusführen eines Makros27


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.2.3.2Ausführen eines Makros durch Anklicken einesSteuerelementesEine weitere Möglichkeit, eine Graphik zum Aufruf eines Makros zu benutzen,besteht darin, Formular- oder ActiveX-Steuerelemente als spezielle Objekte in einArbeitsblatt zu integrieren. Für diesen Zweck klicke man unter der RegistrierkarteEntwicklertools auf Einfügen. Die entsprechende Toolbox wird angezeigt, mankann ein Steuerelement anwählen und auf dem Arbeitsblatt platzieren. Währenddieses Vorganges ändert sich die Form des Cursors zu einem Kreuz.Abbildung: Einfügen von Formularsteuerelementen und ActiveX-SteuerelementenAbbildung: Anzeige der Toolbox für SteuerelementeWill man das Steuerelement hinterher bearbeiten, muss zuvor in der RegisterkarteEntwicklertools auf den Entwurfsmodus umgeschaltet werden.FormularsteuerelementeFormularsteuerelemente sind die ursprünglichen Steuerelemente von Excel (XLM).Das Makro wird über Rechtsklick auf dem Steuerelement mit diesem verbundenund startet dann beim Anklicken des Steuerelementes. Innerhalb derFormularsteuerelemente wird je nach Art des Elementes bei dessen Formatierungauf den Inhalt von Arbeitsblatt-Zellen oder Zellenbereichen verwiesen. Diese Werte28


Crash-Kurs in Excel VBAkönnen dann als Parameter für ein Makro im Rahmen der Programmierungübernommen werden. 1ActiveX-SteuerelementeActiveX-Steuerelemente bieten im Vergleich zu Formularsteuerelementenumfangreichere Optionen zur Automatisierung einer Aufgabe an. Es ist nicht möglich,ein Makro über ein ActiveX-Steuerelement nur durch Zuweisung auszuführen, so wiees bei einem Formularsteuerelement möglich ist. Die Makros gehören hierstattdessen als eigener VBA-Code direkt zum Steuerelement, so wie bei den noch zubeschreibenden UserForms und werden auch genauso behandelt. Zusätzlichverfügen sie über umfangreiche Eigenschaften, mit denen Darstellung, Verhalten,Schriftarten und andere Merkmale angepasst werden können. Klickt man auf dasSteuerelement, so wird zugehörige VBA-Code ausgeführt und alle für diesesSteuerelement auftretenden Ereignisse verarbeitet.Einige der ActiveX-Steuerelemente stehen nur auf UserForms zur Verfügung. 2Übersicht über Formulare, Formularsteuerelemente und ActiveX-Steuerelementeauf einem Arbeitsblatt.A.2.4Programmierung mithilfe des Code-FenstersNeben der automatischen Erfassung von Makros mit Hilfe des Makro-Rekorderskann Programm-Code im integrierten Visual-Basic-Editor über das Code-Fenstererstellt und bearbeitet werden.A.2.4.1IntelliSenseDer Visual-Basic-Editor verfügt mit IntelliSense über eine integrierte Funktionalität,die dem Programmierer durch zusätzliche Informationen und Auswahlmöglichkeitendie Arbeit erleichtert und die insbesondere den Aufwand des manuell einzugebendenQuellcodes reduzieren soll:1 Siehe http://support.microsoft.com/kb/291073/de2 Siehe http://office.microsoft.com/de-de/excel-help/ubersicht-uber-formulare-formularsteuerelementeund-activex-steuerelemente-auf-einem-arbeitsblatt-HA010342745.aspx29


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>• Der Quellcode wird nach jeder Eingabezeile optisch hinsichtlich derSchreibweise (Groß- und Kleinschreibung) zur besseren Übersichtlichkeitaufbereitet.• (Insbesondere lange) Variablennamen können mit STRG + Leertaste oderSTRG + Tab automatisch vervollständigt werden, sobald ein Name eindeutigfeststeht.• Bei der Eingabe eines Punkts hinter einer Objektvariablen werden dieEigenschaften und Methoden eines Objektes auflistet und die leichte Auswahlaus der Liste ermöglicht.• Bei dem Aufruf von Prozeduren erfolgen Hilfestellungen zur Angabe derParameter.Diese Hilfestellungen können eingestellt werden über die Befehlsfolge:Registerkarte Entwicklertools Extras Optionen.Editor (Registerkarte, Dialogfeld "Optionen")A.2.4.2 Hilfestellungen über die Bearbeiten Symbolleiste 1Die IntelliSense Funktionalitäten können zusätzlich auch über die SymbolleisteBearbeiten abgerufen werden. Sie enthält weitere Schaltflächen, dieTastenkombinationen für häufig verwendete Menübefehle zum Bearbeiten von Codedarstellen:Abbildung: Symbolleiste BearbeitenEigenschaften/Methoden anzeigen (Strg + J)Öffnet ein Feld im Code-Fenster mit den Eigenschaften und Methoden,die für das Objekt vor dem Punkt (.) verfügbar sind.1 Siehe Excel-Hilfe unter „Bearbeiten Symbolleiste“30


Crash-Kurs in Excel VBAKonstanten anzeigen (Strg + Umschalt + J)Öffnet ein Feld im Code-Fenster mit den Konstanten, die für die eingegebeneEigenschaft zur Verfügung stehen, die vor dem Gleichheitszeichen (=) steht.QuickInfo (Strg + I)Stellt Informationen zur Syntax für eine Variable, Funktion, Methode oderProzedur zur Verfügung, auf deren Namen sich der Cursor befindet.Parameterinfo (Strg + Umschalt + I)Zeigt im Code-Fenster ein Popup-Fenster mit Informationen zu denParametern der Funktion an, in der sich der Cursor befindet.Wort vervollständigen (Strg + Leertaste)Visual Basic ergänzt automatisch das eingegebene Teil-Wort.Einzug vergrößern (Tab vorwärts)Verschiebt alle Zeilen des markierten Bereichs bis zum nächsten Tabstop.Einzug verkleinern (Tab rückwärts)Verschiebt alle Zeilen des markierten Bereichs bis zum vorherigen Tabstop.Haltepunkt ein/aus (F9)Setzt oder entfernt einen Haltepunkt für das Debuggen in der aktuellen Zeile.Block auskommentierenFügt Kommentarzeichen am Zeilenanfang eines markierten Textbereichs ein.Auskommentierung des Blocks aufhebenEntfernt Kommentarzeichen am Zeilenanfang eines markierten Textbereichs.Lesezeichen setzen/zurücksetzenAktiviert bzw. deaktiviert ein Lesezeichen für die aktive Zeile im Code-Fenster.Nächstes LesezeichenSetzt den Fokus auf das nächste Lesezeichen in der Lesezeichenliste.Vorheriges LesezeichenVerschiebt den Fokus auf das vorherige Lesezeichen in der Lesezeichenliste.Alle Lesezeichen löschenLöscht alle Lesezeichen.Bearbeiten-Symbolleiste31


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.2.4.3Direkter und indirekter Aufruf des Code-FenstersAlle nicht über Formulare eingegebenen Programme werden direkt gespeichert undlassen sich auch direkt aufrufen: die Excel-Objekte, die Standardmodule oder dieKlassenmodule.Für den Programm-Code, der den Ablauf von Benutzeroberflächen (UserForms)regelt, wird das Code-Fenster innerhalb des logisch übergeordneten Formular-Designers aufgerufen, indem auf ein Steuerelement geklickt wird.A.2.4.4Anlegen eines neuen ModulesDie Excel-Objekte sind immer schon über die gewöhnliche Excel-Umgebungvorgegeben. Falls aber noch keine Standard- bzw. Klassenmodule vorhanden seinsollten, müssen diese zunächst angelegt werden, bevor Programm-Codeeingegeben werden kann.Für das Anlegen eines neuen Standardmodules [Klassenmodules] gibt es folgendeMöglichkeiten:• Man wählt in der Entwicklungsumgebung aus dem Menü Einfügen den BefehlModul [Klassenmodul].• Man wählt in der Symbolleiste Voreinstellung das <strong>Dr</strong>op-down-Symbol unddann Modul [Klassenmodul].• Rechtsklick im Projekt-Explorer auf den Projektnamen Einfügen Modul[Klassenmodul].In jedem Fall öffnet sich ein noch leeres, jetzt editierbares Code-Fenster.Projekt-ExplorerA.2.4.5Aufruf eines vorhandenen ModulesZum Öffnen eines bereits vorhandenen Programmtextes klickt man im Projekt-Explorer doppelt auf den Namen des Modules, das diesen Text enthält oder wählt –wie oben erwähnt - das gewünschte Makro über die Registerkarte Entwicklertoolsmit Klick auf das Symbol Makros.32


Crash-Kurs in Excel VBAFür jedes vorhandene Modul kann ein eigenes Code-Fenster geöffnet werden. Aufdiese Weise kann Programm-Code zwischen unterschiedlichen Modulen undFenstern verschoben oder kopiert werden.MakrosA.2.4.6Anlegen einer neuen ProzedurNachdem das Code-Fenster geöffnet ist, bietet die EntwicklungsumgebungHilfestellung bei der Eingabe einer neuen Prozedur (im alten Sprachgebrauch: einesMakros).Dazu gibt es folgende Möglichkeiten:• Man wählt in der Entwicklungsumgebung aus dem Menü Einfügen den BefehlProzedur.• Man wählt in der Symbolleiste Voreinstellung das <strong>Dr</strong>op-down-Symbol(Prozedur einfügen) und dann Prozedur.Abbildung: Prozedur hinzufügenEs öffnet sich das obige Fenster, indem dann einer der drei möglichen Prozedur-Typen (SUB, FUNCTION, PROPERTY) sowie der Gültigkeitsbereich der Prozedurfestgelegt werden.33


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>VBA unterscheidet zwischen vier Gültigkeitsbereichen für Prozeduren, Objekte,Variablen und Konstante:• PUBLIC: Öffentliche Ebene, d.h. alle Prozeduren in allen Modulen• PUBLIC und Option Private –Anweisung für ein Modul: Projektebene, d.h. alleProzeduren in allen Modulen des zugehörigen Projektes, aber nicht darüberhinaus.• PRIVATE: Modulebene, alle Prozeduren in dem Modul der so deklariertenProzedur• STATIC: Prozedurebene und bedeutet, dass die zugehörigen lokalenVariablen nach dem Aufruf der Prozedur ihren Wert beibehalten und nichtstandardmäßig gelöscht werden.Für Prozeduren in Klassenmodulen (und nur hier) gibt es dazu noch den optionalenZusatz FRIEND. Dadurch sind diese Prozeduren auch in bestimmten anderenKlassen des Projektes aufrufbar, den sogenannten befreundeten Klassen.In jedem genannten Fall erzeugt die Entwicklungsumgebung dann das Gerüstinnerhalb der VBA-Syntax, welches anschließend durch weiteren Programm-Codeergänzt werden kann.Erstellen einer ProzedurA.2.5Debugging/FehlersucheIn der Entwicklungsumgebung werden unter dem Menü Debuggen verschiedeneWerkzeuge aufgeführt, die bei der Diagnose und dem Auffinden von Fehlernbehilflich sein können.A.2.5.1Zeilenweise Abarbeitung einer ProzedurEine zeilenweise Abarbeitung, bei der jeder einzelne Schritt bestätigt werden muss,ist über das Menü Debuggen Einzelschritt oder die F8-Taste möglich. Eineweitere Möglichkeit besteht darin, den Lauf des Makros mit Hilfe der34


Crash-Kurs in Excel VBATastenkombination STRG + F8 an einer mit dem Cursor markierten Position zuunterbrechen.Verfolgen der Ausführung des CodesA.2.5.2Verwendung von Haltepunkten in einer ProzedurÜber das Menü Debuggen Haltepunkt ein/aus oder mit der F9-Taste könnenentsprechende Haltepunkte eingefügt und mit der TastenkombinationSTRG + UMSCHALT + F9 wieder gelöscht werden.Setzen und Löschen eines HaltepunktesA.2.5.3Verwendung von Überwachungsausdrücken in einerProzedurDarüber hinaus können über das Menü Debuggen Überwachung hinzufügenbenutzerdefinierte Überwachungsausdrücke festgelegt werden, die das Verhalteneines Ausdrucks beobachten und im Überwachungsfenster angezeigt werden.Sobald die Anwendung in den Haltemodus wechselt, können die einzelnen Werteüberprüft werden.Hinzufügen eines ÜberwachungsausdrucksA.2.6StandarddialogeExcel bietet eine Vielzahl an Standarddialogen für Interaktionen mit dem Anwender.Diese werden z. B. dazu verwendet, Hinweise zu geben, Dateien auszuwählen oderEinstellung von Optionen vorzunehmen.Grundsätzlich lassen sich zwei Arten von Dialogfenstern (Dialoge) unterscheiden:• Vordefinierte VBA-Dialoge, wie z. B. MsgBox, InputBox• Integrierte Excel-Dialoge.35


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Generell basieren alle Dialoge auf dem UserForm-Objekt. Die Standard-Dialogekönnen über die Application-Eigenschaft Dialogs aufgerufen werden und mit derMethode Show angezeigt und ausgeführt werden.Listen der integrierten DialogfeldargumenteA.2.6.1Die Funktion MsgBoxMsgBox ist eine sehr häufig genutzte Funktion, die den Programmablauf unterbricht,in einem Dialogfeld eine Meldung anzeigt und auf die Auswahl einer Schaltflächewartet. Es wird ein Wert vom Typ Integer zurückgegeben, der anzeigt, auf welcheSchaltfläche der Benutzer geklickt hat.MsgBox(Prompt[, Buttons] [, Title] [, Helpfile, HelpContextId])Parameter:PromptButtonsErforderlich. Eine Kette von max. 1024 Zeichen, die als Meldung imDialogfeld erscheint.Optional mit Standardwert 0. Numerischer Ausdruck mit einemkombinierten Wert, der Anzahl und Typ der anzuzeigendenSchaltflächen entspricht, die Art des zu verwendenden Symbolssowie die Standardschaltfläche und die Bindung des Dialogfeldesangibt.Title Optional mit Anwendungsname als Standardwert. EinZeichenfolgenausdruck, der in der Titelleiste des Dialogfeldesangezeigt wird.HelpfileNur in Verbindung mit HelpContextId: Ein Zeichenfolgenausdruck,der die Hilfedatei mit der kontextbezogenen Hilfe für das Dialogfeldangibt.HelpContextId Optional. Ein numerischer Ausdruck mit der Hilfekontextkennung für36


Crash-Kurs in Excel VBAdas entsprechende Hilfethema.Beispiele ohne Berücksichtigung eines Rückgabewertes: (Keine Klammern!)MsgBox “Weitermachen ?“MsgBox “Der eingegebene Wert“ + Chr(13) + “ist unzulässig!“MsgBox “Ldistanz: “ & 27 & “ km“Bei einem Rückgabewert müssen Klammern gesetzt werden:Antwort = MsgBox(Mldg, Stil, Titel, Hilfe, Ktxt)MsgBox-Funktion, MsgBox-Funktion (Beispiel)A.2.6.2Die Funktion InputBoxVBA stellt für Benutzereingaben die Funktion InputBox zur Verfügung. Sie zeigt eineEingabeaufforderung in einem Dialogfeld an, wartet auf die Eingabe eines Textesoder auf das Klicken auf eine Schaltfläche und gibt einen Wert vom Typ Stringzurück, der den Inhalt des Textfeldes angibt.InputBox(prompt [, Title] [, Default] [, Left] [, Top] _[, Helpfile, HelpContextId])Parameter:Default optional: Zeichenfolge als Vorbelegung für das Eingabefeld,Standardwert ist leer.LeftTopoptional: Numerischer Ausdruck für die x-Position des Dialogfeldes, derhorizontale Abstand des linken Rands des Dialogfeldes vom linkenRand des Bildschirms in Points gemessen. Das Dialogfeld wirdstandardmäßig horizonal zentriert.optional: Numerischer Ausdruck für die y-Position des Dialogfeldes, dervertikale Abstand des oberen Rands des Dialogfeldes zum oberenRand des Bildschirms in Points gemessen. Das Dialogfeld wird37


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>standardmäßig 1/3 vom oberen Bildrand positioniert.Die anderen Parameter sind wie bei der Funktion MsgBox definiert.Wenn außer dem ersten benannten Argument weitere Argumente angeben werdensollen, muss InputBox in einem Ausdruck verwendet werden.Wenn einige Parameter mit einer Position am Anfang nicht angeben werden sollen,muss dennoch das entsprechende Komma als Trennzeichen angeben werden, sodass der Sinn von eingegebenen Parametern ersichtlich wird. Für komplettausgelassene Parameter am Listenende gilt das also nicht.BeispieleEingabe = InputBox( “Anzahl eingeben“, “Übersicht“, 0, 830, 950)Eingabe = InputBox( , , , 830, 950)InputBox-Funktion, InputBox-Funktion (Beispiel)A.2.6.3Die Methode InputBoxNeben der Funktion InputBox gibt es auch noch die Application-Methode mitgleichem Namen. Der Unterschied zur Funktion besteht darin, dass bei der Methodeauch noch der Typ des eingegebenen Wertes definiert werden kann.Objekt.InputBox(Prompt [, Title] [, Default] [, Left] [, Top] _[, HelpFile, HelpContextId][, Type])Parameter (sonst wie bei der Funktion InputBox):Typeoptional: Gibt den Datentyp des Rückgabewertes an. Wenn diesesArgument nicht angegeben wird, gibt das Dialogfeld Text zurück.Ohne Angabe des Objekts geht VBA von der InputBox-Funktion aus und liefert beider Type-Angabe eine Fehlermeldung.Wird Type nicht als Argument angegeben, so wird der Eingabewert je nach Form alsZahl, Text Boolscher Wert oder Formel interpretiert.Werte, die im Argument Type übergeben werden können:38


Crash-Kurs in Excel VBAWertBedeutung0 Formel1 Zahl2 Text (Zeichenfolge)4 Wahrheitswert (True oder False)8 Zellbezug, z. B. ein Range-Objekt16 Fehlerwert, z. B. #NV64 WertearrayBeispieleZahlEingabe = Application.InputBox( “Bitte Anzahl eingeben“)ZellenEingabe =Application.InputBox(Prompt:=“Bitte Zelle markieren“, Type:=8)Application.InputBox-MethodeA.2.7Erstellen einer User-FormNeben den nicht veränderbaren Standard-Dialogen gibt es die benutzerdefiniertenDialoge, die sogenannten UserForms. Sie dienen der Realisierung eineranwenderfreundlichen Lösung und können mit individuellen Steuerelementenbestückt und automatisiert werden.Zu den Steuerelementen gehören folgende Elemente:• Eingabe- und Textfelder• Listenfelder• Kombinationslistenfelder• Optionsschaltflächen• Kontrollkästchen.Vorgehensweise: Erstellen eines benutzerdefinierten DialogfeldsA.2.7.1Benutzerformular erstellen39


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>UserForms können über das Menü Einfügen ausgewählt werden und öffnen einenFormular-Designer mit zugehörigen Werkzeugen (s. nachfolgende Abbildung).Abbildung: UserForm-EingabeA.2.7.2Steuerelemente einfügenDiese Werkzeuge ermöglichen es dem Benutzer, unterschiedliche Steuerelemente indie UserForm einzufügen. Standardmäßig sind folgende Elemente enthalten:Elemente markieren.Texte einfügen.Eingabefeld einfügen.Kombinationsfeld einfügen. Mit einem Klick auf das Pfeilsymbol gibt esweitere Auswahlmöglichkeiten. Werte können hier auch manuell durch denBenutzer eingetragen werden.Listenfeld einfügen. Da mehrere Einträge gleichzeitig angezeigt werden,benötigt das Listenfeld mehr Platz. Kann die UserForm nicht alle Einträgeanzeigen, wird dynamisch eine vertikale Steuerungsleiste eingebunden.Rahmen einfügen. Einzelne Elemente können mit Hilfe desRahmenelementes gruppiert werden.40


Crash-Kurs in Excel VBAKontrollkästchen einfügen. Bei der Verwendung von Kontrollkästcheninnerhalb einer Gruppe können ein aber auch mehrere Kontrollkästchenaktiviert werden.Optionsfeld einfügen. Bei der Verwendung von Kontrollkästchen innerhalbeiner Gruppe kann immer nur ein Kontrollkästchen aktiviert sein.Umschaltfeld einfügen. Mit Hilfe des Umschaltfeldes können zweiFunktionen in einem Steuerelement untergebracht werden, wie z.B.Gitternetz ein/ Gitternetz aus.Befehlsschaltfläche einfügen. Die Befehlsschaltflächen können später mitMakros bestückt werden.Register einfügen. Inhaltlich zusammenhängende Steuerelemente inGruppen können mit jeweils unterschiedlichen Informationenzusammengestellt und angezeigt werden.Multiseiten einfügen. Größere Mengen an Information, die zuunterschiedlichen Kategorien gehören, können eingegeben werden.Bildlaufleiste einfügen. Dieses Steuerelement wird verwendet, wenn dieUserForm so groß ist, dass bestimmte Elemente nur mit Hilfe vonBildlaufleisten angezeigt werden können.<strong>Dr</strong>ehfeld einfügen. Mit Hilfe dieses Symbols können z.B. Zahlenschrittweise erhöht werden. Meist wird dieses Steuerelement zusammen miteinem Textfeld verwendet, in dem das Ergebnis schrittweise angepasstwerden kann.Grafiken, Logos oder Bilder einfügen.Einen Bereich über ein Eingabefeld markieren bzw. eigene Texte eingebenund an die UserForm übergeben.Tabelle: Steuerelemente einer UserFormZusätzlich können über einen Rechtsklick auf die Werkzeugsammlung weitereSteuerelemente hinzugefügt werden. Ebenso können bereits ausgewählteWerkzeuge aus der Ansicht gelöscht werden.A.2.7.3Steuerelementeigenschaften festlegenSteuerelemente können zusätzlich noch durch weitere Eigenschaften beschriebenwerden. Diese sind über einen Rechtsklick Eigenschaften auf dasentsprechende Steuerelement zugänglich.Beschriftung41


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Beim Einfügen der Steuerelemente wird standardmäßig eine Beschriftung eingefügt.Diese kann in einem weiteren Schritt den Anforderungen entsprechend abgeändertwerden. Dazu auf die Standard-Beschriftung klicken und die neue Beschriftungeinfügen.PositionierungMit der StartupPosition-Eigenschaft ist es möglich, den Startwert festzulegen, anwelcher Stelle auf dem Bildschirm der Dialog erscheinen soll. Da diese Eigenschaftnicht im Objektkatalog aufgeführt ist, werden hier die vier Einstellungen erläutert:EINSTELLUNG WERT BESCHREIBUNGManual 0CenterOwner 1Für den Dialog wird keine Anfangseinstellungfestgelegt.Dialog wird auf dem Element zentriert, zu dem dasUserForm-Objekt gehört (Defaulteinstellung).CenterScreen 2 Dialog wird anhand des Bildschirms zentriert.Windows Default 3Dialog erscheint in der linken oberen Ecke desBildschirms.Tabelle: UserForm positionierenUnabhängig von StartupPosition können Dialoge manuell positioniert werden.Dazu werden die Eigenschaften Left und Top in der UserForm_Activate-Ereignisprozedur eingestellt.AktivierreihenfolgeBei der Erstellung von UserForms sollte die Aktivierreihenfolge beachtet werden,anhand derer die einzelnen Steuerelemente ausgeführt werden. Dies kann in Bezugauf ein Springen mit der Tab-Taste interessant für den Benutzer sein. Mit einemRechtsklick auf die UserForm kann im Menü-Fenster die Reihenfolge ausgewähltwerden:42


Crash-Kurs in Excel VBAAbbildung: AktivierreihenfolgeUserForm programmierenNachdem Steuerelemente in die UserForm eingefügt wurden, können diese auch mitFunktionen versehen werden. Steuerelemente können zur Laufzeit initialisiertwerden, indem der VBA-Code in einer Prozedur verwendet wird. Dazu müssen dannauch Prozeduren/Makros erstellt werden, welche die UserForm aufrufen, umEingaben zu tätigen. Die eingegebenen Daten müssen dafür in einer Tabellegespeichert werden. Zum Schluss muss die UserForm wieder beendet werden.A.2.7.4Steuerelement-Eigenschaften initialisierenMit Hilfe des Initialize-Ereignisses können Anfangswerte für das Steuerelementfestgelegt werden. Der Vorteil hier besteht darin, dass der Initialisierungscode imFormular bleibt und dadurch in andere Projekte kopiert werden kann. Mit Hilfe derShow-Methode, mittels der das Dialogfeld angezeigt werden kann, können dieSteuerelemente initialisiert werden.Außerdem können Steuerelemente zur Laufzeit initialisiert werden, indem VBA-Codein einem Makro verwendet wird.Initialisieren von Steuerelement-EigenschaftenA.2.7.5Steuerelement- und Dialogfeldereignisse erstellenUserForms besitzen einen vordefinierten Ereignissatz, d.h. dass z. B. eineBefehlsschaltfläche ein Click-Ereignis oder UserForms-Objekte ein Initializie-Ereignisbesitzen.43


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Um Ereignisprozeduren für ein Steuerelemente bzw. ein Formular zu schreiben,muss das Steuerelement bzw. das Formular mit einem Doppelklick geöffnet werdenund aus dem <strong>Dr</strong>op-down-Listenfeld bzw. über Einfügen Prozedur eine Prozedurausgewählt werden. Dann erst kann der Code der Ereignisprozedur hinzugefügtwerden.A.2.7.6UserForm anzeigenUm eine UserForm über VBA-Code anzuzeigen, muss sie zunächst als Objektgeladen und dann mit der Show-Methode angezeigt werden.Load UserFormNameLoad-AnweisungUserFormName.ShowUserForm ObjektSoll eine erstellte UserForm getestet werden, so kann die Ausführung überAusführen Sub/ Formular ausführen oder über die F5-Taste angestoßenwerden.A.2.7.7Steuerelemente während der Code-AusführungverwendenWährend der Code-Ausführung besteht die Möglichkeit, einige der Steuerelemente-Eigenschaften festzulegen und zurückzugeben. Daten, die in ein Formulareingegeben wurden, gehen beim Schließen des Fensters verloren. Daher müssendie eingegebenen Daten in Variablen der Modulebene gespeichert werden, währenddas Formular noch ausgeführt wird.44Verwenden von Steuerelementen während der Code-Ausführung


Crash-Kurs in Excel VBAA.2.7.8Besonderheiten beim DialogendeDurch den X-Button des Dialogfelds in der rechten oberen Ecke kann ein Dialoggeschlossen werden. Ist dies nicht gewünscht, so muss das QueryClose-Ereignismit dem Parameter CloseMode ausgewertet werden.Dieses Ereignis kann verschiedene Zustände haben:EINSTELLUNG WERT BESCHREIBUNGvbFormControlMenu 0Der Benutzer hat auf der UserForm im Systemmenüden Befehl Schließen gewählt.VbFormCode 1 Die Unload-Anweisung wird durch Code aufgerufen.VbAppWindows 2VbAppTaskManager 3Die aktuelle Windows-Betriebsumgebungssitzungwird beendet.Die Anwendung wird vom Windows-Task-Managergeschlossen.Tabelle: QueryClose-EreignisDieses Ereignis kann über das Argument Cancel gesteuert werden. Durch Festlegendes Arguments auf einen Wert ungleich 0 wird das QueryClose-Ereignis in allengeladenen Benutzerformularen beendet. So wird verhindert, dass die UserForm unddie Anwendung geschlossen werden.Private Sub UserForm_QueryClose(Cancel%, CloseMode%)If CloseMode = vbFormControlMenu Then Cancel = TrueEnd Sub45


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.2.8Internet Links für Hilfestellungen zur VBA ProgrammierungEinige geeignete Portale und Medien sind im Folgenden aufgeführt:BEREICH / ANBIETERINTERNETLINK / BEGRIFFWikibooks VBA in ExcelGalileo ComputingEinstieg in Visual Basic2010VBA-Programmierunghttp://de.wikibooks.org/wiki/VBA_in_Excelhttp://openbook.galileocomputing.de/einstieg_vb_2010/http://www.vba-wordwelt.de/Visual Basic OnlineSeminarExcel Standard undExcel VBAMicrosoft DeveloperNetworkhttp://www.vb-seminar.de/http://www.online-excel.de/http://msdn.microsoft.com/dede/library/office/ee814737(v=office.14).aspxYoutubeSuchbegriff: VBA TutorialOffice Forumhttp://www.office-loesung.de/viewforum10_0_0.phpExcel-Formel-Übersetzerhttp://de.excel-translator.de/Tabelle: Hilfestellungen über das Internet46


Crash-Kurs in Excel VBAA.3 Die Syntax von VBADas folgende Kapitel sind die wichtigsten Sprachelemente von VBAzusammengefasst. Zusätzliche Erläuterungen liefert grundsätzlich das Visual-BasicSprachverzeichnis in der Excel-Hilfe für Entwickler .A.3.1Kommentare und SchreibkonventionenEingefügte Kommentare und Übersichtlichkeit im Schriftbild sind wesentlicheMerkmale guter Programmierung. Sie sind unabdingbar, um ein Programm auchnach längerer Zeit schnell wieder verstehen zu können.• Ein Kommentarbereich (nicht notwendig am Anfang einer Zeile) beginnt miteinem Hochkomma und endet am Zeilenende.• Eine Kommentarzeile beginnt mit der klassischen Anweisung Rem (fürRemark).• Für eine bessere Übersichtlichkeit können Texte eingerückt werden.• Längere Anweisungen können auf mehrere Zeilen verteilt werden, indem einUnterstrich mit vorangehendem Leerzeichen gesetzt wird.• Mehrere Anweisungen innerhalb einer Zeile werden durch Doppelpunktgetrennt.Rem Das ist ein Kommentar.‘ Dies ist ebenfalls eine Kommentarzeile.‘ Es folgt eine Anweisung über drei Zeilen.i = MsgBox("Dies ist ein sehr langer Text.", _vbOKOnly, _"Achtung! Achtung!")‘ Es folgen drei Anweisungen in einer Zeilex=y: u=w: a=bA.3.2Standardkonventionen für die NamensgebungEine Reihe von Sprachelementen in VBA muss zur Unterscheidung einen Namenerhalten, z. B. Variablen, Konstante, Prozeduren, Objekte, Formulare, etc.47


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Hierbei ist folgende Standardkonvention zu beachten:• Das erste Zeichen muss ein Buchstabe sein,• jedes weitere Zeichen eine Ziffer, ein Buchstabe oder ein Sonderzeichen,• Sonderzeichen wie #, %, &, ! , ? sowie mathematischen Zeichen undLeerzeichen sind nicht erlaubt,• maximal 255 Zeichen,• kein VBA Schlüsselwort.A.3.3ProzedurenEine Prozedur ist eine Folge von gemeinsam ausgeführten Anweisungen. In VBAunterscheidet man die Prozedurtypen Sub, Function und Property. Jede Prozedurmuss mit einem eindeutigen Namen versehen werden.Prozeduren sind standardmäßig Public, wenn sie nicht explizit mit Public oderPrivate deklariert werden. Auf eine solche Prozedur kann von allen anderenProzeduren in allen Modulen zugegriffen werden. Bei Verwendung in einem Modulmit einer Option Private-Anweisung kann auf die Prozedur nur innerhalb desProjekts zugegriffen werden.A.3.3.1Sub-Prozeduren[Private | Public] [Static] Sub Name [(ArgListe)][Anweisungen][Exit Sub][Anweisungen]End SubArgListe ist eine Variablenliste mit den Argumenten, die an die Sub-Prozedur beimAufruf übergeben werden. Mehrere Variablen werden durch Kommata getrennt.Dabei wird die folgende Syntax verwendet:48


Crash-Kurs in Excel VBA[Optional][ByVal | ByRef] [ParamArray] VarName[()][As Typ][=Standardwert]Mit folgenden Bedeutungen:• Optional, dass ein Argument nicht erforderlich ist. Alle daran anschließendenArgumente müssen ebenfalls optional sein.• ByVal, dass das Argument als Wert übergeben wird.• ByRef, dass das Argument als Referenz zur Speicheradresse übergeben wird(Standard in VBA)• ParamArray ist nur als letztes Argument in ArgListe zulässig und gibt an,dass das letzte Element ein als Optional deklariertes Datenfeld mit Variant-Elementen ist. ParamArray erlaubt die Angabe einer variablen Anzahl vonArgumenten und darf nicht in Kombination mit den Schlüsselwörtern ByVal,ByRef oder Optional benutzt werden.Sub-AnweisungAufruf einer Sub-ProzedurCall ProzedurName[(ArgListe)]bzw.ProzedurName[ArgListe]Mit folgenden Bedeutungen:• Call ist dabei ein optionales Schlüsselwort. Wird es angegeben, so MUSSArgListe in Klammern stehen.• ArgListe ist die durch Kommata getrennte Liste der Variablen, die an dieProzedur übergeben werden sollen. Wird das Schlüsselwort Call NICHTverwendet, darf ArgListe NICHT in Klammern stehen.Call-Anweisung49


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.3.3.2Function-Prozeduren[Public | Private | Friend] [Static] Function Name [(ArgListe)][As Typ][Anweisungen][Name = Ausdruck][Exit Function][Anweisungen][Name = Ausdruck]End FunctionFunction-Prozeduren sind standardmäßig Public, wenn sie nicht explizit mit Public,Private oder Friend deklariert werden. Für ArgListe gelten die gleichen Regeln, wiesie unter Sub-Prozeduren aufgeführt wurden.Aufruf einer Function-ProzedurDer Aufruf einer Function-Prozedur innerhalb eines Ausdrucks erfolgt durch Angabedes Funktionsnamens gefolgt von der Argumentliste in Klammern.Beispiel: d = LuftDist(x_a, y_A, x_B, y_B, -1)Wird die Funktion nur aufgerufen ohne den Rückgabewert zuzuordnen, so wird dieFunktion wie eine Sub-Prozedur behandelt.Beispiel:MsgBox “Weitermachen?“Call MsgBox(“Weitermachen?“)Function-AnweisungA.3.3.3Property-ProzedurenÜber Property-Prozeduren können benutzerdefinierte Eigenschaften in UserForms,Standardmodulen und Klassenmodulen erstellt und bearbeitet werden. Sie werdendamit zu einer Eigenschaft des Moduls, das die Prozedur enthält.50


Crash-Kurs in Excel VBA[Public | Private] [Static] Property {Get | Let | Set}Eigenschaftsname [(Argumente)] [As Typ]AnweisungenEnd PropertySchreiben einer Property-ProzedurA.3.4Konstante, Variable und DatenfeldernDas Speichern von Daten läuft auch in VBA über Konstante und Variable, die durchNamen unterschieden werden. Hinsichtlich des Speicherbedarfes werden dieüblichen unterschiedlichen Datentypen betrachtet. Bei der Deklaration vonKonstanten, Variablen oder Datenfeldern wird dann deren individuellerSpeicherbedarf festgelegt.A.3.4.1Standard-DatentypenWERTDATENTYPWERTEBEREICH/SPEICHERBEDARFKÜRZEL DEFTYPByteWertebereich: 0. . . 255,1 Byte SpeicherbedarfkeinDefByteGanze ZahlenReelle ZahlenIntegerLongSingleDoubleCurrencyInteger Wertebereich: -32768. . . 32 767, 2 ByteSpeicherbedarfWertebereich: -2 147 483648. . . 2 147 483 647, 4 ByteSpeicherbedarfFließkommazahl mit 8 StellenGenauigkeit, 4 ByteSpeicherbedarfFließkommazahl mit 16Stellen Genauigkeit, 8 ByteSpeicherbedarfFestkommazahlen mit 15Stellen Genauigkeit vor und 4Stellen hinter dem Komma;Speicherbedarf: 8 Byte% DefInt& DefLng! DefSng# DefDbl@ DefCur51


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>WERTDATENTYPWERTEBEREICH/SPEICHERBEDARFKÜRZEL DEFTYPZeichenkettenStringWahrheitswerte BooleanVariant-DatentypVariantSpeicherbedarf: 10 Byte und2 Byte pro Zeichen; Längenur durch RAM begrenztDatentyp, der nur zwei Werteannehmen kann (True,False); Speicherbedarf: 2ByteNimmt je nach Bedarf einender obigen Datentypen an;Speicherbedarf: mindestens16 Byte, bei Zeichenketten 22Byte plus 2 Byte pro Zeichen$ DefStrkein DefBoolkein DefVarDatum/Zeit Date 8 Byte Speicherbedarf Kein DefDateObjekteObjectVerweis auf ein Objekt4 Byte SpeicherbedarfkeinDefObjTabelle: Standard-Datentypen in VBADatentypenA.3.4.2Benutzerdefinierte DatentypenNeben den Standard-Datentypen kann man als Benutzer aber auch noch eigeneDatensätze mittels der Type-Anweisung definieren.Die Type-Anweisung kann nur auf Modulebene verwendet werden. Nach derDeklaration eines solchen benutzerdefinierten Typs kann eine Variable oder einDatenfeld dieses Typs innerhalb des Gültigkeitsbereiches dieser Type-Deklarationdeklariert werden.[Private | Public] Type TypNameAttributName1 [([Indizes])] As Typ[AttributName2 [([Indizes])] As Typ]...End Type52


Crash-Kurs in Excel VBABeispiel:Type LkwHersteller As String = “MAN“Gewicht As Double = 34.12Stellplaetze As Integer = 100End TypeLkw.Hersteller = “Mercedes“Type-AnweisungA.1.1 Aufzähl-TypenEnum-Typen werden mit konstanten Werten initialisiert, die zur Laufzeit nichtverändert werden. Sie werden für die Deklaration von Variablen und Parameter mitklar definiertem diskretem Wertebereich verwendet und beschränken diese auf denangegebenen Wertebereich.Die Enum-Anweisung kann nur auf Modulebene verwendet werden. Enum-Typensind standardmäßig Public. Im Falle von Private ist der Typ nur in dem Modulsichtbar, in dem er definiert wurde.[Private | Public] Enum EnumNameElementName1 [= Konstantenausdruck][ElementName2 [= Konstantenausdruck]]...End EnumEnum-AnweisungA.3.4.3Deklarieren von KonstantenKonstanten können innerhalb oder außerhalb des Anweisungsblocks einer Prozedur(also zwischen Sub Name() … End Sub) definiert werden. In Sub-, Function- oderProperty-Prozeduren deklarierte Konstanten gelten als lokal innerhalb dieserProzedur. Eine Konstante, die außerhalb einer Prozedur deklariert wurde, ist für das53


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>gesamte umgebende Modul definiert. Konstanten können an allen Stellen verwendetwerden, an denen auch ein Ausdruck zulässig ist.[Public | Private] Const Name [ As Datentyp ] = AusdruckBeispiel: Const conAlter As Integer = 34Die optionalen Schlüsselworte Private und Public dürfen nicht innerhalb vonProzeduren benutzt werden, sondern nur außerhalb auf Modulebene. DieDeklaration muss dann also vor dem Schlüsselwort Sub erfolgen. Private bedeutetdabei, dass die Konstante nur innerhalb desjenigen Moduls zur Verfügung steht, indem sie deklariert wurde, Public dagegen, dass sie allen Prozeduren in allenModulen zur Verfügung steht. Innerhalb von Klassenmodulen dürfen Konstante nichtals Public deklariert werden.Deklarieren von KonstantenEs gibt vielfältige innerhalb von VBA bereits vordefinierte Konstante, um dieProgrammierung zu erleichtern, sie sind in der Excel-Hilfe unter Konstantenerläutert.• CallType-Konstanten• Compiler-Konstanten• Dateiattribut-Konstanten• Dateieingabe/-ausgabe-Konstanten• Datumsformat-Konstanten• Datumskonstanten• Dir-, GetAttr- und SetAttr-Konstanten• <strong>Dr</strong>iveType-Konstanten• Farbkonstanten• Formularkonstanten• IMEStatus-Konstanten• Kalender-Konstanten54


Crash-Kurs in Excel VBA• MsgBox-Konstanten• QueryClose-Konstanten• Shell-Konstanten• SpecialFolder-Konstanten• StrConv-Konstanten• Systemfarben-Konstanten• Tasten-Code-Konstanten• Tristate-Konstanten• VarType-Konstanten• Vergleichskonstanten• Verschiedene KonstantenA.3.4.4Deklarieren von VariablenWenn in den Editor-Einstellungen Variablendeklaration erforderlich aktiviert wurdeoder wenn die Anweisung Option Explicit im Modul verwendet wird, erfolgt für jedenicht deklarierte Variable eine Fehlermeldung. Ohne zwingende Variablendeklarationwird jede nicht deklarierte Variable als Variant-Typ behandelt.Variablen sind Speicherplätze für Zeichenfolgen (Strings), Werte und Objekte. IhreGültigkeit und die Lebensdauer ihrer Werte sind abhängig vom Ort und der Art ihrerDeklaration.• Deklaration innerhalb einer ProzedurDie Variable ist lokal, hat ihre Gültigkeit also ausschließlich für diese Prozedurund kann nicht aus anderen Prozeduren angesprochen werden.• Deklaration im ModulkopfDie Variable gilt für alle Prozeduren dieses Moduls, eine Weitergabe alsParameter ist nicht notwendig.• Deklaration im Modulkopf eines Standardmoduls als PublicDie Variable gilt für alle Prozeduren der Arbeitsmappe, soweit das dieProzedur enthaltene Modul nicht als Private deklariert ist.Public-Variablen und Variablen auf Modulebene sollte man eigentlich tunlichstvermeiden, da man nicht immer schnell feststellen kann, wann diese öffentlichen55


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Variablen ihren Wert verlieren oder wo er geändert wird. Die sauberste Lösung ist dieDeklaration innerhalb der Prozeduren und die Weitergabe als Parameter. 1GÜLTIGKEITSBEREICHUND LEBENSDAUEREINER VARIABLENDEKLARATIONÖffentlich(alle Prozeduren in allenModulen (des Projektes))Privat(nur in den Prozedurendes Moduls)Lokal vergänglich(Prozedurebene, Wertwird gelöscht)Lokal statisch(Prozedurebene, Wertwird beibehalten)Deklaration vor der Sub-Zeile mit Public-Anweisungz. B.: Public Variable As DatentypDeklaration vor Sub-Zeile mit Private-Anweisungz. B.: Private Variable As DatentypDeklaration nach der Sub-Zeile mit Dim-AnweisungDeklaration nach der Sub-Zeile mit Static-Anweisung:z. B.: Static Variable As DatenTypTabelle: Gültigkeitsbereiche und Lebensdauer von Variablen in VBAPublic-Anweisung, Private Anweisung, Dim-Anweisung, Static-AnweisungA.3.4.5Deklarieren von Variablen innerhalb einer ProzedurDie Deklaration von Variablen innerhalb einer Prozedur kann unter VBA auf dreiArten erfolgen. Die klassische Variante verwendet den expliziten Datentyp, diekürzere Variante lediglich ein Kurzzeichen direkt an den Namen gehängt. Mit derDefTyp-Anweisung kann man darüber hinaus auch noch Variablentypen fürVariablennamen festlegen, deren Name mit einem Buchstaben innerhalb einesgewissen Bereiches beginnt. Innerhalb einer Prozedur sollte man die Dim-Anweisung in der Regel an den Anfang der Prozedur stellen.Die Datentyp-Kürzel und DefTyp-Bezeichnungen entnehme man der obigen Tabellezu den Standard-Datentypen.1 Vergl.http://de.wikibooks.org/wiki/VBA_in_Excel/_G%C3%BCltigkeit_von_Variablen_und_Konstanten#Deklaration_auf_Prozedurebene56


Crash-Kurs in Excel VBADim Name1 As Datentyp1[, Name2 As Datentyp2[, …]]Dim Name1DatentypKürzel1[, Name2DatentypKürzel2[, …]]DefTyp Buchstabenbereich1[, Buchstabenbereich2[, …]]Beispiel:Dim AnzPers As Integer, LkwGew As DoubleDim AnzPers%, Curr$DefInt A-K, P-RDeklarieren von VariablenDefTyp AnweisungA.3.4.6Deklarieren von Datenfeldern innerhalb einer ProzedurDatenfelder sind Variablen mit einer zusätzlichen Dimensionsangabe.Deklarieren von Datenfeldern:Dim Name (Dimension1[, Dimension2[,…]]) As DatentypBeispiel:Dim Distanz(10,20) As DoubleOb ein Datenfeld mit 0 oder 1 beginnend indiziert ist, hängt von der Einstellung derOption Base-Anweisung ab. Wenn Option Base 1 nicht angegeben ist, beginnenalle Datenfelder mit dem Index Null. Das obige Beispiel wäre dann also eine 11x21-Matrix.Festlegen der Startindizes:Option Base {0 | 1}Die Dim-Anweisung kann auch in Kombination mit einem leeren Klammernpaar zurDeklaration eines dynamischen Datenfelds verwendet werden. Nach einer solchen57


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Deklaration kann man mit der nachfolgenden ReDim-Anweisung innerhalb desProgrammablaufes die Anzahl der Dimensionen und Elemente in dem Datenfeld neudefinieren. Gleiches gilt für bereits vorher festgelegte Werte der Indizes:Dynamisches Datenfeld erzeugen:Dim Name()Neudimensionierung von Datenfeldern:Redim [Preserve] Name (Dimension1 [, Dimension2 [,…]]) As DatentypDas Preserve rettet dabei – soweit möglich – vorhandene Daten, während dienachfolgende Anweisung das Datenfeld neu initialisiert:Neuinitialisierung von Datenfeldern:Erase NameNeben den Datenfeldern mit dem durch Option Base vorgegebenen Startindexlassen sich aber auch noch Datenfelder mit einem bestimmtem Indexbereichfestlegen.Deklarieren von Datenfeldern mit festgelegtem Indexbereich:Dim Name (Indizes1[, Indizes2[,…]]) As DatentypBeispiel:Dim LuftDistanz(5 To 10,10 To 20, 30) As DoubleWenn keine Untergrenze angegeben ist, wird die Vorgabe durch Option Basevorausgesetzt.58


Crash-Kurs in Excel VBADeklarieren von DatenfeldernA.3.5OperatorenVBA verwendet die üblichen arithmetischen, Vergleichs-, Verkettungs- und logischenOperatoren.Operatoren (Zusammenfassung)A.3.5.1Arithmetische Operatoren zum Durchführenmathematischer Berechnungen= , + , - , * , / ,^ , \ , Mod.Arithmetische OperatorenA.3.5.2Vergleichsoperatoren zum Durchführen von Vergleichen= , > , >= , < ,


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.3.6KontrollstrukturenDer folgende Abschnitt listet die Syntax zu den üblichen Kontrollstrukturen einerProgrammiersprache.A.3.6.1IF-VerzweigungVerzweigungen können mit Hilfe von Bedingungen bestimmte Zustände abfragen.Bei der If-Verzweigung wird zwischen zwei Formen unterschieden werden:Normale Syntax:If Bedingung Then Aktion1 Else Aktion2Block Syntax:‘ Version 1If Bedingung ThenAnweisungsblock1ElseAnweisungsblock2End If‘ Version 2If Bedingung1 ThenAnweisungsblock1ElseIf Bedingung2Anweisungsblock2ElseAnweisungsblock3End IfMit Hilfe von Verschachtelungen können mit der Blockform mehrere Bedingungennacheinander durchgeführt werden. Das End If ist dabei zwingend erforderlich.If …Then…Else-AnweisungA.3.6.2IIF-Verzweigung60


Crash-Kurs in Excel VBADie IIf-Verzweigung ist eine abgewandelte Form der If-Verzweigung. Diese werteteinen Ausdruck aus und gibt entweder den Wert für die korrekte oder für die falscheAuswertung zurück.IIf(Ausdruck, korrekt, falsch)Iif-FunktionA.3.6.3For-Next-SchleifeMit Hilfe der For-Next-Schleife kann ein Block von Anweisungen eine unbestimmteAnzahl an Wiederholungen durchlaufen werden. Dabei wird eine Zählervariableverwendet, die sich bei jedem Durchlauf erhöht oder verringert.For Zähler = Anfang To EndeAnweisung[Exit For][Anweisung]Next [Zähler]For…Next-AnweisungA.3.6.4For-Each-Next-SchleifeDie For-Each-Next-Schleife wiederholt eine Gruppe von Anweisungen für jedesElement in einem Datenfeld oder in einer Auflistung (von Objekten).For Each Element In Gruppe[Anweisung][Exit For][Anweisung]Next [Element]61


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>For Each…Next-AnweisungenA.3.6.5Do-Until-Loop-SchleifeDurch die Do-Until-Loop-Schleife wird ein Block von Anweisungen solangewiederholt, bis eine Bedingung den Status True erhält. Diese Bedingung wird jeweilsam Ende eines Durchlaufs geprüft.Do Until BedingungAnweisung[Exit Do][Anweisung]LoopDo…Loop-AnweisungA.3.6.6Do-While-Loop-SchleifeDiese Schleife funktioniert analog zur Do-Until-Loop-Schleife. Jedoch wird dieBedingung immer zu Beginn der Schleife abgefragt.Do While BedingungAnweisung[Exit Do][Anweisung]LoopDo…Loop-AnweisungA.3.6.7Select Case-AnweisungDie Select Case-Anweisung überprüft einen Ausdruck nach möglichen Werten undführt anschließend eine oder mehrere Anweisungen durch.62


Crash-Kurs in Excel VBASelect Case AusdruckCase Auswahlwert1[Anweisungsblock1]Case Auswahlwert2[Anweisungsblock2]…[Case ElseAnweisungsblock x]End SelectSelect Case-Anweisung63


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.4 Verwendung der verschiedenen Funktions-Arten in Excel-VBA 1A.4.1Die verschiedenen Funktions-Arten in Excel-VBAIn Excel-VBA gibt es drei Arten von Funktionen:• die benutzerdefinierte VBA-Funktionen, also die Function Prozedureninnerhalb der VBA Syntax,• bereits vorinstallierte VBA-Funktionen, die dem kompletten Office-Paket unddamit auch Excel zur Verfügung stehen,• sowie die Excel-Funktionen, die innerhalb der Tabellenkalkulation aufgerufenwerden können und die im Register Formeln aufgelistet sind.A.4.2A.4.2.1Benutzerdefinierte VBA-FunktionenVerwendung in VBA-ProzedurenWenn bestimmte Berechnungen häufig wiederholt werden, ist es sinnvoll, dafürspezielle Funktionen zu definieren, in logistischen Anwendungen beispielsweise fürdie Entfernungsberechnung nach Luftlinie zwischen zwei Orten auf einer Landkarteoder auf dem Globus.Function dPythagoras(xA As Double, yA As Double, _xB As Double, yB As Double) As DoubledPythagoras = Sqr((xA - xB) ^ 2 + (yA - yB) ^ 2)End FunctionMan beachte im Beispiel, dass die Parameter der Funktion in der Function-Anweisung per Kommata getrennt werden.Im Sinne eines guten Programmierstils ist übrigens immer auf eine saubereDimensionierung zu achten, für die Funktionen selbst, deren Parameter sowie die inden Funktionen verwendeten Variablen.1 Für eine ausgezeichnete Darstellung siehehttp://de.wikibooks.org/wiki/VBA_in_Excel/_Funktionen#Einsatz_von_benutzerdefinierten_Funktionen_.28UDF.29 (Fassung vom 25.7.2013).64


Crash-Kurs in Excel VBAA.4.2.2Verwendung in ArbeitsblätternNachdem man innerhalb der Entwicklungsumgebung eine Funktion in ein Moduleingegeben hat, steht diese Excel als benutzerdefinierte Funktion zur Verfügung.Function Mult7(x As Integer) As IntegerMult7 = 7 * xEnd FunctionKlickt man im Register Formeln auf Funktion einfügen oder alternativ dieShift + F3-Taste und wählt die Kategorie Benutzerdefiniert, so erhält manbeispielsweise:Abbildung: Einfügen einer benutzerdefinierten FunktionHier ist darauf zu achten, dass für den Funktionsnamen keine in Excel belegtenNamen verwendet werden, im oberen Beispiel etwa würde der Name X7 zu einerFehlermeldung führen wegen des Konfliktes mit der gleichnamigen Zelle.Besitzt eine Funktion mehrere Parameter, so werden diese beim Aufruf imTabellenblatt in der deutschsprachigen Excel Version nicht per Komma, sondernmit Semikolon getrennt!65


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Abbildung: Aufruf einer benutzerdefinierten Funktion mit mehreren ParameternA.4.3A.4.3.1Vorinstallierte VBA-FunktionenVerwendung in VBA-ProzedurenVorinstallierte Funktionen lassen sich - ob mit oder ohne Parameter – direkt inProzeduren aufrufen.‘‘ ohne Parameter‘Sub PathAct()MsgBox CurDirEnd Sub‘‘ mit Parameter‘Sub TypeAct()MsgBox TypeName(ActiveSheet)End SubIn jeder neuen Excel-Version kommen neue VBA-Funktionen hinzu.Für eine gewollt abwärtskompatible Anwendung ist deshalb zunächst zu prüfen, abwann die Funktion für VBA zur Verfügung gestellt wurde.A.4.3.2Verwendung in ArbeitsblätternUnter anderem wegen der unterschiedlichen Sprachversionen lassen sich VBA-Funktionen nicht direkt in Arbeitsblättern aufrufen. Schreibt man beispielsweise66


Crash-Kurs in Excel VBA= sqr(2) in eine Zelle des Arbeitsblattes, so führt das zu der Fehlermeldung„#NAME?“.Dieses Problem kann man damit umgehen, dass man die VBA-Funktion in einerbenutzerdefinierten Funktion „kapselt“ und damit so wie oben im BeispieldPythagoras das Ergebnis ins Tabellenblatt überträgt.Function UmgebungsVariable()UmgebungsVariable = Environ("Path")End FunctionHat eine VBA-Funktion den gleichen Namen wie eine Excel-Funktion, so kann mansie ohne Fehlermeldung in die Zellen eines Arbeitsblattes eingetragen werden, wobeimehrere Parameter wieder anstatt per Komma per Semikolon getrennt werden. Dochhier ist Vorsicht geboten: Trotz Namensgleichheit können Excel- und VBA-Funktionen zu unterschiedlichen Ergebnissen führen (siehe z. B. die Trim-Funktion).A.4.4A.4.4.1Excel-FunktionenBesonderheiten von Excel-FunktionenSprachversionExcel-Funktionen werden unabhängig von der Sprachversion 1 intern von Excelimmer in ihre englischsprachige Originalversion übertragen und so verarbeitet. Diedeutschen Funktionsnamen werden also intern immer übersetzt, aus einemTrennsemikolon bei Parameteraufzählungen wird ein Komma, ein Dezimalkommabei unseren Zahlenangaben zu einem angelsächsischen Dezimalpunkt, usw.Eine Gegenüberstellung eines Teils der deutschen und englischen Begriffe befindetsich im Installationsverzeichnis von Office in der Datei VBAListe.xls. Sehr hilfreichist für diesen Zweck im Internet der Excel-Formel-Übersetzer unter http://de.exceltranslator.de.Absolute oder relative Bezugsart1 Hier wird grundsätzlich von einer deutschsprachigen Excel-Version ausgegangen.67


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Eine weitere Besonderheit der Excel-Funktionen, dass ihre Parameter mit absolutemoder relativem Bezug zur aktuellen Cursor-Position eingegeben werden können.Standardmäßig werden die Spalten der Arbeitsblätter von Excel mit Buchstaben A,B, …, Z, AA, AB, …usw. sowie die Zeilen sowie die Zeilen mit Nummern 1, 2, 3, …usw. bezeichnet.Für Programmierzwecke ist es aber praktischer, wenn sowohl die Zeilen als auch dieSpalten durchnummeriert sind. Dafür hat Excel das Z1S1-Bezugssystem in derdeutschen Version bzw. das R1C1-Bezugssystem in der englischsprachigenOriginalversion. Unter der Registerkarte Datei Optionen Formeln kann mandiese Bezugsart übrigens einstellen.REFERENZ(DEUTSCH)REFERENZ(ENGL.)BEDEUTUNGZ(-10)SZ(10)S(5)Z10S5Z(-1)R[-10]CR[10]C[5]R10C5R[-1]Ein relativer Bezug auf die Zelle, die sich inderselben Spalte zehn Zeilen über deraktiven Zelle befindet.Ein relativer Bezug auf die Zelle, die sichzehn Zeilen unter und fünf Spalten rechtsvon der aktiven Zelle befindet.Ein absoluter Bezug auf die Zelle, die sichin der zehnten Zeile und in der fünftenSpalte befindet.Ein relativer Bezug auf die gesamte Zeileoberhalb der aktiven Zelle.Z R Ein absoluter Bezug auf die aktuelle Zeile.Tabelle: Relative und absolute Positionsangaben im Z1S1- bzw. R1S1-BezugssystemZ1S1-BezugsartA.4.4.2Verwendung in VBA-ProzedurenDie Excel-Tabellenfunktionen können in ihrer englischen Originalbezeichnungauch in VBA eingesetzt werden. Dazu muss man sie zunächst aber als solchekenntlich machen, indem ihnen ein Application oder ein WorksheetFunctionvoranstellt wird.68


Crash-Kurs in Excel VBABei der Verwendung von WorksheetFunction bietet der Editor Hilfestellungen fürdie Auswahl der Funktionen und deren Argumente an.Application ist vorteilhaft für den Zweck der Abwärtskompatibilität von Excel-Versionen und für die Rückgabe von Fehlerwerten.‘ ohne EditierhilfePublic Sub Average_Beispiel1()Dim Bereich As RangeSet Bereich = Sheets("Tabelle1").Range("A1:A10")MsgBox Application.Average(Bereich)End Sub‘ mit EditierhilfePublic Sub Average_Beispiel2()Dim Bereich As RangeSet Bereich = Sheets("Tabelle1").Range("A1:A9")MsgBox WorksheetFunction.Average(Bereich)End SubPublic Sub Average_Beispiel3()Dim Bereich As RangeSet Bereich = Sheets("Tabelle1").Range("A1:A8")MsgBox Application.WorksheetFunction.Average(Bereich)End SubA.4.4.3VBA-Befehle für die Zellenbelegung in ArbeitsblätternValue: Eintrag eines absoluten Wertes‘ Die Zelle B1 erhält den Wert der FunktionSub Average_Value()Dim Bereich As RangeSet Bereich = Sheets("Tabelle1").Range("A1:A10")Cells(1,2).Value = WorksheetFunction.Average(Bereich)End SubFormula: Eintrag einer Formel mit absolutem Zellbezug‘ Die Zelle B2 erhält die Formel =MITTELWERT(A1:A10)‘ Die Bereichsangabe erfolgt absolutSub Average_AbsoluteFormel()Range("B2").Formula = "=AVERAGE(A1:A10)"End Sub69


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FormulaR1C1: Eintrag einer Formel mit relativem Zellbezug‘ Die Zelle B3 erhält die Formel =MITTELWERT(A1:A10)‘ Die Bereichsangabe erfolgt relativ zu B3Sub Average_RelativeFormelA()Range("B3").SelectRange("B3").FormulaR1C1 = "=AVERAGE(R[-1]C[-1]:R[7]C[-1])"End SubDer relative Bezug wird in eckigen Klammern bei den Rows und Columnsangegeben. Im folgenden Beispiel treten relativer und absoluter Zellbezug auf.‘ Die Zelle B4 erhält die Formel =MITTELWERT(A$1:A$10)‘ Die Bereichsangabe erfolgt relativ und absolut zu B4Sub Average_RelativeFormelB()Range("B4").SelectRange("B4").FormulaR1C1 = "=AVERAGE(R1C[-1]:R10C[-1])"End SubDer absolute Bezug wird ohne Klammern bei den Rows und Columns angegeben.FormulaLocal: Eintrag einer Formel in deutscher SyntaxMöchte man nicht auf die deutsche Syntax verzichten, so kann man dieFormulaLocal-Eigenschaft verwenden. Damit ist es möglich, Tabellenfunktionen soanzugeben, wie man es von der Standardoberfläche gewohnt ist.‘ Die Zelle C2 erhält die Formel =MITTELWERT(A1:A10)‘ Die Formel wird in deutscher Syntax eingegeben.‘ Die Bereichsangabe erfolgt absolut zu C2Sub Average_AbsoluteFormelLocal()Range("C2").FormulaLocal = "=MITTELWERT(A1:A10)"End SubFormulaLocalR1C1: Eintrag einer Formel in deutscher Syntax mit relativemZellbezug70


Crash-Kurs in Excel VBA‘ Die Zelle C3 erhält die Formel =MITTELWERT(A1:A10)‘ Die Formel wird in deutscher Syntax eingegeben.‘ Die Bereichsangabe erfolgt relativ zu C3Sub Average_RelativeFormelALocal()Range("C3").SelectRange("C3").FormulaR1C1Local = "=MITTELWERT(Z(-2)S(-2):Z(7)S(-2))"End SubMan beachte in der FormulaR1C1Local-Schreibweise die runden anstelle dereckigen Klammern für die relativen Bezüge sowie die Zeilenangabe „Z“ anstelle von„C“ bzw. die Spaltengabe „S“ anstelle von „C“.Im nachfolgenden Beispiel treten relativer und absoluter Zellbezug gemeinsam auf:‘ Die Zelle C4 erhält die Formel =MITTELWERT(A$1:A$10)‘ Die Formel wird in deutscher Syntax eingegeben.‘ Die Bereichsangabe erfolgt relativ und absolut zu C4Sub Average_RelativeFormelBLocal()Range("C4").SelectRange("C4").FormulaR1C1Local = "=MITTELWERT(Z1S(-2):Z10S(-2))"End SubGrundsätzlich sollte mit Formula gearbeitet und FormulaLocal gemieden werden,um problemlos Makros austauschen zu können.A.5 Verwendung von Objekten in Excel-VBAObjekte bilden das Gerüst der Office-Anwendungen. Sie stellen die wichtigenElemente einer Anwendung dar, bei Excel: Tabellen, Zellbereiche, einzelne Zellen,Diagramme, Eingabeformulare oder Reports/Berichte, aber auch Fenster, Module,Steuerelemente, Statusleisten, Menüelemente etc.In Excel-VBA steht eine unübersichtlich anmutende Vielzahl von Objekten zurVerfügung. Vollständige Auflistungen mit Details und Beispielen zu den aktuellgültigen Objekten findet man im Objektkatalog und in der Excel-Hilfe Excel2010-Entwicklerreferenz Excel-Objektmodellreferenz. Wir werden hiernur die wesentlichen Aspekte des Excel Objektmodells behandeln.71


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.5.1BegriffsklärungIm Rahmen der objektorientierten Programmierung sind Objekte Abstraktionen vonDingen der realen Welt. Einem Objekt ordnet man Eigenschaften, Methoden,Ereignisse sowie Unterobjekte zu.Eigenschaften (auch Attribute) sind die Merkmale eines Objektes. Sie werden durchZustandsvariablen ausgedrückt. Werden Eigenschaften verändert, so ändert sich dasVerhalten oder das Erscheinungsbild. Sobald ein Objekt eine konkrete Ausprägungerhalten hat, (es instanziiert wurde), können die Eigenschaften abgefragt und ggf.festgelegt werden. Einige Eigenschaften sind schreibgeschützt und können dahernur gelesen, aber nicht geändert werden.Methoden (engl. methods) beschreiben einen Vorgang bzw. eine Tätigkeit, die miteinem Excel-Objekt ausgeführt werden kann, um dessen Eigenschaften zu ermittelnoder zu verändern. Wenn man Objekte als Substantive und Eigenschaften alsAdjektive in einem Satz sieht, sind Methoden die Verben, mit denen ausgedrücktwerden kann, was das Substantiv macht.Klassen sind die Zusammenfassung der Eigenschaften und Methoden vonObjekten. Sie stellen damit also einen Objekttyp dar, der sich von anderenObjekttypen durch die Menge und die Art seiner Eigenschaften und Methodenunterscheidet. Die Begriffe Objekt und Klasse werden bei Microsoft teilweise leidersynonym verwendet, was manchmal zur Verwirrung beiträgt. In Rahmen derobjektorientierten Programmierung wäre eine Klasse aber eine Vorlage, sozusagenein Bauplan, oder eine Schablone, für die Erstellung eines konkreten Objekts mitkonkreten Eigenschaften. Dieses konkrete Objekt besitzt dann alle grundsätzlichenEigenschaften und Methoden der Klasse. Man spricht bei einer solchenKonkretisierung auch von einer Instanz der Klasse und nennt den ProzessInstanzierung 1 .Ereignisse sind Zustandsbeschreibungen eines Objektes, auf die mit bestimmtenProgrammabläufen, den Ereignisprozeduren reagiert wird. Die Ereignisse können1 Man findet auch die Schreibweise Instanziierung. Dem wird hier Instanzierung im Sinne der neuenRechtschreibung vorgezogen.72


Crash-Kurs in Excel VBAdurch systemexterne Aktionen (Mausklicks, Tastatureingaben, etc.) odersysteminterne Aktionen (Variablen erhalten bestimmte Werte) ausgelöst werden. Daskann im Rahmen der Excel Objekthierarchie auf den drei Ebenen Application,Workbook und Worksheet geschehen. Welche Ereignisse für diese Ebenenverfügbar sind, kann im Objektkatalog nachgeschlagen werden. Ereignisse sindentweder auf eine einzige Ebene begrenzt oder sind auf mehreren Ebenenverfügbar.A.5.2SchreibweisenZur ausführlichen Bezeichnung eines Objektes, einer Methode, einer Eigenschaftoder eines Ereignisses benutzt man die Schreibweise:Objekt[.Unterobjekt…][.Methode | .Eigenschaft | .Ereignis ]Bei dieser Schreibweise muss in Excel VBA aber nicht immer die vollständigeAuflistung mit dem Objektbezeichner erfolgen, wenn aus dem Zusammenhang klarist, worauf man sich bezieht oder wenn Grundeinstellungen (Default-Werte) genutztwerden. Befindet man sich beispielsweise in der Prozedur eines Eingabeformularsmit dem Namen UserForm1, so ist die Standardeinstellung für die Eigenschaft einerTextBox „Text“. Dann kann man alternativ schreiben:BeispielUserForm1.TextBox1.Text = „Das ist ein Eingabefeld!“TextBox1.Text = „Das ist ein Eingabefeld!“TextBox1 = „Das ist ein Eingabefeld!“Oft kommt es in Prozeduren vor, dass mehrere Elemente eines Objekteshintereinander verarbeitet werden. Dann kann man folgende Schreibweise benutzen:73


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>With Objektname.Eigenschaft1 = Wert.Eigenschaft2 = Wert.Eigenschaft3 = Wert….Methode1([Parameterliste1].Methode2([Parameterliste2].Methode3([Parameterliste3]…End WithA.5.3ObjektlistenMicrosoft unterscheidet grundsätzlich zwischen Auflistungen von Objekten und denObjekten an sich. Objekte kann man in Auflistungen verwalten und werdentraditionell in Listen ablegen, die den Namen des Objekts tragen, gefolgt von einemPlural-„s“, z. B. Workbooks für die Workbook-Objekte oder Worksheets bei denWorksheet-Objekten. Innerhalb dieser Auflistungen können Objekte über einenNamen oder einen Index angesprochen werden.Im nachfolgenden Beispiel wird das erste Fenster in der Arbeitsmappe „Tourenplan“genannt und diese Bezeichnung dann als Index in der Windows-Auflistungverwendet.ActiveWorkbook.Windows(1).Caption = "Tourenplan"ActiveWorkbook.Windows("Tourenplan").ActiveSheet.CalculateSolche Objektlisten lassen sich auch für eigene Objekte mithilfe der KlasseCollection erstellen.Collection (innerhalb der VBA Bibliothek)A.5.4ObjektvariablenMit der Dim-Anweisung kann Variablen der Datentyp Objekt zugewiesen werden.74


Crash-Kurs in Excel VBADim Objektvariable As ObjektDie Zuweisung von Objekten an Variable geschieht nicht über „=“ sondern über dieSet-Anweisung:Set Objektvariable = ObjektausdruckFür Objektvariablen kann man Bezeichnungen wählen, die in der Schreibweise z.T.wesentlich kürzer sind als die Objekte unter Excel, mit denen sie referieren. Damitkann man Schreibarbeit ersparen.Set myObject = ActiveWorkbookMsgBox myObject.Sheets(2).NameA.5.5Das Excel ObjektmodellProgrammierobjekte werden in der Hierarchie des Objektmodells der Anwendungorganisiert und spiegeln so grob die Programmoberfläche wider.RangeWorksheet[...]Workbook[...][...]Application[...][...][...]Abbildung: Excel ObjektmodellDabei bedeutet:75


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>• Application Object die gesamte Excel-Anwendung• Workbook Object die Excel-Arbeitsmappe• Worksheet Object ein Tabellenblatt• Range Object ein Zellenbereich bestehend aus einer odermehreren ZellenA.5.5.1Das Application-ObjektDas Application-Objekt stellt die Excel-Anwendung selbst dar und somit die höchsteEbene der Excel-Objekthierarchie. Neben zahlreichen Informationen über dielaufende Anwendung (die derzeit geöffneten Benutzer-Objekte) werdenEinstellungen und Optionen zur Verfügung gestellt, die sich auf die gesamteAnwendung auswirken, ebenfalls Methoden, die Objekte der obersten Ebenezurückgeben.Viele Eigenschaften und Methoden des Application-Objekts sind global. Bei derSchreibweise muss deshalb nicht der Objektbezeichner Application mit angegebenwerden. Gleiches gilt für Eigenschaften und Methoden, die gängige Objekte derBenutzeroberfläche zurückgeben (z.B. ActiveCell, ActiveSheet).Application-ObjectUm Excel von „außen auf zu rufen“, wird die Activate-Eigenschaft hinsichtlich einesWindow oder Workbook-Objektes verwendet:Application.Windows("VBATest.xlsx").Activate'oderApplication.Workbooks("VBATest.xlsx ").ActivateA.5.5.2Das Workbook-ObjektMit dem Workbook-Objekt wird auf eine einzelne Arbeitsmappe zugegriffen, also diegespeicherte Excel-Datei. Soll ein Workbook-Objekt aus der Liste der Workbooks76


Crash-Kurs in Excel VBAausgewählt werden, so geschieht das in der Regel durch die Angabe desDateinamens.Workbooks(“VBATest.xlsx”).ActivateWorkbook-Objekt, Workbooks-ObjektA.5.5.3Das Worksheet-ObjektWorksheet-Objekte sind die einzelnen Tabellenblätter einer Excel-Anwendung. Siekönnen über die Worksheets-Auflistungen per Name oder Index aufgerufen werden:Worksheets("Tabelle1").Activate‘oderWorksheets(1).ActivateWorksheet-Objekt; Worksheets-ObjektA.5.5.4Das Range-ObjektDas Range-Objekt ist die wichtigste Abstraktion eines Worksheet-Objekts. Mitdiesem Objekt werden einzelne Zellen, Zeilen, Spalten oder allgemeine(zusammenhängende oder nicht zusammenhängende) Zellbereiche dargestellt,wobei eines oder mehrere Arbeitsblätter angesprochen werden können.Als spezielle Zellbereiche werden Zeilen mit Rows bezeichnet, Spalten mitColumns.Ein Cell-Object gibt es übrigens nicht in der Excel-Objekthierarchie, dafür kann manaber die Cells-Eigenschaft des Range-Objektes nutzen.Range-Objekt, Ranges-Objekt77


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.5.6Spezielle Verwendungen des Excel ObjektmodellsIn diesem Abschnitt werden auf der Grundlage von Excel-Objekten ein paar wichtigepraktische Vorgehensweisen für die Ablaufsteuerung und die Navigation innerhalbvon Tabellen zusammengefasst. Eine umfangreichere Übersicht über die wichtigstenExcel-Objekte liefert Anhang D.A.5.6.1Positionierung in Range-ObjektenIm Excel A1-Standardformat (max. 65536 Zeilen als Zahlen 1, 2, 3, …; max. 256Spalten als Buchstaben A, B, C, …) wird:• eine einzelne Zelle durch ihre Adresse in der Form “B3“ dargestellt,• ein einzelner Zellbereich durch per Doppelpunkt getrennte Angabe derAdresse links oben und der Adresse rechts unten, z.B. “D4:F14“ oder• ein allgemeiner Zellbereich durch eine per Kommata getrennte Listemehrerer Adressen und/oder Zellbereiche wie “B3, D4:F14, X12, G20:T40“Die Bezeichnung ist dabei immer in Hochkommata eingeschlossen.Für die Positionierung mit obiger Zellbereichs-Angabe gibt es zwei Syntax-Versionen:Objekt.Range(Zellbereich)Objekt.Range(Zellbereich1, Zellbereich2)Die erste Syntax-Version arbeitet mit einem einzigen Zellbereich, der imStandardformat angegeben ist. Bei der zweiten Syntax-Variante stellt Zellbereich1die linke obere Ecke und Zellbereich2 die rechte untere Ecke des Bereiches dar.Zellbereich1 und 2 können Adressen von Einzelzellen oder allgemeine Zellbereichesein. Bei Überschneidung wird die Vereinigungsmenge genommen.78


Crash-Kurs in Excel VBAWorksheets(“Tabelle1“.Range(“B1“,“D3“)Worksheets(“Tabelle1“.Range(“B1:C3“,“C1:E5“)Die erste Anweisung arbeitet mit dem Bereich B1:D3, die zweite mit B1:E5.A.5.6.2Positionierung mit der Cells-EigenschaftSo wie das R1C1-Format bei den Funktionen ist es für die Berechnung vonZelladressen und für die Benutzung von Variablen für Zelladressen vorteilhaft, für dieZeilen und Spalten eines Tabellenblattes Zahlen zu verwenden.Mit der Cells-Eigenschaft von Range-Objekten gibt es dann folgende Syntax-Varianten:Objekt.(Cells(Row1,Column1), Cells(Row2,Column2))Objekt.Cells(Row,Column)Objekt.CellsIn der ersten Variante ist wieder die obere linke Ecke bis zur unteren rechten Eckegemeint, in der zweiten das angegebene Element. Die dritte Variante gibt alle Zellendes Tabellenblattes an.A.5.6.3Cursorposition feststellenActiveCell ist eine Eigenschaft des Application-Objekts, die eine Range-Objektzurück gibt. ActiveSheet gibt als Eigenschaft von Application den Namen der aktivenTabelle zurück oder legt ihn fest. Damit kann man die aktuelle Cursorpositionermitteln:• ActiveCell.AddressAdresse der aktiven Zelle des aktiven Tabellenblattes79


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>• ActiveCell.RowZeilennummer der aktiven Zelle des aktiven Tabellenblattes• ActiveCell.ColumnSpaltennummer der aktiven Zelle des aktiven Tabellenblattes• ActiveCell.Parent.NameName der Tabelle mit der aktiven Zelle des aktiven Tabellenblattes• ActiveSheet.Parent.NameName der Arbeitsmappe des aktiven TabellenblattesA.5.6.4Zellen, Zellbereiche, Zeilen, Spalten gezielt auswählenNachdem man ein Arbeitsblatt ausgewählt hat, können einzelne Zellen mit demRange-Objekt über Activate markiert werden, also der Cursor gesetzt werden.Für Zellbereiche benutzt man Select, Zeilen und Spalten werden ebenfalls überSelect markiert.Range(Zellbereich).SelectCells(RowIndex,ColumnIndex).SelectRows(RowIndex).SelectColumns(ColumnIndex).SelectBeispiele:Worksheets(“Tabelle1”).ActivateRange(“C2:F14”).SelectRange(“B2”).ActivateRows(17).SelectColumns(19).SelectA.5.6.5Relatives Versetzen von Bereichen und Cursor80


Crash-Kurs in Excel VBAOffset ist eine Eigenschaft des Range-Objektes, das einen Bereich darstellt, dergegenüber dem angegebenen Bereich versetzt ist.Rangeobjekt.Offset(rowOffset,columnOffset)rowOffset (optional): Anzahl der Versatzzeilen nach unten(positiv), 0, oder bei negative Werten nach oben.columnOffset (optional): Anzahl der Versatzspalten nach rechts(positiv), 0, oder bei negative Werten nach links.Beispiel‘ Cursor 4 nach unten und 2 nach linksWorksheets(“Tabelle1”).ActivateRange.Offset(rowOffset,columnOffset)ActiveCell.Offset(4,-2)‘ oderActiveCell.Offset(rowOffset:=4, columnOffset:=-2)A.5.6.6Bereichsnamen vergeben mit Name-EigenschaftMithilfe der Namensvergabe an Zellenbereiche lässt sich die Schreibweise in vielenFällen übersichtlicher gestalten.‘ NamensvergabeRange(”A1”).Name = “Km_pro_Std”Range(Cell(1,2)).Name = “kWh”‘WertzuweisungRange(“km_pro_Std”) = 60‘ Löscht den Namen wieder:Range(”Km_pro_Std”).Name.Delete81


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.5.6.7Wertzuweisungen mit Value-EigenschaftRange(”A1”).Value = “Die Antwort aller Fragen”‘ auch:Range(”A1”) = “Die Antwort aller Fragen”‘Range(Cell(1,2)).Value = 42‘ auch:Range(Cell(1,2)) = 42Als Default-Wert kann die Angabe „Value“ zu einem Range-Objekt entfallen.A.5.6.8Formeln eintragen mit der Formula-EigenschaftRange(”A1”).Formula = “= A2 + A3”‘Sheets(“Tabelle1”).Cells(1,1)).Formula = “= A2 + A3”‘ auch:ActiveCell.Formula = “= A2 + A3”A.5.6.9Formatierung von ZellbereichenHinsichtlich der Zellformatierung können Schrifttypen, Rahmen und Farben vergebenwerden.Die allgemeine Syntax lautet:‘SchrifttypenRange.Font.Eigenschaft = Wert'RahmenObjekt.BordersObjekt.Borders(Index)82


Crash-Kurs in Excel VBA‘Hintergrundfarben Rahmenfarben SchriftfarbenRange.Interior.ColorIndex = WertRange.Borders.ColorIndex = WertRange.Font.ColorIndex = Wert‘oder mit MischfarbenRange.Interior.Color = RGB(Rotwert, Grünwert, Blauwert)Range.Borders.Color = RGB(Rotwert, Grünwert, Blauwert)Range.Font.Color = RGB(Rotwert, Grünwert, Blauwert)Für weitere Details siehe die entsprechenden Eigenschaften des Range ObjektesA.5.6.10Löschen von ZellbereichenEs gibt unterschiedliche Möglichkeiten, Zellen oder Zellinhalte zu löschen. Dieeinfachste Möglichkeit im angegeben Bereich alle Einträge und Formatierungen zulöschen geht über die Clear-Methode eines Range-Objektes:Range(Zellbereich).ClearA.5.7A.5.7.1Erstellung eigener KlassenDefinition einer KlasseFür die Definition eigener Klassen wird in VBA das Klassenmodul verwendet. Diesesbesondere Modul dient als Container für die Definition von Eigenschaften undMethoden einer Klasse. Der Name des Klassenmoduls lässt sich imEigenschaftenfenster einstellen. Nach der Definition einer Klasse wird diese auch imObjektkatalog aufgeführt.Das Attribut Instancing ist standardmäßig auf Private gesetzt, so dass dieDefinitionen in dieser Klasse nur auf das Modul beschränkt sind.A.5.7.2Eigenschaften83


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Die im Modulkopf einer Klasse deklarierten Variablen sind Eigenschaften der Klasse.Auf Private deklarierte Variable/Eigenschaften können nur Methoden der eigenenKlasse zugreifen. Eine mit Public deklarierte Variable/Eigenschaft kann von jedemObjekt und jeder Prozedur aus gelesen und verändert werden.Public Bereich As StringUm Eigenschaftswerte nur auslesen aber nicht verändern zu können, kann manPublic Functions benutzen:Public Function Bereich() As StringBereich = “A1:B10”End FunctionEine weitere Möglichkeit zur Definition von Eigenschaften ist durch die schondargestellten Property-Prozeduren gegeben, die beim Zugriff auf die Eigenschaftausgeführt werden. Der Rumpf dieser Prozeduren wird beim Anlegen einer neuenProzedur - wie ebenfalls schon beschrieben - automatisch erzeugt:[Public | Private] [Static] Property {Get | Let | Set}Eigenschaftsname [(Argumente)] [As Typ]AnweisungenEnd Property• Property Get: Eine Prozedur, die den Wert einer Eigenschaft zurückgibt• Property Let: Eine Prozedur, die den Wert einer Eigenschaft festlegt• Property Set: Eine Prozedur, die einen Verweis zu einem Objekt herstelltProperty-Prozeduren treten normalerweise paarweise auf: Property Let mitProperty Get und Property Set mit Property Get. Wird nur eine Property Get-Prozedur deklariert, so ist die Eigenschaft schreibgeschützt.84


Crash-Kurs in Excel VBAIm Gegensatz zu Public-Variablen können Property-Prozeduren im Objektkatalogdurch Texte beschrieben werden.In der Regel sollten Eigenschaften als Private deklariert werden. Zugriff aufEigenschaften sollte nur durch als Public deklarierte Methoden möglich sein.A.5.7.3MethodenDie Methoden der Klasse werden im Klassenmodul im Anschluss an dieEigenschaften als Sub- oder Function-Prozedur mit den Zugriffsmöglichkeit Publicoder Private deklariert. Auf Private deklarierte Methoden kann nur innerhalb dereigenen Klasse zugegriffen werden, auf Public deklarierte Methoden von jedemObjekt und jeder Prozedur aus.A.5.7.4Spezielle Ereignisprozeduren: Konstruktor undDestruktorWählt man im Code-Fenster im Objekt-Feld den Eintrag Class, so erscheinenProgrammgerüste für die Methode Class_Initialize(), den sogenannte Konstruktor,und für Class_Terminate(), den Destruktor.Diese beiden Methoden sind standardmäßig in jeder Klasse angelegt. Bei jederInstanzierung eines Objektes dieser Klasse wird automatisch der Konstruktorgestartet, vor jeder Löschung eines Objektes dieser Klasse der Destruktor. AlsPrivate-Prozeduren können sie nicht von außen aufgerufen werden. Im Konstruktorkönnen Eigenschaften der Klasse auf Anfangswerte gesetzt werden, im DestruktorAufräumarbeiten durchgeführt werden, beispielsweise dynamisch diejenigen Objektegelöscht werden, die durch die Instanz erzeugt wurden.Private Sub Class_Initialize()End SubPrivate Sub Class_Terminate()End Sub85


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.5.8Erzeugung neuer ObjekteUm die angelegten Funktionalitäten einer Klasse nutzen zu können, müssen von derKlasse Instanzen, also die Objekte gebildet werden. Aus jeder Klasse könnenbeliebig viele 1 Instanzen erzeugt werden, die alle nebeneinander existieren.Mit dem Schlüsselwort New werden neue Instanzen einer Klasse gebildet.Beispielsweise in der Dim-Anweisung:Dim Objektvariable As New KlassennameDas Schlüsselwort New kann je nach Gültigkeitsbereich und Lebensdauerentsprechend auch im Zusammenhang mit Private, Public, Set und Static benutztwerden.NewDas Objekt wird mit der Deklarationsanweisung noch nicht erzeugt. 2 Erst der Zugriffauf irgendeine Eigenschaft oder Methode der Objektvariablen lässt das Objekttatsächlich im Speicher entstehen. Greift man nicht auf das Objekt zu, wird auchkeine Instanz erzeugt. Um die sofortige Objekterzeugung zu erzwingen 3 , kann manauch die Methode der frühen Bindung für die Instanzierung verwenden:Frühe Bindung:Dim Objektvariable As KlassenNameSet Objektvariable As New KlassenName1 Natürlich begrenzt durch den zur Verfügung stehenden Speicherplatz2 Was aus Platzgründen manchmal als vorteilhaft erscheint.3 Was aus Laufzeitgründen manchmal als vorteilhaft erscheint.86


Crash-Kurs in Excel VBAAlternativ gibt es auch noch die Methode der späten Bindung. Der Objektvariablewird zunächst der allgemeine Datentyp Object zugewiesen und dann später derkonkrete Objekttyp, also die Klasse zugewiesen:Späte Bindung:Dim Objektvariable As Object……Set Objektvariable As New KlassenNameBei der frühen Bindung kann man als Programmierer den Vorteil von IntelliSensenutzen. Bei der späten Bindung kann man nutzen, dass die Variable jeden beliebigenObjekttyp aufnehmen kann, sogar unterschiedliche Typen nacheinander.A.5.9Entfernen von ObjektenIn VBA muss ein Objekt nicht explizit gelöscht werden. Objekte in nicht als Staticdeklarierten Prozeduren werden automatisch aus dem Speicher entfernt. Gleichesgilt, falls keine Variable mehr auf das Objekt zeigt. Das ist beispielsweise dann derFall, wenn mit dem Set-Befehl eine Objektvariable, die vorher dem betreffendenObjekt zugeordnet wurde, nun auf ein anderes Objekt zeigt oder den Wert „Nothing“erhält.Dim Objektvariable As Object…Set Objektvariable As New KlassenName1…Set Objektvariable As New KlassenName2Set Objektvariable = NothingA.5.10 Erstellung von EreignisprozedurenA.5.10.1Allgemeine Ereignisprozeduren87


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Ereignisprozeduren reagieren auf Ereignisse, die durch externe oder interneProgrammaktionen ausgelöst werden. Sie sind für alle beliebigen geöffneten Blätteroder Arbeitsmappen verfügbar und machen nur in Klassen einen Sinn.Der Prozedurname setzt sich bei Microsoft traditionell aus dem Klassennamenverbunden mit dem Ereignisnamen über einen Unterstrich zusammen, z. B.Worksheet_Change. Man findet diese Ereignisprozeduren in dem Klassenmoduleines Tabellenblattes. Das erhält man durch Rechtsklick auf Tabellenreiter undCode anzeigen wählen.A.5.10.2Eigene EreignisprozedurenIn Microsoft Excel können Ereignisprozeduren auf der Ebene von• Arbeitsblatt,• Diagramm,• Abfragetabelle,• Arbeitsmappe oder• Anwendungerstellt werden.Ereignisse können dabei auf mehreren Ebenen auftauchen. So tritt beispielsweisedas Activate-Ereignis nur auf der Blattebene ein. Das SheetActivate-Ereignis istdagegen sowohl auf der Arbeitsmappen- als auch auf der Anwendungsebeneverfügbar: für eine Arbeitsmappe, wenn ein beliebiges Blatt der Arbeitsmappeaktiviert wird, auf der Anwendungsebene, wenn ein beliebiges Blatt in einerbeliebigen Arbeitsmappe geöffnet wird.Die vorgenannten eingebauten Excel-Klassen können mit ihren Ereignissen in neueKlassen eingebunden werden. Sinnvoll ist dies beispielsweise, wenn eineWorksheet_Change-Ereignisprozedur allgemeingültig werden soll und sich so nichtnur auf die Arbeitsmappe beschränkt, in der sich der Code befindet.A.5.10.3Objekt mit WithEvents erstellen88


Crash-Kurs in Excel VBAUm Ereignisprozeduren für ein Diagramm, eine QueryTable-Objekt oder einApplication-Objekt zu schreiben, muss unter Verwendung des SchlüsselwortesWithEvents in einem Klassenmodul zunächst ein neues Objekt erstellt werden:[Dim | Public | Private] WithEvents Objektvariable As KlassennameDas Schlüsselwort WithEvents gibt an, dass die Objektvariable auf Ereignissereagieren kann, die von einem ActiveX-Objekt wie einer Befehlsschaltfläche odereinem Textfeld ausgelöst wurden. Eine solche Deklaration ist auf Klassenmodulebeschränkt und die betreffende Klasse muss dabei natürlich Ereignisse auslösen. MitWithEvents können beliebig viele Variablen deklarieren werden, jedoch keineDatenfelder. Instanzierung mit New kann nicht zusammen mit WithEventsverwendet werden.WithEventsA.5.10.4Deklaration einer Objektvariablen vom Typ ApplicationDas Application-Objekt bietet eine Vielzahl von Ereignissen der Excel-Anwendungan, die ausgewertet werden können. Bevor man jedoch ein Ereignis mit demApplication-Objekt verwenden kann, muss• ein Klassenmodul, beispielsweise mit dem Namen EventClassModule erstellt• und für Ereignisse ein Objekt, beispielsweise mit dem Namen App, vom TypApplication deklariert werden.Das neue Klassenmodul enthält dann den folgenden Code:Public WithEvents App As ApplicationDas neue Objekt wird durch den VisualBasic Editor im Klassenmodul dann im<strong>Dr</strong>opdown-Listenfeld Objekt angezeigt. Wählt man das neue Objekt App imAnzeigefeld Objekt aus, so werden die gültigen Ereignisse für dieses Objekt im<strong>Dr</strong>opdown-Listenfeld Prozedur angezeigt.89


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>A.5.10.5Eingabe des Programmcodes für die EreignisprozedurNun können Ereignisprozeduren für das neue Objekt in Abhängigkeit vonEreignissen hinzugefügt werden. Mithilfe der EnableEvents-Eigenschaft könnendabei Ereignisse gezielt aktiviert und deaktiviert werden.Beispielsweise führt das Speichern einer Arbeitsmappe mit der Save-Methode zumAuftreten des BeforeSave-Ereignisses. Das Aufrufen der zugehörigenEreignisprozedur kann verhindert werden, indem die EnableEvents-Eigenschaft aufFalse gesetzt wird, bevor die Save-Methode aufgerufen wird.BeispielApplication.EnableEvents = FalseActiveWorkbook.SaveApplication.EnableEvents = TrueA.5.10.6Ausführen der EreignisprozedurBevor schließlich Prozeduren ausgeführt werden können, muss das deklarierteObjekt im Klassenmodul mit dem Application-Objekt verbunden werden. Dazu kannfolgender Code verwendet werden:Dim X As New EventClassModuleSub InitializeApp()Set X.App = ApplicationEnd SubNachdem die Prozedur InitializeApp ausgeführt wurde, zeigt das App-Objekt imKlassenmodul auf das Application-Objekt von Excel. Außerdem werden dieEreignisprozeduren im Klassenmodul ausgeführt, sobald ein Ereignis eintritt.90


Übersicht über die vorinstallierten VBA-FunktionenB Übersicht über die vorinstallierten VBA-FunktionenDieses Kapitel gibt eine Schnell-Übersicht zu den vorinstallierten VBA-Funktionennach Sinnzusammenhängen. Die detaillierte Syntax zu den einzelnen Funktionennebst Beispielen findet man in der Excel-Hilfe, Hilfe für Entwickler unter dem VisualBasic Sprachverzeichnis Funktionen.B.1 Datums- und Zeitfunktionen 1FUNKTIONBESCHREIBUNGCDateWandelt eine Zeichenfolge in einen Datumswert umDateGibt das aktuelle Systemdatum ausDateAddDateDiffDatePartDateSerialLiefert einen Wert zurück, der ein Datum erhält, zu dem einbestimmtes Zeitintervall addiert wurdeGibt einen Wert zurück, der die Anzahl der Zeitintervallezwischen zwei bestimmten Terminen angibtLiefert einen Wert zurück, der einen bestimmten Teil einesangegebenen Datums enthältLiefert einen Wert zurück, der die angegebene Jahres-,Monats- und Tageszahl enthältDateValueWandelt eine Zeichenfolge in einen gültigen Datumswert umDayFileDateTimeExtrahiert den Tag als ganzzahligen Wert (1-31) aus einemDatumswertLiefert das Erstellungsdatum bzw. Änderungsdatum einerDatei zurück.FormatDateTimeFormatiert Systemkonstanten in Datums um1 Siehe Held(2004), Seite 91.91


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTIONBESCHREIBUNGHour Liefert die Stunde aus einem Datumswert (0-23)Minute Liefert die Minute auf dem Datumswert (0-59)Month Liefert den Monat aus dem Datumswert (1-12)MonthNameLiefert die Zeichenfolge des Monats zurückNowLiefert das Systemdatum inklusive der UhrzeitSecondGibt die Sekunden aus dem Datumswert zurückTimerTimeSerialGibt einen Wert vom Typ Single zurück, der die Anzahl derseit Mitternacht vergangenen Sekunden angibtSetzt einen Datums-/Zeitwert aus Ganzzahlwerten(Sekunden, Minuten, Stunden) zusammenTimeValueWandelt eine Zeichenfolge in einen gültigen Zeitwert umWeekdayGibt den Wochentag aus einem Datumswert zurückWeekdayNameYearGibt den Wochentag als Zeichenfolge aus einem DatumswertzurückNummerischer Ausdruck, der einen Zeichenfolgenausdruckoder eine beliebige Kombination als Datum darstellen kannTabelle: Datums- und ZeitfunktionenB.2 Textfunktionen 11 Siehe Held(2004), Seite 122.92


Übersicht über die vorinstallierten VBA-FunktionenFUNKTIONBESCHREIBUNGASCChooseChrInStrInStrRevJoinLCaseLeftLenMidReplaceRightSpaceSpcSplitGibt einen Integer-Wert zurück, der den Zeichencodeentsprechend dem ersten Buchstaben in einer ZeichenfolgedarstelltWählt einen Wert aus einer Liste von Argumenten aus undgibt ihn zurückGibt einen Wert vom Typ String zurück, der das Zeichenenthält, das dem angegebenen Zeichen-Code zugeordnet istGibt die Position des ersten Auftretens einer Zeichenfolgeinnerhalb einer anderen Zeichenfolge zurückGibt die Position einer Zeichenfolge in einer anderenZeichenfolge von der hinteren Position anGibt eine Zeichenfolge zurück, die sich aus der Kombinationeiner Reihe von untergeordneten Zeichenfolgen ergibt, die ineinem Datenfeld enthalten sindWandelt Großbuchstaben in Kleinbuchstaben umGibt einen Wert zurück, der eine bestimmte Anzahl vonZeichen ab dem ersten linken Zeichen einer ZeichenfolgeenthältGibt einen Wert vom Typ Long zurück, der die Anzahl derZeichen in einer Zeichenfolge oder die zum Speichernerforderlichen Bytes enthältGibt einen Wert vom Typ Variant zurück, der eine bestimmteAnzahl von Zeichen aus einer Zeichenfolge enthältLiefert Zeichenfolge, in der eine festgelegte, untergeordneteZeichenfolge mit einer festgelegten Häufigkeit durch eineandere untergeordnete Zeichenfolge ersetzt wurdeGibt einen Wert zurück, der eine bestimmte Anzahl vonZeichen ab dem ersten rechten Zeichen einer ZeichenfolgeenthältLiefert eine Zeichenfolge vom Typ Variant zurück, die auseiner angegebenen Anzahl von Leerzeichen bestehtFügt in einer Textdatei eine bestimme Anzahl vonLeerzeichen einGibt ein nullbasiertes, eindimensionales Datenfeld zurück, daseine festgelegte Anzahl an untergeordneten Zeichenfolgenenthält93


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTIONBESCHREIBUNGStrStrCompStrConvStrReverseStringSwitchTrimUCaseGibt einen Wert vom Typ Variant (String) zurück, der eineZahl darstelltGibt einen Wert vom Typ Variant (Integer) zurück, der dasErgebnis eines Zeichenfolgenergebnis anzeigtGibt einen Wert vom Typ String zurück, der die angegebenumgewandelt wurdeLiefert eine Zeichenfolge, in der die Reihenfolge der Zeicheneiner Zeichenfolge umgekehrt wurdeLiefert eine Zeichenfolge zurück, die ein sich wiederholendesZeichen der angegebenen Länge enthältWertet eine Liste von Ausdrücken aus und gibt einen Wertvom Typ Variant oder einen Ausdruck zurückGibt eine Zeichenfolge zurück, die eine Kopie einerbestimmten Zeichenfolge enthält, die keine führendenund/oder nachgestellten Leerzeichen enthältWandelt Kleinbuchstaben in Großbuchstaben umTabelle: Textfunktionen94


Übersicht über die vorinstallierten VBA-FunktionenB.3 Dateifunktionen und Anweisungen 1FUNKTIONBESCHREIBUNGChDirWechselt das aktuelle Verzeichnis oder den aktuellen OrdnerCh<strong>Dr</strong>iveWechselt das aktuelle LaufwerkCloseBeendet das Lesen aus und das Schreiben in eine Datei, diemit der Open-Anweisung geöffnet wurdeCurDirGibt einen Wert zurück, der den aktuellen Pfad darstelltDirEnvironEOFFileAttrGibt eine String-Zeichenfolge zurück, die den Namen einerDatei, eines Verzeichnisses oder eines Ordners darstelltGibt die mit einer Betriebssystem-Umgebungsvariablenverbundenen Zeichenfolge zurückLiefert einen String, der den Boolean-Wert True enthält, wenndas Ende einer Datei die im Zugriffsmodus Random oderInput geöffnet wurde, erreicht worden istGibt einen Wert vom Typ Long zurück, der den Zugriffsmodusfür mit der Open-Anweisung geöffnete Dateien darstellt.FileCopyKopiert eine DateiFileLenFreeFileGetGetAttrInputGibt einen Wert vom Typ Long zurück, der die Länge einerDatei in Bytes angibt.Gibt einen Wert vom Typ Integer zurück, der die nächsteverfügbare Dateinummer darstellt, die die Open-Anweisungzum Öffnen einer Datei verwenden kann.Liest Daten aus einer geöffneten Datenträgerdatei in eineVariable ein.Gibt einen Wert vom Typ Integer zurück, der die Attributeeiner Datei, eines Verzeichnisses oder eines Ordnersdarstellt.Gibt einen Wert vom Typ String zurück, der Zeichen aus einerim Modus Input oder Binary geöffneten Datei enthält.1 Siehe Held(2004), Seite 158.95


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTIONBESCHREIBUNGKillLöscht Dateien von einem Datenträger.Line InputLOCLock/UnlockLSetMkDirLiest eine einzelne Zeile aus einer geöffneten sequentiellenDatei und weist sie einer Variablen vom Typ String zu.Gibt einen Wert vom Typ Long zurück, der die aktuelleSchreib-/Leseposition innerhalb einer geöffneten Datei angibt.Regelt die Zugriffsmöglichkeiten anderer Prozesse auf eineDatei (oder auf Teile einer Datei), die mit der Open-Anweisung geöffnet wurde.Richtet eine Zeichenfolge innerhalb einerZeichenfolgenvariablen links aus oder kopiert eine Variableeines benutzerdefinierten Datentyps in eine Variable einesanderen benutzerdefinierten Datentyps.Erstellt ein neues Verzeichnis oder einen neuen Ordner.NameUmbenennen einer DateiOpenÖffnet eine Datei für die Ein- bzw. AusgabePrintSchreibt Daten, die für die Ausgabe formatiert sind, in einesequentielle Datei.PutSchreibt Daten aus einer Variablen in eine Datenträgerdatei.ResetRmDirSeekSchließt alle Datenträgerdateien, die mit der Open-Anweisunggeöffnet wurden.Entfernt ein existierendes Verzeichnis oder einenexistierenden Ordner.Legt in einer mit der Open-Anweisung geöffneten Datei diePosition für den nächsten Lese- oder Schreibvorgang fest.SetAttrShellLegt die Attribute für eine Datei fest.Führt ein ausführbares Programm aus. Falls erfolgreich, gibtsie einen Wert vom Typ Variant (Double) zurück, der dieTask-ID des Programms darstellt. Andernfalls wird Nullzurückgegeben.96


Übersicht über die vorinstallierten VBA-FunktionenFUNKTIONBESCHREIBUNGWriteSchreibt Daten in eine sequentielle Datei.Tabelle: Dateifunktionen und AnweisungenB.4 Mathematische Funktionen 1FUNKTIONBESCHREIBUNGAbsAtnCosDDBExpGibt einen Wert zurück, der den gleichen Typ wie derübergebene Wert hat und den Absolutwert einer Zahl angibt.Gibt einen Wert vom Typ Double zurück, der denArcustangens einer Zahl angibt.Gibt ein Bogenmaß vom Typ Double zurück, der den Cosinuseines Winkels im Bogenmaß angibt.Gibt einen Wert vom Typ Double zurück, der dieAbschreibung eines Vermögenswertes über einen bestimmtenZeitraum mit Hilfe der geometrisch degressivenAbschreibungsmethode oder einer von Ihnen ausgewähltenMethode angibt.Gibt einen Wert vom Typ Double zurück, der e (die Basis desnatürlichen Logarithmus) potenziert mit einem Wert angibt.FixFVIntIPmtGibt den ganzzahligen Anteil einer Zahl zurück.Gibt einen Wert vom Typ Double zurück, der den zukünftigenWert einer Annuität bei regelmäßigen, konstantenZahlungsausgängen und einem konstanten Zinssatz angibt.Gibt den ganzzahligen Anteil einer Zahl zurück.Gibt einen Wert vom Typ Double zurück, der die Zinszahlungfür einen bestimmten Zeitraum einer Annuität beiregelmäßigen, konstanten Zahlungen und einem konstantenZinssatz angibt.1 Siehe Held(2004), Seite 19197


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTIONBESCHREIBUNGIRRLogNPerNPVPmtPPmtPVRandomizeGibt einen Wert vom Typ Double zurück, der den internenErtragssatz für eine Folge regelmäßiger Cash Flows (AusundEinzahlungen) angibt.Gibt einen Wert vom Typ Double zurück, der den natürlichenLogarithmus einer Zahl angibt.Gibt einen Wert vom Typ Double zurück, der die Anzahl derZeiträume für eine Annuität bei regelmäßigen, konstantenZahlungen und einem konstanten Zinssatz angibt.Gibt einen Wert vom Typ Double zurück, der den Netto-Barwert einer Investition bei regelmäßigen Cash Flows (AusundEinzahlungen) und einem Diskontsatz angibt.Gibt einen Wert vom Typ Double zurück, der die Auszahlungfür eine Annuität bei regelmäßigen konstantenZahlungsausgängen und konstantem Zinssatz angibt.Gibt einen Wert vom Typ Double zurück, der den Kapitalanteileiner Auszahlung für einen bestimmten Zeitraum einerAnnuität bei regelmäßigen konstanten Auszahlungen undeinem konstanten Zinssatz angibt.Gibt einen Wert vom Typ Double zurück, der den Barwerteiner Annuität bei zukünftig regelmäßig und konstant zuleistenden Zahlungsausgängen und einem konstantenZinssatz angibt.Initialisiert den Zufallszahlengenerator.RateRndRoundSgnSinSLNSqrGibt einen Wert vom Typ Double zurück, der den Zinssatzeiner Annuität pro Zeitraum angibt.Gibt einen Wert vom Typ Single zurück, der eine Zufallszahldarstellt.Gibt eine Zahl zurück, die auf eine festgelegte Anzahl anDezimalpunkten gerundet wurde.Gibt einen Wert vom Typ Variant (Integer) zurück, der dasVorzeichen einer Zahl darstellt.Gibt einen Wert vom Typ Double zurück, der den Sinus einesWinkels im Bogenmaß enthält.Gibt einen Wert vom Typ Double zurück, der die arithmetischeAbschreibung eines Vermögenswertes über einen bestimmtenZeitraum angibt.Gibt einen Wert vom Typ Double zurück, der dieQuadratwurzel einer Zahl angibt.98


Übersicht über die vorinstallierten VBA-FunktionenFUNKTIONBESCHREIBUNGSYDTanGibt einen Wert vom Typ Double zurück, der dieJahresabschreibung eines Vermögenswertes über einenbestimmten Zeitraum angibt.Gibt einen Wert vom Typ Double wieder, der den Tangenseines Winkels im Bogenmaß angibt.Tabelle: Mathematische Funktionen99


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>C Übersicht über die Excel-FunktionenDie zahlreichen in Excel implementierten Funktionen zur Tabellenkalkulation bildendie dritte Gruppe der unter Excel-VBA ansprechbaren Funktionen. Die detaillierteSyntax nebst Beispielen fast aller Funktionen 1 in der deutschsprachigen Versionfindet man in der Excel-Hilfe unter dem Visual-Basic Sprachverzeichnis unterFunktionsreferenz oder in der Excel2010-Entwicklerreferenz unter Elemente desWorksheet-Function-Objekts.C.1 Finanzmathematische FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGAMORDEGRKAMORLINEARKAUFGELZINSFAUFGELZINSAUSZAHLUNGAMORDEGRCAMORLINCACCRINTMACCRINTRECEIVEDGibt die Abschreibung für die einzelnenAbschreibungszeiträume mit Hilfe einesAbschreibungskoeffizienten zurückGibt die Abschreibung für die einzelnenAbschreibungszeiträume zurückGibt die aufgelaufenen Zinsen(Stückzinsen) eines Wertpapiers zurück,die bei Fälligkeit ausgezahlt werdenGibt die aufgelaufenen Zinsen(Stückzinsen) eines Wertpapiers mitperiodischen Zinszahlungen zurückGibt den Auszahlungsbetrag eines vollinvestierten Wertpapiers amFälligkeitstermin zurückBW PV Gibt den Barwert einer Investition zurückDIADISAGIOSYDDISCGibt die arithmetisch-degressiveAbschreibung eines Wirtschaftsguts füreine bestimmte Periode zurückGibt den in Prozent ausgedrücktenAbzinsungssatz eines Wertpapierszurück1 Bis auf die exotischen Add-in und Automatisierungsfunktionen, hier bleibt nur „googeln“, etwa:http://www.codematic.net/excel-development/excel-xll/excel-xll-register.htm100


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGDURATIONEFFEKTIVGDA2GDAIKVISPMTKAPZKUMKAPITALKUMZINSZKURSDISAGIOKURSFÄLLIGKURSLIAMDURATIONDURATIONEFFECTDBDDBIRRISPMTPPMTCUMPRINCCUMIPMTPRICEDISCPRICEMATPRICESLNMDURATIONGibt die jährliche Duration einesWertpapiers mit periodischenZinszahlungen zurückGibt die jährliche EffektivverzinsungzurückGibt die geometrisch-degressiveAbschreibung eines Wirtschaftsguts füreine bestimmte Periode zurückGibt die Abschreibung eines Anlagegutsfür einen angegebenen Zeitraum unterVerwendung der degressivenDoppelraten-Abschreibung oder einesanderen von Ihnen angegebenenAbschreibungsverfahrens zurückGibt den internen Zinsfuß einerInvestition ohne Finanzierungskostenoder Reinvestitionsgewinne zurückBerechnet die während eines bestimmtenZeitraums für eine Investition gezahltenZinsenGibt die Kapitalrückzahlung einerInvestition für eine angegebene PeriodezurückBerechnet die aufgelaufene Tilgungeines Darlehens, die zwischen zweiPerioden zu zahlen istBerechnet die kumulierten Zinsen, diezwischen zwei Perioden zu zahlen sindGibt den Kurs pro 100 € Nennwert einesunverzinslichen Wertpapiers zurückGibt den Kurs pro 100 € Nennwert einesWertpapiers zurück, das Zinsen amFälligkeitsdatum auszahltGibt den Kurs pro 100 € Nennwert einesWertpapiers zurück, das periodischZinsen auszahltGibt die lineare Abschreibung einesWirtschaftsguts pro Periode zurückGibt die geänderte Dauer für einWertpapier mit einem angenommenenNennwert von 100 € zurück101


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGNBWNOMINALNOTIERUNGBRUNOTIERUNGDEZQIKVRENDITEDISRENDITEFÄLLRENDITERMZTBILLÄQUIVTBILLKURSTBILLRENDITEUNREGER.KURSUNREGER.RENDNPVNOMINALDOLLARFRDOLLARDEMIRRYIELDDISCYIELDMATYIELDPMTTBILLEQTBILLPRICETBILLYIELDODDFPRICEODDFYIELDGibt den Nettobarwert einer Investitionauf Basis periodisch anfallenderZahlungen und eines AbzinsungsfaktorszurückGibt die jährliche NominalverzinsungzurückWandelt eine Notierung, die alsDezimalzahl ausgedrückt wurde, in einenDezimalbruch umWandelt eine Notierung, die alsDezimalbruch ausgedrückt wurde, in eineDezimalzahl umGibt den internen Zinsfuß zurück, wobeipositive und negative Zahlungen zuunterschiedlichen Sätzen finanziertwerdenGibt die jährliche Rendite einesunverzinslichen Wertpapiers zurückGibt die jährliche Rendite einesWertpapiers zurück, das Zinsen amFälligkeitsdatum auszahltGibt die Rendite eines Wertpapierszurück, das periodisch Zinsen auszahltGibt die periodische Zahlung für eineAnnuität zurückGibt die Rendite für ein WertpapierzurückGibt den Kurs pro 100 € Nennwert einesWertpapiers zurückGibt die Rendite für ein WertpapierzurückGibt den Kurs pro 100 € Nennwert einesWertpapiers mit einem unregelmäßigenersten Zinstermin zurückGibt die Rendite eines Wertpapiers miteinem unregelmäßigen ersten Zinsterminzurück102


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGUNREGLE.KURSUNREGLE.RENDVDBXINTZINSFUSSXKAPITALWERTZINSZINSSATZZINSTERMNZZINSTERMTAGEZINSTERMTAGNZZINSTERMTAGVAZINSTERMVZZINSTERMZAHLZINSZZW2ODDLPRICEODDLYIELDVDBXIRRXNPVRATEINTRATECOUPNCDCOUPDAYSCOUPDAYSNCCOUPDAYBSCOUPPCDCOUPNUMIPMTFVSCHEDULEGibt den Kurs pro 100 € Nennwert einesWertpapiers mit einem unregelmäßigenletzten Zinstermin zurückGibt die Rendite eines Wertpapiers miteinem unregelmäßigen letzten ZinsterminzurückGibt die degressive Abschreibung einesWirtschaftsguts für eine bestimmtePeriode oder Teilperiode zurückGibt den internen Zinsfuß einer Reihenicht periodisch anfallender ZahlungenzurückGibt den Nettobarwert (Kapitalwert) einerReihe nicht periodisch anfallenderZahlungen zurückGibt den Zinssatz pro Zeitraum einerAnnuität zurückGibt den Zinssatz eines voll investiertenWertpapiers zurückGibt das Datum des ersten Zinsterminsnach dem Abrechnungstermin zurückGibt die Anzahl der Tage der Zinsperiodezurück, die den AbrechnungstermineinschließtGibt die Anzahl der Tage vomAbrechnungstermin bis zum nächstenZinstermin zurückGibt die Anzahl der Tage vom Anfangdes Zinstermins bis zumAbrechnungstermin zurückGibt das Datum des letzten Zinsterminsvor dem Abrechnungstermin zurückGibt die Anzahl der Zinstermine zwischenAbrechnungs- und FälligkeitsdatumzurückGibt die Zinszahlung einer Investition fürdie angegebene Periode zurückGibt den aufgezinsten Wert desAnfangskapitals für eine Reihe periodischunterschiedlicher Zinssätze zurück103


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGZWZZRFVNPERGibt den zukünftigen Wert (Endwert)einer Investition zurückGibt die Anzahl der Zahlungsperiodeneiner Investition zurückTabelle: Finanzmathematische FunktionenC.2 Logische FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGFALSCH FALSE Gibt den Wahrheitswert FALSCH zurückWENNIFGibt einen logischen Test an, der durchgeführtwerden sollNICHT NOT Kehrt die Logik der Argumente umODERUNDORANDGibt WAHR zurück, wenn ein ArgumentWAHR istGibt WAHR zurück, wenn alle zugehörigenArgumente WAHR sindWAHR TRUE Gibt den Wahrheitswert WAHR zurückWENNFEHLERIFERRORWenn eine Formel mit einem Fehlerausgewertet wird, wird ein angegebener Wertzurückgegeben; anderenfalls wird dasErgebnis der Formel zurückgegeben.Tabelle: Logische FunktionenC.3 Textfunktionen104


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGASCBAHTTEXTCODEDMERSETZEN,ERSETZENBFESTFINDEN,FINDENBASCBAHTTEXTCODEDOLLARREPLACE,REPLACEBFIXEDFIND, FINDBWandelt lateinische Buchstaben voller Breite(Double-Byte-Zeichen) oder Katakanainnerhalb einer Zeichenfolge in Zeichenhalber Breite (Single-Byte-Zeichen) umWandelt eine Zahl in einen Text imWährungsformat ß (Baht) umGibt die Codezahl des ersten Zeichens ineinem Text zurückWandelt eine Zahl in einen Text imWährungsformat $ (Dollar) umErsetzt Zeichen in TextFormatiert eine Zahl als Text mit einer festenAnzahl DezimalstellenSucht einen in einem anderen Textwertenthaltenen Textwert (Groß-/Kleinschreibungwird beachtet)GLÄTTEN TRIM Entfernt Leerzeichen aus TextGROSS2PROPERSchreibt den ersten Buchstaben aller Wörterin einem Textwert großGROSS UPPER Wandelt Text in Großbuchstaben umIDENTISCH EXACT Überprüft, ob zwei Textwerte identisch sindJISJISWandelt lateinische Buchstaben halber Breite(Single-Byte-Zeichen) oder Katakanainnerhalb einer Zeichenfolge in Zeichen vollerBreite (Double-Byte-Zeichen) umKLEIN LOWER Wandelt Text in Kleinbuchstaben umLÄNGE,LÄNGEBLEN, LENBGibt die Anzahl Zeichen in einerTextzeichenfolge zurück105


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGLINKS, LINKSBPHONETICRECHTS,RECHTSBSÄUBERNSUCHEN,SUCHENBTEIL, TEILBTEXTLEFT, LEFTBPHONETICRIGHT, RIGHTBCLEANSEARCH,SEARCHMID, MIDBTEXTGibt die Zeichen ganz links aus einemTextwert zurückExtrahiert die phonetischen (Furigana-)Zeichen aus einer TextzeichenfolgeGibt die Zeichen ganz rechts aus einemTextwert zurückLöscht alle nicht druckbaren Zeichen auseinem TextSucht einen in einem anderen Textwertenthaltenen Textwert (Groß-/Kleinschreibungwird nicht beachtet)Gibt eine bestimmte Anzahl Zeichen auseiner Textzeichenfolge zurück, die an derangegebenen Stelle beginntFormatiert eine Zahl und wandelt sie in TextumT T Wandelt die eigenen Argumente in Text umVERKETTENWECHSELNCONCATENATESUBSTITUTEVerknüpft mehrere Textelemente zu einemTextelementErsetzt alten Text durch neuen Text in einerTextzeichenfolgeWERT VALUE Wandelt ein Textargument in eine Zahl umWIEDERHOLEN REPT Wiederholt einen Text so oft wie angegebenZEICHENCHARGibt das der Codezahl entsprechendeZeichen zurückTabelle: TextfunktionenC.4 Datums- und Uhrzeitfunktionen106


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGARBEITSTAG.INTLARBEITSTAGBRTEILJAHREDATUMDATWERTEDATUMHEUTEJAHRJETZTKALENDERWOCHEMINUTEMONATMONATSENDEWORKDAY.INTLWORKDAYYEARFRACDATEDATEVALUEEDATETODAYYEARNOWWEEKNUMMINUTEMONTHEOMONTHGibt die fortlaufende Zahl des Datumszurück, das vor oder nach einerbestimmten Anzahl von Arbeitstagen liegt.Dabei werden Parameter verwendet, umanzugeben, welche und wie viele Tage aufWochenenden fallen.Gibt die fortlaufende Zahl des Datums voroder nach einer bestimmten Anzahl vonArbeitstagen zurückGibt die Anzahl der ganzen Tage zwischenAusgangsdatum und Enddatum inBruchteilen von Jahren zurückGibt die fortlaufende Zahl einesbestimmten Datums zurückWandelt ein Datum in Form von Text ineine fortlaufende Zahl umGibt die fortlaufende Zahl des Datumszurück, bei dem es sich um dieangegebene Anzahl von Monaten vor odernach dem Anfangstermin handeltGibt die fortlaufende Zahl des heutigenDatums zurückWandelt eine fortlaufende Zahl in ein JahrumGibt die fortlaufende Zahl des aktuellenDatums und der aktuellen Uhrzeit zurückWandelt eine fortlaufende Zahl in eineZahl um, die angibt, in welche Wocheeines Jahres das angegebene Datum fälltWandelt eine fortlaufende Zahl in eineMinute umWandelt eine fortlaufende Zahl in einenMonat umGibt die fortlaufende Zahl des letzten Tagsdes Monats vor oder nach einerfestgelegten Anzahl von Monaten zurück107


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGNETTOARBEITSTAGE.INTLNETTOARBEITSTAGESEKUNDESTUNDETAGE360TAGWOCHENTAGZEITZEITWERTNETWORKDAYS.INTLNETWORKDAYSSECONDHOURDAYS360DAYWEEKDAYTIMETIMEVALUEGibt die Anzahl der vollen Arbeitstagezwischen zwei Datumsangaben zurück.Dabei werden Parameter verwendet, umanzugeben, welche und wie viele Tage aufWochenenden fallenGibt die Anzahl der vollen Arbeitstagezwischen zwei Datumsangaben zurückWandelt eine fortlaufende Zahl in eineSekunde umWandelt eine fortlaufende Zahl in eineStunde umBerechnet die Anzahl der Tage zwischenzwei Datumsangaben ausgehend voneinem Jahr, das 360 Tage hatWandelt eine fortlaufende Zahl in den Tagdes Monats umWandelt eine fortlaufende Zahl in den Tagder Woche umGibt die fortlaufende Zahl einerbestimmten Uhrzeit zurückWandelt eine Uhrzeit in Form von Text ineine fortlaufende Zahl umTabelle: Datums- und ZeitfunktionenC.5 Nachschlage- und VerweisfunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGADRESSEBEREICH.VERSCHIEBEN108ADDRESSOFFSETGibt einen Bezug auf eine einzelne Zelle ineinem Tabellenblatt als Text zurückGibt einen Bezug zurück, der einenAbstand zu einem angegebenen Bezughat


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGBEREICHEHYPERLINKINDEXINDIREKTAREASHYPERLINKINDEXINDIRECTGibt die Anzahl der innerhalb einesBezugs aufgeführten Bereiche zurückErstellt eine Verknüpfung oder einenSprung, über die ein auf einemNetzwerkserver, in einem Intranet oder imInternet gespeichertes Dokument geöffnetwirdVerwendet einen Index, um einen Wertaus einem Bezug oder einem ArrayauszuwählenGibt einen Bezug zurück, der von einemTextwert angegeben wirdMTRANS TRANSPOSE Gibt die Transponierte einer Matrix zurückPIVOTDATENZUORDNENRTDSPALTESPALTENSVERWEISVERGLEICHVERWEISWAHLWVERWEISGETPIVOTDATARTDCOLUMNCOLUMNSVLOOKUPMATCHLOOKUPCHOOSEHLOOKUPGibt die in einem PivotTable-Berichtgespeicherten Daten zurückRuft Echtzeitdaten von einem Programmab, das die COM-AutomatisierungunterstütztGibt die Spaltennummer eines BezugszurückGibt die Anzahl der innerhalb einesBezugs aufgeführten Spalten zurückSucht in der ersten Spalte einer Matrix unddann zeilenweise, um den Wert einer ZellezurückzugebenSucht Werte in einem Bezug oder in einerMatrixSucht Werte in einem Vektor oder in einerMatrixWählt einen Wert aus einer Liste mitWerten ausSucht in der obersten Zeile einer Matrixund gibt den Wert der angegebenen Zellezurück109


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGZEILEZEILENROWROWSGibt die Zeilennummer eines BezugszurückGibt die Anzahl der innerhalb einesBezugs aufgeführten Zeilen zurückTabelle: Nachschlage- und VerweisfunktionenC.6 Mathematische und trigonometrische FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGABRUNDENROUNDDOWNRundet einer Zahl in Richtung Null abABS ABS Gibt den Absolutwert einer Zahl zurückAGGREGATAGGREGATEGibt ein Aggregat in einer Liste oderDatenbank zurückARCCOS ACOS Gibt den Arcuscosinus einer Zahl zurückARCCOSHYPACOSHGibt den umgekehrten hyperbolischenCosinus einer Zahl zurückARCSIN ASIN Gibt den Arcussinus einer Zahl zurückARCSINHYPARCTAN2ASINHATAN2Gibt den umgekehrten hyperbolischenSinus einer Zahl zurückGibt den Arcustangens von x- und y-Koordinaten zurückARCTAN ATAN Gibt den Arcustangens einer Zahl zurück110


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGARCTANHYPATANHGibt den umgekehrten hyperbolischenTangens einer Zahl zurückAUFRUNDEN ROUNDUP Rundet eine Zahl von Null aus aufBOGENMASS RADIANS Wandelt Grad in Bogenmaß (Radiant) umCOS COS Gibt den Cosinus einer Zahl zurückCOSHYPEXPCOSHEXPGibt den hyperbolischen Kosinus einer ZahlzurückPotenziert die Basis e (EULERsche Zahl)mit der als Argument angegebenen ZahlFAKULTÄT FACT Gibt die Fakultät einer Zahl zurückGANZZAHLGERADEGGTINTEVENGCDRundet eine Zahl auf die nächste GanzzahlabRundet eine Zahl auf die nächste geradeganze Zahl aufGibt den größten gemeinsamen TeilerzurückGRAD DEGREES Wandelt Bogenmaß (Radiant) in Grad umISO.OBERGRENZEKGVKOMBINATIONENKÜRZENISO.CEILINGLCMCOMBINTRUNCGibt eine Zahl zurück, die auf die nächsteGanzzahl oder auf das kleinste Vielfachevon Schritt gerundet wurdeGibt das kleinste gemeinsame VielfachezurückGibt die Anzahl der Kombinationen für einebestimmte Anzahl von Objekten zurückSchneidet die Kommastellen der Zahl abund gibt als Ergebnis eine ganze Zahlzurück111


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGLNLOG10LOGLNLOG10LOGGibt den natürlichen Logarithmus einer ZahlzurückGibt den Logarithmus einer Zahl zur Basis10 zurückGibt den Logarithmus einer Zahl zurangegebenen Basis zurückMDET MDETERM Gibt die Determinante einer Matrix zurückMINV MINVERSE Gibt die Inverse einer Matrix zurückMMULT MMULT Gibt das Produkt zweier Matrizen zurückOBERGRENZE.GENAUOBERGRENZECEILING.PRECISECEILINGRundet eine Zahl auf die nächste Ganzzahloder auf das kleinste Vielfache von Schritt.Die Zahl wird unabhängig von ihremVorzeichen aufgerundet.Rundet eine Zahl auf die nächste Ganzzahloder auf das kleinste Vielfache von SchrittPI PI Gibt den Wert von Pi zurückPOLYNOMIALPOTENZPOTENZREIHEMULTINOMIALPOWERSERIESSUMGibt den Polynomialkoeffizienten einerGruppe von Zahlen zurückGibt als Ergebnis eine potenzierte ZahlzurückGibt die Summe von Potenzen (zurBerechnung von Potenzreihen unddichotomen Wahrscheinlichkeiten) zurückPRODUKT PRODUCT Multipliziert die zugehörigen ArgumenteQUADRATESUMMEQUOTIENTSUMSQQUOTIENTGibt die Summe der quadrierten ArgumentezurückGibt den ganzzahligen Anteil einer Divisionzurück112


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGREST MOD Gibt den Rest einer Division zurückRÖMISCHRUNDENSINSINHYPROMANROUNDSINSINHWandelt eine arabische Zahl in einerömische Zahl als Text umRundet eine Zahl auf eine bestimmteAnzahl von DezimalstellenGibt den Sinus eines angegebenen WinkelszurückGibt den hyperbolischen Sinus einer ZahlzurückSUMME SUM Addiert die zugehörigen ArgumenteSUMMENPRODUKTSUMMEWENNSUMMEWENNSSUMMEX2MY2SUMMEX2PY2SUMMEXMY2SUMPRODUCTSUMIFSUMIFSSUMX2MY2SUMX2PY2SUMXMY2Gibt die Summe der Produkteentsprechender Matrixkomponenten zurückAddiert Zellen, die mit den SuchkriterienübereinstimmenAddiert die Zellen in einem Bereich, diemehrere Kriterien erfüllenGibt die Summe der Differenz vonQuadraten entsprechender Werte in zweiMatrizen zurückGibt die Summe der Summe von Quadratenentsprechender Werte in zwei MatrizenzurückGibt die Summe der Quadrate vonDifferenzen entsprechender Werte in zweiMatrizen zurückTAN TAN Gibt den Tangens einer Zahl zurückTANHYPTEILERGEBNISTANHSUBTOTALGibt den hyperbolischen Tangens einerZahl zurückGibt ein Teilergebnis in einer Liste oderDatenbank zurück113


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGUNGERADEUNTERGRENZE.GENAUODDFLOOR.PRECISERundet eine Zahl auf die nächste ungeradeganze Zahl aufRundet eine Zahl auf die nächste Ganzzahloder auf das kleinste Vielfache von Schrittab. Die Zahl wird unabhängig von ihremVorzeichen abgerundet.UNTERGRENZE FLOOR Rundet eine Zahl in Richtung Null abVORZEICHEN SIGN Gibt das Vorzeichen einer Zahl zurückVRUNDENMROUNDGibt eine auf das gewünschte Vielfachegerundete Zahl zurückWURZEL SQRT Gibt die Quadratwurzel einer Zahl zurückWURZELPIZUFALLSBEREICHZUFALLSZAHLZWEIFAKULTÄTSQRTPIRANDBETWEENRANDFACTDOUBLEGibt die Wurzel aus der mit Pi multipliziertenZahl zurückGibt eine ganze Zufallszahl aus demfestgelegten Bereich zurückGibt eine Zufallszahl zwischen 0 und 1zurückGibt die Fakultät zu Zahl mit Schrittlänge 2zurückTabelle: Mathematische und trigonometrische FunktionenC.7 Statistische FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGACHSENABSCHNITTINTERCEPTGibt den Schnittpunkt der linearenRegressionsgeraden zurück114


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGANZAHL2ANZAHLANZAHLLEEREZELLENBESTIMMTHEITSMASSBETA.INVBETA.VERTBINOM.INVBINOM.VERTCHI-QHI.VERT.RECHIQU.INV.RECHIQU.INVCHIQU.TESTCHIQU.VERT.REEXPON.VERTCOUNTACOUNTCOUNTBLANKRSQBETA.INVBETA.DISTBINOM.INVBINOM.DISTCHI-QHI.VERT.RECHISQ.INV.RTCHISQ.INVCHISQ.TESTCHISQ.DIST.RTEXPON.DISTZählt die Anzahl der Werte in derListe mit ArgumentenZählt die Anzahl der Zahlen in derListe mit ArgumentenGibt die Anzahl der leeren Zellenin einem Bereich anGibt das Quadrat desPEARSONschenKorrelationskoeffizienten zurückGibt Quantile der kumuliertenVerteilungsfunktion für einebestimmte Betaverteilung zurückGibt die Werte der kumuliertenBetaverteilungsfunktion zurückGibt den kleinsten Wert zurück, fürden die kumuliertenWahrscheinlichkeiten derBinomialverteilung kleiner odergleich einerGrenzwahrscheinlichkeit sindGibt Wahrscheinlichkeiten einerbinominalverteiltenZufallsvariablen zurückGibt die kumulative Beta-WahrscheinlichkeitsdichtefunktionzurückGibt Quantile derVerteilungsfunktion (1-Alpha) derChi-Quadrat-Verteilung zurückGibt die kumulative Beta-WahrscheinlichkeitsdichtefunktionzurückGibt die Teststatistik einesUnabhängigkeitstests zurückGibt Werte der Verteilungsfunktion(1-Alpha) einer Chi-QuadratverteiltenZufallsgröße zurückGibt Wahrscheinlichkeiten einerexponentialverteiltenZufallsvariablen zurück115


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGF.INV.REF.INVF.TESTF.VERT.REF.VERTFISHERFISHERINVGAMMA.INVGAMMA.VERTGAMMALN.GENAUGAMMALNGEOMITTELGESTUTZTMITTELGTESTHARMITTELF.INV.RTF.INVF.TESTF.DIST.RTF.DISTFISHERFISHERINVGAMMA.INVGAMMA.DISTGAMMALN.PRECISEGAMMALNGEOMEANTRIMMEANZTESTHARMEANGibt Quantile der F-VerteilungzurückGibt Quantile der F-VerteilungzurückGibt die Teststatistik eines F-TestszurückGibt Werte der Verteilungsfunktion(1-Alpha) einer F-verteiltenZufallsvariablen zurückGibt Werte der Verteilungsfunktion(1-Alpha) einer F-verteiltenZufallsvariablen zurückGibt die Fisher-TransformationzurückGibt die Umkehrung der Fisher-Transformation zurückGibt Quantile derGammaverteilung zurückGibt Wahrscheinlichkeiten einergammaverteilten ZufallsvariablenzurückGibt den natürlichen Logarithmusder Gammafunktion zurück, Γ(x)Gibt den natürlichen Logarithmusder Gammafunktion zurück, Γ(x)Gibt das geometrische MittelzurückGibt den Mittelwert einerDatengruppe zurück, ohne dieRandwerte zu berücksichtigenGibt den einseitigenWahrscheinlichkeitswert für einenGaußtest (Normalverteilung)zurückGibt das harmonische Mittelzurück116


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGHÄUFIGKEITHYPGEOM.VERTKGRÖSSTEKKLEINSTEKONFIDENZ.NORMKONFIDENZ.TKORRELKOVARIANZ.PKOVARIANZ.SKURTLOGNORM.INVLOGNORM.VERTMAXAFREQUENCYHYPGEOM.DISTLARGESMALLCONFIDENCE.NORMCONFIDENCE.TCORRELCOVARIANCE.PCOVARIANCE.SKURTLOGNORM.INVLOGNORM.DISTMAXAGibt eine Häufigkeitsverteilung alseinspaltige Matrix zurückGibt Wahrscheinlichkeiten einerhypergeometrisch-verteiltenZufallsvariablen zurückGibt den k-größten Wert einerDatengruppe zurückGibt den k-kleinsten Wert einerDatengruppe zurückGibt das 1-AlphaKonfidenzintervall für denErwartungswert einerZufallsvariablen zurückGibt das Konfidenzintervall für denErwartungswert einerZufallsvariablen zurück, wobei derStudentsche T-Test verwendetwirdGibt den Korrelationskoeffizientenzweier Reihen vonMerkmalsausprägungen zurückGibt die Kovarianz zurück, denMittelwert der für alleDatenpunktpaare gebildetenProdukte der AbweichungenGibt die Kovarianz einerStichprobe zurück, d. h. denMittelwert der für alleDatenpunktpaare gebildetenProdukte der AbweichungenGibt die Kurtosis (Exzess) einerDatengruppe zurückGibt Perzentile derLognormalverteilung zurückGibt Werte der Verteilungsfunktioneiner lognormalverteiltenZufallsvariablen zurückGibt den größten Wert in einerListe mit Argumenten zurück.Dazu zählen Zahlen, Text undWahrheitswerte117


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGMAXMEDIANMINAMINMITTELABWMITTELWERTAMITTELWERTMITTELWERTWENNMITTELWERTWENNSMODUS.EINFMODUS.VIELFNEGBINOM.VERTNORM.INVMAXMEDIANMINAMINAVEDEVAVERAGEAAVERAGEAVERAGEIFAVERAGEIFSMODE.SNGLMODE.MULTNEGBINOM.DISTNORM.INVGibt den größten Wert in einerListe mit Argumenten zurückGibt den Median der angegebenenZahlen zurückGibt den kleinsten Wert in einerListe mit Argumenten zurück.Dazu zählen Zahlen, Text undWahrheitswerteGibt den kleinsten Wert in einerListe mit Argumenten zurückGibt die durchschnittliche absoluteAbweichung von Datenpunktenvon ihrem Mittelwert zurückGibt den Mittelwert derzugehörigen Argumente zurück.Dazu gehören Zahlen, Text undWahrheitswerteGibt den Mittelwert derzugehörigen Argumente zurückGibt den Durchschnittswert(arithmetisches Mittel) für alleZellen in einem Bereich, die einemangegebenen Kriteriumentsprechen, zurückGibt den Durchschnittswert(arithmetisches Mittel) aller Zellenzurück, die mehreren KriterienentsprechenGibt den am häufigstenvorkommenden Wert in einerDatengruppe zurückGibt ein vertikales Array der amhäufigsten vorkommenden oderwiederholten Werte in einem Arrayoder Datenbereich zurückGibt Wahrscheinlichkeiten einernegativbinomialverteiltenZufallsvariablen zurückGibt Quantile der Normalverteilungzurück118


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGNORM.S.INVNORM.S.VERTNORM.VERTPEARSONPOISSON.VERTPROGNOSEQUANTIL.EXKLQUANTIL.INKLQUANTILSRANG.EXKLQUANTILSRANG.INKLQUARTILE.EXKLQUARTILE.INKLRANG.GLEICHRANG.MITTELWNORM.S.INVNORM.S.DISTNORM.DISTPEARSONPOISSON.DISTPROGNOSEPERCENTILE.EXCPERCENTILE.INCQUANTILSRANG.EXKLQUANTILSRANG.INKLQUARTILE.EXCQUARTILE.INCRANK.EQRANK.AVGGibt Quantile derStandardnormalverteilung zurückGibt Wahrscheinlichkeiten einerstandardnormalverteiltenZufallsvariablen zurückGibt Wahrscheinlichkeiten einernormalverteilten ZufallsvariablenzurückGibt den PearsonschenKorrelationskoeffizienten zurückGibt Wahrscheinlichkeiten einerPoisson-verteilten ZufallsvariablenzurückGibt einen Wert zurück, der sichaus einem linearen Trend ergibtGibt das k-Quantil von Werten ineinem Bereich zurück, wobei k imBereich von 0..1 ausschließlichliegtGibt das k-Quantil von Werten ineinem Bereich zurückGibt den prozentualen (0..1ausschließlich) Rang (Alpha) einesWerts in einem Datenset zurückGibt den prozentualen Rang(Alpha) eines Werts in einerGruppe von Daten zurückGibt die Quartile eines Datensetszurück, basierend aufPerzentilwerten von 0..1ausschließlichGibt die Quartile einerDatengruppe zurückGibt den Rang zurück, den eineZahl innerhalb einer Liste vonZahlen einnimmtGibt die durchschnittlicheRangzahl zurück, den eine Zahlinnerhalb einer Liste von Zahleneinnimmt119


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGRGPRKPSCHIEFESTABW.NSTABW.SSTABWASTABWNASTANDARDISIERUNGSTEIGUNGSTFEHLERYXSUMQUADABWT.INV.2ST.INVT.TESTLINESTLOGESTSKEWSTDEV.PSTDEV.SSTDEVASTDEVPASTANDARDIZESLOPESTEYXDEVSQT.INV.2TT.INVT.TESTGibt die Parameter eines linearenTrends zurückGibt die Parameter einesexponentiellen Trends zurückGibt die Schiefe einer VerteilungzurückBerechnet dieStandardabweichung auf derGrundlage der GrundgesamtheitSchätzt die Standardabweichungausgehend von einer StichprobeSchätzt die Standardabweichungausgehend von einer Stichprobe,die Zahlen, Text undWahrheitswerte enthältBerechnet dieStandardabweichung auf derGrundlage der Grundgesamtheit,die Zahlen, Text undWahrheitswerte enthältGibt einen standardisierten WertzurückGibt die Steigung der linearenRegressionsgeraden zurückGibt den Standardfehler dergeschätzten y-Werte für alle x-Werte der Regression zurückGibt die Summe von quadriertenAbweichungen zurückGibt die zweiseitigen Quantile der(Student) t-Verteilung zurückGibt den t-Wert der Student-T-Verteilung als Funktion derWahrscheinlichkeit und derFreiheitsgrade zurückGibt die Teststatistik einesStudent'schen t-Tests zurück120


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGT.VERT.2ST.VERT.RET.VERTTRENDVAR.PT.DIST.2TT.DIST.RTT.DISTTRENDVAR.PGibt die Prozentpunkte(Wahrscheinlichkeit) für die(Student) t-Verteilung für zweiEndflächen zurückGibt Werte der Verteilungsfunktion(1-Alpha) einer (Student) t-verteilten Zufallsvariablen zurückGibt die Prozentpunkte(Wahrscheinlichkeit) für die(Student) t-Verteilung zurückGibt Werte zurück, die sich auseinem linearen Trend ergebenBerechnet die Varianz auf derGrundlage der GrundgesamtheitVAR.SVAR.SVARIANZAVARAVARIANZENAVARPAVARIATIONEN PERMUTVARIATIONGROWTHWAHRSCHBEREICH PROBWEIBULL.VERT WEIBULL.DISTZÄHLENWENN COUNTIFZÄHLENWENNS COUNTIFSTabelle: Statistische FunktionenSchätzt die Varianz auf derGrundlage einer StichprobeSchätzt die Varianz ausgehendvon einer Stichprobe, die Zahlen,Text und Wahrheitswerte enthältBerechnet die Varianz auf derGrundlage einer Grundgesamtheit,die Zahlen, Text undWahrheitswerte enthältGibt die Anzahl der Permutationenfür eine bestimmte Anzahl vonObjekten zurückGibt Werte zurück, die sich auseinem exponentiellen TrendergebenGibt die Wahrscheinlichkeit für einvon zwei Werteneingeschlossenes Intervall zurückGibt Wahrscheinlichkeiten einerWeibull-verteilten ZufallsvariablenzurückDie Zellen eines Bereichs, derenInhalte mit den Suchkriterienübereinstimmen, werden gezähltDie Zellen eines Bereichs, derenInhalte mit mehreren Kriterienübereinstimmen, werden gezählt121


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>C.8 KonstruktionsfunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGBESSELIBESSELJBESSELKBESSELYBININDEZBININHEXBININOKTDELTADEZINBINDEZINHEXDEZINOKTBESSELIBESSELJBESSELKBESSELYBIN2DECBIN2HEXBIN2OCTDELTADEC2BINDEC2HEXDEC2OCTGibt die geänderte BesselfunktionIn(x) zurückGibt die Besselfunktion Jn(x)zurückGibt die geänderte BesselfunktionKn(x) zurückGibt die Besselfunktion Yn(x)zurückWandelt eine binäre Zahl(Dualzahl) in eine dezimale ZahlumWandelt eine binäre Zahl(Dualzahl) in eine hexadezimaleZahl umWandelt eine binäre Zahl(Dualzahl) in eine oktale Zahl umÜberprüft, ob zwei Werte gleichsindWandelt eine dezimale Zahl ineine binäre Zahl (Dualzahl) umWandelt eine dezimale Zahl ineine hexadezimale Zahl umWandelt eine dezimale Zahl ineine oktale Zahl umGAUSSF.GENAU ERF.PRECISE Gibt die Fehlerfunktion zurückGAUSSFEHLER ERF Gibt die Fehlerfunktion zurückGAUSSFKOMPL.GENAUERFC.PRECISEGibt das Komplement zurGAUSZschen Fehlerfunktionintegriert zwischen x undUnendlichkeit zurück122


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGGAUSSFKOMPLGGANZZAHLHEXINBINHEXINDEZHEXINOKTIMABSIMAGINÄRTEILIMAPOTENZIMARGUMENTIMCOSIMDIVIMEXPIMKONJUGIERTEIMLNIMLOG10ERFCGESTEPHEX2BINHEX2DECHEX2OCTIMABSIMAGINARYIMPOWERIMARGUMENTIMCOSIMDIVIMEXPIMCONJUGATEIMLNIMLOG10Gibt das Komplement zurGAUSZschen FehlerfunktionzurückÜberprüft, ob eine Zahl größer alsein gegebener Schwellenwert istWandelt eine hexadezimale Zahlin eine binäre Zahl (Dualzahl) umWandelt eine hexadezimale Zahlin eine dezimale Zahl umWandelt eine hexadezimale Zahlin eine Oktalzahl umGibt den Absolutbetrag (Modulo)einer komplexen Zahl zurückGibt den Imaginärteil einerkomplexen Zahl zurückPotenziert eine komplexe Zahl miteiner ganzen ZahlGibt das Argument Theta zurück,einen Winkel im BogenmaßGibt den Cosinus einer komplexenZahl zurückGibt den Quotienten zweierkomplexer Zahlen zurückGibt die algebraische Form einerin exponentieller Schreibweisevorliegenden komplexen ZahlzurückGibt die konjugierte komplexe Zahlzu einer komplexen Zahl zurückGibt den natürlichen Logarithmuseiner komplexen Zahl zurückGibt den Logarithmus einerkomplexen Zahl zur Basis 10zurück123


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGIMLOG2IMPRODUKTIMREALTEILIMSINIMSUBIMSUMMEIMWURZELKOMPLEXEOKTINBINOKTINDEZOKTINHEXUMWANDELNIMLOG2IMPRODUCTIMREALIMSINIMSUBIMSUMIMSQRTCOMPLEXOCT2BINOCT2DECOCT2HEXCONVERTGibt den Logarithmus einerkomplexen Zahl zur Basis 2zurückGibt das Produkt von 2 bis 255komplexen Zahlen zurückGibt den Realteil einer komplexenZahl zurückGibt den Sinus einer komplexenZahl zurückGibt die Differenz zwischen zweikomplexen Zahlen zurückGibt die Summe von komplexenZahlen zurückGibt die Quadratwurzel einerkomplexen Zahl zurückWandelt den Real- undImaginärteil in eine komplexe ZahlumWandelt eine oktale Zahl in einebinäre Zahl (Dualzahl) umWandelt eine oktale Zahl in einedezimale Zahl umWandelt eine oktale Zahl in einehexadezimale Zahl umWandelt eine Zahl von einemMaßsystem in ein anderes umTabelle: KonstruktionsfunktionenC.9 Cubefunktionen124


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGCUBEELEMENTEIGENSCHAFTCUBEELEMENTCUBEKPIELEMENTCUBEMENGECUBEMENGENANZAHLCUBERANGELEMENTCUBEWERTTabelle: CubefunktionenCUBEMEMBERPROPERTYCUBEMEMBERCUBEKPIMEMBERCUBESETCUBESETCOUNTCUBERANKEDMEMBERCUBEVALUEGibt den Wert einerElementeigenschaft im Cubezurück. Wird verwendet, um zuüberprüfen, ob ein Elementnameim Cube vorhanden ist, und umdie für dieses Elementangegebene Eigenschaftzurückzugeben.Gibt ein Element oder ein Tuple ineinem Cube zurück. Wirdverwendet, um zu überprüfen, obdas Element oder Tuple im Cubevorhanden ist.Gibt die Eigenschaft eines KeyPerformance Indicators (KPI)zurück und zeigt den KPI-Namenin der Zelle an. Ein KPI ist einquantifizierbares Maß, wie z. B.der monatliche Bruttogewinn oderdie vierteljährlicheMitarbeiterfluktuation, mit dessenHilfe das Leistungsverhalten einesUnternehmens überwacht werdenkann.Definiert eine berechnete MengeElemente oder Tupeln durchSenden eines Mengenausdrucksan den Cube auf dem Server, derdie Menge erstellt und anMicrosoft Office Excel zurückgibtGibt die Anzahl der Elemente ineiner Menge zurückGibt das n-te oder n-rangigeElement in einer Menge zurück.Wird verwendet, um mindestensein Element in einer Mengezurückzugeben, wie z. B. besterVertriebsmitarbeiter oder 10 besteKursteilnehmer.Gibt einen Aggregatwert aus demCube zurück125


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>C.10 InformationsfunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGFEHLER.TYPINFOISTBEZUGISTFEHLERISTFEHLISTGERADEISTKTEXTISTLEERISTLOGISTNVISTTEXTISTUNGERADEISTZAHLNERROR.TYPEINFOISREFISERRORISERRISEVENISNONTEXTISBLANKISLOGICALISNAISTEXTISODDISNUMBERNGibt eine Zahl zurück, die einemFehlertyp entsprichtGibt Informationen zur aktuellenBetriebssystemumgebung zurückGibt WAHR zurück, wenn der Wertein Bezug istGibt WAHR zurück, wenn der Wertein beliebiger Fehlerwert istGibt WAHR zurück, wenn der Wertein beliebiger Fehlerwert außer#NV istGibt WAHR zurück, wenn die Zahlgerade istGibt WAHR zurück, wenn der Wertkein Text istGibt WAHR zurück, wenn der Wertleer istGibt WAHR zurück, wenn der Wertein Wahrheitswert istGibt WAHR zurück, wenn der Wertder Fehlerwert #NV istGibt WAHR zurück, wenn der Wertein Text istGibt WAHR zurück, wenn die Zahlungerade istGibt WAHR zurück, wenn der Werteine Zahl istGibt einen Wert zurück, der in eineZahl umgewandelt wurde126


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGNV NA Gibt den Fehlerwert #NV zurückTYPTYPEZELLECELLTabelle: InformationsfunktionenGibt eine Zahl zurück, die denDatentyp eines Werts angibtGibt Informationen zurFormatierung, zur Position oderzum Inhalt einer Zelle zurückC.11 DatenbankfunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGDBANZAHL2 DCOUNTA Zählt nicht leere Zellen in einer DatenbankDBANZAHLDBAUSZUGDBMAXDBMINDBMITTELWERTDBPRODUKTDBSTDABWDCOUNTDGETDMAXDMINDAVERAGEDPRODUCTDSTDEVZählt die Zellen mit Zahlen in einerDatenbankExtrahiert aus einer Datenbank eineneinzelnen Datensatz, der den angegebenenKriterien entsprichtGibt den größten Wert aus ausgewähltenDatenbankeinträgen zurückGibt den kleinsten Wert aus ausgewähltenDatenbankeinträgen zurückGibt den Mittelwert der ausgewähltenDatenbankeinträge zurückMultipliziert die Werte in einem bestimmtenFeld mit Datensätzen, die den Kriterien ineiner Datenbank entsprechenSchätzt die Standardabweichung auf derGrundlage einer Stichprobe ausausgewählten Datenbankeinträgen127


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>DBSTDABWNDBSUMMEDBVARIANZENDBVARIANZDSTDEVPDSUMDVARPDVARBerechnet die Standardabweichung auf derGrundlage der Grundgesamtheitausgewählter DatenbankeinträgeAddiert die Zahlen in der Feldspalte mitDatensätzen in der Datenbank, die denKriterien entsprechenBerechnet die Varianz auf der Grundlage derGrundgesamtheit ausgewählterDatenbankeinträgeSchätzt die Varianz auf der Grundlageausgewählter DatenbankeinträgeTabelle: DatenbankfunktionenC.12 KompatibilitätsfunktionenEs handelt sich hier um Funktionen, die aus Gründen der Kompatibilität mit früherenExcel-Versionen noch implementiert sind.FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGBETAINVBETAVERTBINOMVERTCHIINVCHITESTCHIVERTEXPONVERTBETAINVBETADISTBINOMDISTCHIINVCHITESTCHIDISTEXPONDISTGibt Quantile der kumuliertenVerteilungsfunktion für einbestimmte Betaverteilung zurückGibt die Werte der kumuliertenBetaverteilungsfunktion zurückGibt Wahrscheinlichkeiten einerbinominalverteiltenZufallsvariablen zurückGibt Quantile derVerteilungsfunktion (1-Alpha) derChi-Quadrat-Verteilung zurückGibt die Teststatistik einesUnabhängigkeitstests zurückGibt Werte der Verteilungsfunktion(1-Alpha) einer Chi-QuadratverteiltenZufallsgröße zurückGibt Wahrscheinlichkeiten einerexponentialverteiltenZufallsvariablen zurück128


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGFINVFTESTFVERTGAMMAINVGAMMAVERTGTESTHYPGEOMVERTKONFIDENZKOVARKRITBINOMLOGINVLOGNORMVERTMODALWERTFINVFTESTFDISTGAMMAINVGAMMADISTZTESTHYPGEOMDISTCONFIDENCECOVARCRITBINOMLOGINVLOGNORMDISTMODEGibt Quantile der F-VerteilungzurückGibt die Teststatistik eines F-TestszurückGibt Werte der Verteilungsfunktion(1-Alpha) einer F-verteiltenZufallsvariablen zurückGibt Quantile derGammaverteilung zurückGibt Wahrscheinlichkeiten einergammaverteilten ZufallsvariablenzurückGibt den einseitigenWahrscheinlichkeitswert für einenGAUSZtest (Normalverteilung)zurückGibt Wahrscheinlichkeiten einerhypergeometrisch-verteiltenZufallsvariablen zurückGibt das 1-AlphaKonfidenzintervall für denErwartungswert einerZufallsvariablen zurückGibt die Kovarianz zurück, denMittelwert der für alleDatenpunktpaare gebildetenProdukte der AbweichungenGibt den kleinsten Wert zurück, fürden die kumuliertenWahrscheinlichkeiten derBinomialverteilung kleiner odergleich einerGrenzwahrscheinlichkeit sindGibt Perzentile derLognormalverteilungsfunktionzurückGibt Werte der Verteilungsfunktioneiner lognormalverteiltenZufallsvariablen zurückGibt den am häufigstenvorkommenden Wert in einerDatengruppe zurück129


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>FUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGNEGBINOMVERTNORMINVNORMVERTNORMSVERTPOISSONQUANTILQUANTILSRANGQUARTILERANGSTABWSTABWNSTANDNORMINVTINVTTESTTVERTNEGBINOMDISTNORMINVNORMDISTNORMSDISTPOISSONPERCENTILEPERCENTRANKQUARTILERANKSTDEVSTDEVPNORMSINVTINVTTESTTDISTGibt Wahrscheinlichkeiten einernegativbinomialverteiltenZufallsvariablen zurückGibt Quantile der NormalverteilungzurückGibt Wahrscheinlichkeiten einernormalverteilten ZufallsvariablenzurückGibt Wahrscheinlichkeiten einerstandardnormalverteiltenZufallsvariablen zurückGibt Wahrscheinlichkeiten einerPoisson-verteilten ZufallsvariablenzurückGibt das k-Quantil von Werten ineinem Bereich zurückGibt den prozentualen Rang(Alpha) eines Werts in einerGruppe von Daten zurückGibt die Quartile einerDatengruppe zurückGibt den Rang zurück, den eineZahl innerhalb einer Liste vonZahlen einnimmtSchätzt die Standardabweichungausgehend von einer StichprobeBerechnet dieStandardabweichung auf derGrundlage der GrundgesamtheitGibt Quantile derStandardnormalverteilung zurückGibt Quantile der (Student) t-Verteilung zurückGibt die Teststatistik einesStudentschen t-Tests zurückGibt Werte der Verteilungsfunktion(1-Alpha) einer (Student) t-verteilten Zufallsvariablen zurück130


Übersicht über die Excel-FunktionenFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGVARIANZENVARPBerechnet die Varianz auf derGrundlage der GrundgesamtheitVARIANZVARWEIBULLWEIBULLTabelle: KompatibilitätsfunktionenSchätzt die Varianz auf derGrundlage einer StichprobeGibt Wahrscheinlichkeiten einerWeibull-verteilten ZufallsvariablenzurückC.13 Add-ins und AutomatisierungFUNKTION(DEUTSCH)FUNCTION(ENGL.)BESCHREIBUNGAUFRUFENEUROCONVERTREGISTERREGISTER.KENNUMMERSQL.REQUESTCALLEUROCONVERTREGISTERREGISTER.IDSQL.REQUESTTabelle: Add-ins und AutomatisierungEine Prozedur in einer DLL(Dynamic Link Library) oder Code-Ressource wird aufgerufenWandelt eine Zahl in Euro odervon Euro in die Währung einesMitgliedsstaats oder von derWährung eines Euro-Mitgliedsstaats in die Währungeines anderen Mitgliedsstaats um,indem der Euro als Zwischenwertverwendet wird (Triangulieren)Die REGISTER() XLM Funktionerzeugt einen definierten Namenund verweist darauf über eineexterne dll basierte FunktionGibt die Registrierkennung derangegebenen DLL bzw. der vorherregistrierten Code-RessourcezurückStellt Verbindung mit einerexternen Datenquelle her und führtAbfrage aus, die sich auf einemTabellenblatt befindet. Gibt dasErgebnis dann als Matrix zurück,ohne Makro Programmierung.131


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>D Übersicht über die wichtigsten Excel-ObjekteD.1 Das Application-ObjektDie detaillierte Syntax nebst Beispielen findet man unter der Excel-Objektmodellreferenz in der Excel-Hilfe für Entwickler Application-Object.D.1.1EigenschaftenEs folgt eine Liste der wichtigsten Eigenschaften eines Application-Objekts:EIGENSCHAFTBESCHREIBUNGActiveCellGibt das Range-Objekt zurück, das die aktive Zelle darstellt.ActivePrinterGibt den Namen des aktiven <strong>Dr</strong>uckers zurück oder legt ihnfest.ActiveSheetGibt das aktuelle Sheet-Objekt zurückActiveWindowActiveWorkbookCellsDialogsGibt ein Window-Objekt zurück, welches das aktive Fensterdarstellt.Gibt ein Workbook-Objekt zurück, das die Arbeitsmappe imaktiven Fenster darstellt.Gibt ein Range-Objekt zurück, das alle Zellen des aktivenArbeitsblattes darstellt.Gibt eine Dialogs-Auflistung aller internen Dialogfelder zurück,z.B. Datei-öffnen, -speicher, -drucken.NameGibt den Namen der Anwendung zurück.NamesGibt eine Names-Auflistung aller Namen (z.B. der benanntenZellen) der aktiven Arbeitsmappe zurück.ParentGibt das übergeordnete Objekt zurück.132


Übersicht über die wichtigsten Excel-ObjekteEIGENSCHAFTBESCHREIBUNGPathRangeSheetsGibt den vollständigen Pfad der Anwendung zurück ohne dasabschließende Trennzeichen und den Namen derAnwendung.Gibt ein Range-Objekt zurück, das eine Zelle oder einenZellbereich des aktiven Arbeitsblatts darstellt.Gibt eine Sheets-Auflistung zurück, die alle Blätter in deraktiven Arbeitsmappe darstellt.WindowsGibt eine Windows-Auflistung aller Fenster zurück.WorkbooksWorksheetsGibt eine Workbooks-Auflistung zurück, die alle geöffnetenArbeitsmappen darstellt.Gibt eine Worksheets-Auflistung zurück, die alle Arbeitsblätterder aktiven Arbeitsmappe darstellt.Tabelle: Eigenschaften des Application-ObjektsD.1.2MethodenDie wichtigsten Methoden eines Application-Objekts sind nachfolgend aufgelistet:METHODEBESCHREIBUNGCalculateCalculateFullNeue Berechnung aller geöffneten Arbeitsmappen, einbestimmtes Arbeitsblatt oder einen bestimmten Zellbereich.Erzwingt eine vollständige Berechnung der Daten in allengeöffneten Arbeitsmappen.Tabelle: Methoden des Application-ObjektsD.1.3EreignisseDie Ereignisse des Application-Objekts sind wie folgt:133


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>EREIGNISBESCHREIBUNGAfterCalculateNewWorkbookDas AfterCalculate-Ereignis tritt auf, wenn alleausstehenden Aktualisierungsvorgänge (synchron undasynchron) und alle sich daraus ergebendenBerechnungen abgeschlossen wurden.Tritt auf, wenn eine neue Arbeitsmappe erstellt wird.ProtectedViewWindowActivateProtectedViewWindowBeforeCloseProtectedViewWindowBeforeEditProtectedViewWindowDeactivateProtectedViewWindowOpenProtectedViewWindowResizeTritt auf, wenn ein Fenster Geschützte Ansicht aktiviertwird.Tritt unmittelbar vor dem Schließen eines FenstersGeschützte Ansicht oder einer Arbeitsmappe in einergeschützten Ansicht auf.Tritt unmittelbar vor dem Aktivieren der Bearbeitung fürdie Arbeitsmappe im angegebenen Fenster GeschützteAnsicht auf.Tritt auf, wenn ein Fenster Geschützte Ansicht deaktiviertwird.Tritt auf, wenn eine Arbeitsmappe in einem FensterGeschützte Ansicht geöffnet wird.Tritt auf, wenn die Größe eines Fensters GeschützteAnsicht geändert wird.SheetActivateTritt auf, wenn ein beliebiges Blatt aktiviert wird.SheetBeforeDoubleClickSheetBeforeRightClickSheetCalculateSheetChangeSheetDeactivateSheetFollowHyperlinkTritt auf, wenn vor der Standarddoppelklick-Aktion auf einbeliebiges Arbeitsblatt doppelgeklickt wird.Tritt auf, wenn vor der Standardrechtsklick-Aktion mit derrechten Maustaste auf ein beliebiges Arbeitsblatt geklicktwird.Tritt nach Neuberechnung jedes Arbeitsblatts auf oderwenn beliebige geänderte Daten in einem Diagrammgezeichnet werden.Tritt auf, wenn Zellen auf einem beliebigen Arbeitsblattdurch den Benutzer oder durch eine externe Verknüpfunggeändert werden.Tritt auf, wenn ein beliebiges Blatt deaktiviert wird.Tritt auf, wenn Sie in Microsoft Excel auf einen beliebigenHyperlink klicken. Weitere Informationen zu Ereignissenauf Arbeitsblattebene finden Sie im Hilfethema zumWorksheet.FollowHyperlink-Ereignis.134


Übersicht über die wichtigsten Excel-ObjekteEREIGNISBESCHREIBUNGSheetPivotTableAfterValueChangeSheetPivotTableBeforeAllocateChangesSheetPivotTableBeforeCommitChangesSheetPivotTableBeforeDiscardChangesSheetPivotTableUpdateSheetSelectionChangeWindowActivateTritt nach der Bearbeitung oder Neuberechnung (beiZellen, die Formeln enthalten) einer Zelle oder einesZellbereichs in einer PivotTable auf.Tritt auf, bevor Änderungen auf eine PivotTableangewendet werden.Tritt auf, bevor für Änderungen an der OLAP-Datenquellefür eine PivotTable ein Commit ausgeführt wird.Tritt auf, bevor Änderungen an einer PivotTableverworfen werden.Tritt auf, nachdem das Blatt des PivotTable-Berichtsaktualisiert wurde.Tritt auf, wenn sich die Markierung auf einem Arbeitsblattändert (tritt nicht auf, wenn sich die Markierung auf einemDiagrammblatt befindet).Tritt auf, wenn ein Arbeitsmappen-Fenster aktiviert wird.WindowDeactivateWindowResizeTritt auf, wenn ein Arbeitsmappen-Fenster deaktiviertwird.Tritt auf, wenn die Größe eines Arbeitsmappen-Fenstersangepasst wird.WorkbookActivateTritt auf, wenn eine Arbeitsmappe aktiviert wird.WorkbookAddinInstallWorkbookAddinUninstallTritt auf, wenn eine Arbeitsmappe als Add-In installiertwird.Tritt auf, wenn eine Add-In-Arbeitsmappe deinstalliertwird.WorkbookAfterSaveWorkbookAfterXmlExportWorkbookAfterXmlImportTritt auf, nachdem die Arbeitsmappe gespeichert wurde.Tritt auf, nachdem von Microsoft Excel XML-Daten ausder angegebenen Arbeitsmappe gespeichert oderexportiert wurden.Tritt auf, nachdem eine bestehende XML-Datenverbindung aktualisiert wurde oder neue XML-Daten in eine geöffnete Microsoft Excel-Arbeitsmappeimportiert wurden.135


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>EREIGNISBESCHREIBUNGWorkbookBeforeCloseTritt direkt vor dem Schließen einer geöffnetenArbeitsmappe auf.WorkbookBeforePrintTritt auf, bevor eine Arbeitsmappe gedruckt wird.WorkbookBeforeSaveWorkbookBeforeXmlExportWorkbookBeforeXmlImportWorkbookDeactivateWorkbookNewChartWorkbookNewSheetTritt auf, bevor eine geöffnete Arbeitsmappe gespeichertwird.Tritt auf, bevor XML-Daten aus der angegebenenArbeitsmappe von Microsoft Excel gespeichert oderexportiert werden.Tritt auf, bevor eine bestehende XML-Datenverbindungaktualisiert wird oder neue XML-Daten in eine geöffneteMicrosoft Excel-Arbeitsmappe importiert werden.Tritt auf, wenn eine geöffnete Arbeitsmappe deaktiviertwird.Tritt auf, wenn in einer geöffneten Arbeitsmappe einneues Diagramm erstellt wird.Tritt auf, wenn in einer geöffneten Arbeitsmappe einneues Blatt erstellt wird.WorkbookOpenTritt auf, wenn eine Arbeitsmappe geöffnet wird.WorkbookPivotTableCloseConnectionTritt auf, nachdem die Verbindung zu einem PivotTable-Bericht geschlossen wurde.WorkbookPivotTableOpenConnectionWorkbookRowsetCompleteWorkbookSyncTabelle: Ereignisse des Application-ObjektsTritt auf, nachdem eine Verbindung eines PivotTable-Berichts geöffnet wurde.Das WorkbookRowsetComplete-Ereignis tritt auf, wennder Benutzer einen <strong>Dr</strong>illthrough durch das Recordsetausführt oder die Rowset-Aktion für eine OLAP-PivotTable aufruft.Tritt auf, wenn die lokale Kopie einer Arbeitsmappe, dieTeil eines Dokumentarbeitsbereichs ist, mit der Kopie aufdem Server synchronisiert wird.136


Übersicht über die wichtigsten Excel-ObjekteD.2 Das Workbook-ObjektDie detaillierte Syntax nebst Beispielen findet man unter der Excel-Objektmodellreferenz in der Excel-Hilfe für Entwickler Workbook-Object.D.2.1EigenschaftenDie wichtigsten Eigenschaften eines Workbook-Objekts sind wie folgt:EIGENSCHAFTBESCHREIBUNGActiveSheetGibt das aktuelle (aktive) Arbeitsblatt zurück.NameGibt den Namen der Arbeitsmappe zurück oder legt ihn fest.NamesGibt eine Names-Auflistung aller Namen der Arbeitsmappezurück, z. B. benannte Zellen.ParentGibt das übergeordnete Objekt zurück (Application-Objekt).PathGibt den vollständigen Pfad der Arbeitsmappe/ Datei zurück.SavedSheetsThisWorkbookWorksheetsHat den Zustand True, wenn die Arbeitsmappe seit dem letztenSpeichern nicht geändert wurde.Gibt eine Sheets-Auflistung zurück, die alle Blätter derArbeitsmappe darstellt (Tabellen und Diagramme).Gibt ein Workbook-Objekt zurück, das die aktuelle Arbeitsmappedarstellt.Gibt eine Sheets-Auflistung zurück, die alle Blätter derArbeitsmappe darstellt (Tabellen).Tabelle: Eigenschaften des Workbook-ObjektsD.2.2MethodenDie wichtigsten Methoden eines Workbook-Objekts sind wie folgt:137


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>METHODEBESCHREIBUNGActivateAktiviert eine einzelne Arbeitsmappe.CloseSchließt eine einzelne Arbeitsmappe.PrintOut<strong>Dr</strong>uckt die Arbeitsmappe.SaveSpeichert die Änderungen der Arbeitsmappe.Tabelle: Methoden des Workbook-ObjektsD.2.3EreignisseDie Ereignisse des Workbook-Objekts sind wie folgt:EREIGNISBESCHREIBUNGActivateAddinInstallTritt auf, wenn eine Arbeitsmappe, ein Arbeitsblatt, einDiagrammblatt oder ein eingebettetes Diagramm aktiviertwird.Tritt auf, wenn die Arbeitsmappe als Add-In installiert wird.AddinUninstallTritt auf, wenn die Arbeitsmappe als Add-In deinstalliert wird.AfterSaveAfterXmlExportAfterXmlImportBeforeCloseTritt auf, nachdem die Arbeitsmappe gespeichert wurde.Tritt auf, nachdem von Microsoft Excel XML-Daten aus derangegebenen Arbeitsmappe gespeichert oder exportiertwurden.Tritt auf, nachdem eine bestehende XML-Datenverbindungaktualisiert wurde oder neue XML-Daten in eine geöffneteMicrosoft Excel-Arbeitsmappe importiert wurden.Tritt auf, bevor die Arbeitsmappe geschlossen wird. Wurdedie Arbeitsmappe geändert, tritt dieses Ereignis ein, bevorder Benutzer gefragt wird, ob die Änderungen gespeichertwerden sollen.138


Übersicht über die wichtigsten Excel-ObjekteEREIGNISBESCHREIBUNGBeforePrintTritt auf, bevor die Arbeitsmappe (oder darin enthalteneTeile) gedruckt wird.BeforeSaveBeforeXmlExportBeforeXmlImportDeactivateNewChartNewSheetTritt auf, bevor die Arbeitsmappe gespeichert wird.Tritt auf, bevor XML-Daten aus der angegebenenArbeitsmappe von Microsoft Excel gespeichert oder exportiertwerden.Tritt auf, bevor eine bestehende XML-Datenverbindungaktualisiert wird oder neue XML-Daten in eine geöffneteMicrosoft Excel-Arbeitsmappe importiert werden.Tritt auf, wenn das Diagramm, das Arbeitsblatt oder dieArbeitsmappe deaktiviert wird.Tritt auf, wenn in einer Arbeitsmappe ein neues Diagrammerstellt wird.Tritt auf, wenn in einer Arbeitsmappe ein neues Blatt erstelltwird.OpenTritt auf, wenn die Arbeitsmappe geöffnet wird.PivotTableCloseConnectionPivotTableOpenConnectionRowsetCompleteSheetActivateTritt auf, nachdem eine PivotTable ihre Verbindung zurDatenquelle geschlossen hat.Tritt auf, nachdem eine PivotTable ihre Verbindung zurDatenquelle geöffnet hat.Das Ereignis wird ausgelöst, wenn der Benutzer einen<strong>Dr</strong>illthrough durch das Recordset ausführt oder die Rowset-Aktion für eine OLAP-PivotTable aufruft.Tritt auf, wenn ein beliebiges Blatt aktiviert wird.SheetBeforeDoubleClickSheetBeforeRightClickSheetCalculateTritt auf, wenn vor der Standarddoppelklick-Aktion auf einbeliebiges Arbeitsblatt doppelgeklickt wird.Tritt auf, wenn vor der Standardrechtsklick-Aktion mit derrechten Maustaste auf ein beliebiges Arbeitsblatt geklicktwird.Tritt nach Neuberechnung jedes Arbeitsblatts auf oder wennbeliebige geänderte Daten in einem Diagramm gezeichnetwerden.139


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>EREIGNISBESCHREIBUNGSheetChangeSheetDeactivateSheetFollowHyperlinkSheetPivotTableAfterValueChangeSheetPivotTableBeforeAllocateChangesSheetPivotTableBeforeCommitChangesSheetPivotTableBeforeDiscardChangesSheetPivotTableChangeSyncSheetPivotTableUpdateSheetSelectionChangeSyncTritt auf, wenn Zellen auf einem beliebigen Arbeitsblatt durchden Benutzer oder durch eine externe Verknüpfung geändertwerden.Tritt auf, wenn ein beliebiges Blatt deaktiviert wird.Tritt auf, wenn Sie in Microsoft Excel auf einen beliebigenHyperlink klicken. Weitere Informationen zu Ereignissen aufArbeitsmappenebene finden Sie im Hilfethema zumWorksheet.FollowHyperlink-Ereignis.Tritt nach der Bearbeitung oder Neuberechnung (bei Zellen,die Formeln enthalten) einer Zelle oder eines Zellbereichs ineiner PivotTable auf.Tritt auf, bevor Änderungen auf eine PivotTable angewendetwerden.Tritt auf, bevor für Änderungen an der OLAP-Datenquelle füreine PivotTable ein Commit ausgeführt wird.Tritt auf, bevor Änderungen an einer PivotTable verworfenwerden.Tritt nach Änderungen an einer PivotTable auf.Tritt auf, nachdem das Blatt des PivotTable-Berichtsaktualisiert wurde.Tritt auf, wenn sich die Markierung auf einem Arbeitsblattändert (tritt nicht auf, wenn sich die Markierung auf einemDiagrammblatt befindet).(veraltet)WindowActivateTritt auf, wenn ein Arbeitsmappen-Fenster aktiviert wird.WindowDeactivateTritt auf, wenn ein Arbeitsmappen-Fenster deaktiviert wird.WindowResizeTritt auf, wenn die Größe eines Arbeitsmappen-Fenstersangepasst wird.Tabelle: Ereignisse des Workbook-Objekts140


Übersicht über die wichtigsten Excel-ObjekteD.3 Das Worksheet-ObjektDie detaillierte Syntax nebst Beispielen findet man unter der Excel-Objektmodellreferenz in der Excel-Hilfe für Entwickler Worksheet-Object.D.3.1EigenschaftenDie wichtigsten Eigenschaften eines Worksheet-Objekts sind wie folgt:EIGENSCHAFTBESCHREIBUNGApplicationCellsColumnsWird der Objektkennzeichner nicht verwendet, gibt dieseEigenschaft ein Application-Objekt zurück, das die AnwendungExcel darstellt.Wird der Objektkennzeichner verwendet, wird ein Application-Objekt zurückgegeben, das den Ersteller des angegebenenObjekts darstellt. Dies kann z. B. beim Einsatz von OLE-Automatisierungsobjekten von Interesse sein.Gibt ein Range-Objekt zurück, das alle Zellen auf demArbeitsblatt darstellt (nicht nur die derzeit verwendeten Zellen).Gibt ein Range-Objekt zurück, das alle Spalten des aktivenArbeitsblatts darstellt.NameGibt den Namen der Tabelle zurück oder legt ihn fest.NamesGibt eine Names-Auflistung aller arbeitsblattspezifischenNamen (Namen mit dem Präfix "ArbeitsblattName!") zurück.ParentRangeRowsUsedRangeGibt das übergeordnete Objekt zurück (Workbook-Objekt).Gibt ein Range-Objekt zurück, das eine Zelle oder einenZellbereich darstellt (Zellenbereich innerhalb desTabellenblatts).Gibt ein Range-Objekt zurück, das alle Zeilen im aktivenArbeitsblatt darstellt.Gibt ein Range-Objekt zurück, das den verwendeten Bereichim aktiven Arbeitsblatt darstellt (benutzte Zellen).Tabelle: Eigenschaften des Worksheet-Objekts141


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>D.3.2MethodenDie wichtigsten Methoden eines Worksheet-Objekts sind wie folgt:METHODEBESCHREIBUNGActivateAktiviert ein einzelnes Arbeitsblatt.CalculateBerechnet alle geöffneten Arbeitsmappen, ein bestimmtesArbeitsblatt oder einen bestimmten Zellbereich neu.SelectMarkiert ein einzelnes Tabellenblatt.PrintOut<strong>Dr</strong>uckt das Tabellenblatt.DeleteLöscht das Tabellenblatt aus der ArbeitsmappeTabelle: Methoden des Worksheet-ObjektsD.3.3EreignisseDie Ereignisse des Worksheet-Objekts sind wie folgt:EREIGNISBESCHREIBUNGActivateBeforeDoubleClickBeforeRightClickCalculateChangeTritt auf, wenn eine Arbeitsmappe, ein Arbeitsblatt, einDiagrammblatt oder ein eingebettetes Diagramm aktiviertwird.Tritt auf, wenn vor der Standarddoppelklick-Aktion auf einArbeitsblatt doppelgeklickt wird.Tritt auf, wenn vor Ausführung des Standardrechtsklicksmit der rechten Maustaste auf ein Arbeitsblatt geklicktwird.Tritt für das Worksheet-Objekt auf, nachdem dasArbeitsblatt neu berechnet wurde.Tritt auf, wenn Zellen des Arbeitsblatts durch den Benutzeroder durch eine externe Verknüpfung geändert werden.142


Übersicht über die wichtigsten Excel-ObjekteEREIGNISBESCHREIBUNGDeactivateFollowHyperlinkPivotTableAfterValueChangePivotTableBeforeAllocateChangesPivotTableBeforeCommitChangesPivotTableBeforeDiscardChangesPivotTableChangeSyncPivotTableUpdateSelectionChangeTritt auf, wenn das Diagramm, das Arbeitsblatt oder dieArbeitsmappe deaktiviert wird.Tritt auf, wenn Sie auf einen beliebigen Hyperlink in einemArbeitsblatt klicken. Weitere Informationen zu Ereignissenauf Anwendungs- und Arbeitsmappenebene finden Sieunter dem SheetFollowHyperlink-Ereignis und demSheetFollowHyperlink Event-Ereignis.Tritt nach der Bearbeitung oder Neuberechnung (beiZellen, die Formeln enthalten) einer Zelle oder einesZellbereichs in einer PivotTable auf.Tritt auf, bevor Änderungen auf eine PivotTableangewendet werden.Tritt auf, bevor für Änderungen an der OLAP-Datenquellefür eine PivotTable ein Commit ausgeführt wird.Tritt auf, bevor Änderungen an einer PivotTable verworfenwerden.Tritt nach Änderungen an einer PivotTable auf.Tritt auf, nachdem ein PivotTable-Bericht für einArbeitsblatt aktualisiert wurde.Tritt auf, wenn sich die Markierung in einem Arbeitsblattändert.Tabelle: Ereignisse des Worksheet-Objekts143


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>D.4 Das Range-ObjektDie detaillierte Syntax nebst Beispielen findet man unter der Excel-Objektmodellreferenz in der Excel-Hilfe für Entwickler Range-Object.D.4.1EigenschaftenDie wichtigsten Eigenschaften eines Range-Objekts sind wie folgt:EIGENSCHAFTBESCHREIBUNGAddressApplicationCellsColumnGibt den Bezug eines Zellenbereichs zurück.Wird der Objektkennzeichner nicht verwendet, gibt dieseEigenschaft ein Application-Objekt zurück, das die AnwendungExcel darstellt. Wird der Objektkennzeichner verwendet, wird einApplication-Objekt zurückgegeben, das den Ersteller desangegebenen Objekts darstellt. Dies kann z. B. beim Einsatz vonOLE-Automatisierungsobjekten von Interesse sein.Gibt ein Range-Objekt zurück, relativ zum gewählten Range-Objekt.Gibt die erste Spalte am Anfang des angegebenen Bereichs alsZahl zurück.CountGibt die Anzahl an Zellen im Range-Objekt zurück.FontGibt ein Font-Objekt zurück, das die Schriftart des Range-Objektsdarstellt.FormulaGibt die Formel des Range-Objekts zurück oder legt sie fest.ParentGibt das übergeordnete Objekt zurück (Worksheet-Objekt).RowGibt die erste Zeile am Anfang des angegebenen Bereichszurück.Tabelle: Eigenschaften des Worksheet-Objekts144


Übersicht über die wichtigsten Excel-ObjekteD.4.2MethodenDie wichtigsten Methoden eines Range-Objekts sind wie folgt:METHODEBESCHREIBUNGActivateCalculateAktiviert eine einzelne Zelle, die sich innerhalb der aktuellenMarkierung befindet.Berechnet alle geöffneten Arbeitsmappen, ein bestimmtesArbeitsblatt oder einen bestimmten Zellbereich neu.SelectMarkiert eine Zelle oder einen Zellbereich.Tabelle: Methoden des Worksheet-ObjektsD.4.3EreignisseDas Range-Objekt enthält keine Ereignisse.145


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>LiteraturverzeichnisBillo, Joseph E. (2007): Excel for Scientists and Engineers: Numerical Methods, JohnWiley & Sons, New Jersey, ISBN 978-0-471-38734-3.Bloech, J.; Ihde, G.G. (1997): Vahlens Großes Logistiklexikon, Verlag Beck/Vahlen,München.Bourg, David M. (2006): Excel Scientific and Engineering Cookbook, O’Reilly Media,USA, ISBN 978-0-596-00879-6.Brambrink, Matthias (2009): Transportoptimierung und Tourenplanung unterVerwendung des Excel-Solvers, Diplomarbeit FB Wirtschaftsinformatik,Fachhochschule Dortmund.Brokamp, Oliver (2011): Heuristische Verfahren zur Tourenplanung mit Zeitfensternunter Verwendung der Tabellenkalkulation, Bachelor Thesis, FBWirtschaftsinformatik, Fachhochschule Dortmund.Can-Weber, Monika / Wendel, Tom (2010): Microsoft Excel 2010 Programmierung -Das Handbuch - Entwicklung und Automatisierung mit VBA und XML,ISBN: 978-3-86645-460-6Deininghaus, Julia; Holtkötter, Tobias; Paulsen, Björn (2012): Ein Crash Kurs inExcel VBA, Projektarbeit, Fachbereich Wirtschaftsinformatik, FachhochschuleDortmund.Dijkstra, Edsger W. (1959): A note on two problems in connexion with graphs,Numerische Mathematik, 1:269-271.Domschke, Wolfgang (1997): Logistik: Transport, R. Oldenbourg Verlag, München,Wien, 5. Auflage.Domschke, Wolfgang (1985): Logistik: Rundreisen und Touren, R. OldenbourgVerlag, München, Wien, 4. Auflage.Domschke, Wolfgang ; <strong>Dr</strong>exl, Andreas (1996): Logistik: Standorte, R. OldenbourgVerlag, München, Wien, 4. Auflage.146


Übersicht über die wichtigsten Excel-ObjekteDomschke, Wolfgang und <strong>Dr</strong>exl, Andreas (2006): Einführung in OperationsResearch, 7. Auflage, Springer-Verlag, Berlin Heidelberg; ISBN 978-3-540-70948-0.Domschke, W.; <strong>Dr</strong>exl, A.; Klein, R.; Scholl, A. und Voß, S. (2002): Übungen undFallbeispiele zum Operations Research, 4. Auflage, Springer-Verlag, BerlinHeidelberg; ISBN 3-540-43334-1.Feige, Dieter; Klaus, Peter (2008): Modellbasierte Entscheidungsunterstützung in derLogistik, Deutscher Verkehrs-Verlag, Hamburg.Gillett, B.E.; Miller, L.R. (1974): A Heuristic Algorithm for the Vehicle-DispatchProblem, Operations Research 22, S. 340-349.Gogolok, Johannes (1999): VBA – Programmierung mit Excel: Grundlagen,Fernuniversität Hagen, Reihe: Integrierte Systeme.Held, Bernd (2004): Excel-VBA Die praktische Referenz, Markt + Technik Verlag,München, ISBN 978-3-8272-6745-0.Held, Bernd (2010a): Excel-VBA Kompendium, Markt + Technik Verlag, München,ISBN 978-3-8272-4534-2.Held, Bernd (2010b): Excel-VBA in 14 Tagen, Markt + Technik Verlag, München,ISBN 978-3-8272-4535-9.Kämper, Sabine (2009): Grundkurs Programmieren mit Visual Basic,Vieweg + Teubner Verlag, Wiesbaden (3. Auflage), ISBN 978-3-8348-0690-1.Müller-Mehrbach, Heiner (1971): Operations Research, Verlag Franz Vahlen,München (2. Auflage).Nahrstedt, Harald (2011): Excel + VBA für Maschinenbauer, Vieweg + TeubnerVerlag, Wiesbaden (3. Auflage), ISBN 978-3-8348-1750-1.Nahrstedt, Harald (2012): Algorithmen für Ingenieure, Vieweg + Teubner Verlag,Wiesbaden (2. Auflage), ISBN 978-3-8348-1692-4.147


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>Powell, Stephen G. / Baker, Kenneth R. (2007): The Art of Modeling withSpreadsheets: Management Science, Spreadsheet Engineering, and ModelingCraft, John Wiley & Sons, ISBN 0-470-03840-3, 2nd Edition.Ragsdale, Cliff.T. (2006): Spreadsheet Modeling and Decision Analysis, 5th Edition,South-Western College Publishing, ISBN 0-324-31256-3.Weicker, Karsten (2007): Evolutionäre Algorithmen, Vieweg Verlag, Wiesbaden (2.Auflage), ISBN 978-3-8351-0219-4.Wille, Christoph (2009): Operations Research mit Excel und VBA, VDM Verlag,Saarbrücken.Williams, H. Paul (1999): Model Building in Mathematical Programming; John Wiley& Sons; Chichester (4th Ed.).Winkels, <strong>Heinz</strong>-<strong>Michael</strong> (2012): <strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong> mit Excel,Deutscher Verkehrs-Verlag, Hamburg, Edition Logistik Band 13;ISBN 978-3-87154-460-6.Winston, Wayne L.; Albright, S. Christian, (2006): Practical Management ScienceSpreadsheets Modeling and Applications, Duxberry Press, 3rd Edition.Die in dieser Arbeit verwendeten Landkarten sind unter Zuhilfenahme von „GoogleMaps“ entstanden.148


Übersicht über die wichtigsten Excel-ObjekteStichwortverzeichnisAAnspruchsniveau ........................................................ 43Arbeitsblatt ................................................................ 19BBarrieren .................................................................... 73Baumminimaler spannender Baum ............................... 488spannender Baum ............................................... 488Baustoffhandel ........................................................... 16Beschränkung ............................................................. 35Bewertungsmatrix ...................................................... 33Big-M ......................................................................... 48Binärbedingung .......................................................... 40binäre Optimierung .................................................... 42Blockabstand .............................................................. 72Bottleneck Transportmodell ..................................... 205Bottleneck Zuordnungsmodell .................................. 305Bound Bedingung ....................................................... 40Breitengrad ................................................................ 64Briefträgerproblem................................................... 588gerichter Graph ................................................... 593ungerichteter Graph ............................................ 593Briefträgertour ......................................................... 594CCALC/ OpenOffice ..................................................... 658Capacitated Chinese Postman Problem ..................... 587Capacitated Vehicle Routing Problem ....................... 514Capacitated Vehicle Routing Problem with TimeWindows ............................................................. 567Center1-Center im Netzwerk .......................................... 3811-Center-Problem der Ebene ............................... 426Center im Netzwerk ............................................. 381p-Center in Netzwerken ....................................... 396p-Center-Problem im Koordinatensystem ............ 432chemische Industrie ................................................... 16Christofides .............................................................. 488Covering Location Problem ....................................... 363CVRP ........................................................................ 514CVRPTW ................................................................... 568DDecision Support System ............................................ 12Dezimalgrad ............................................................... 64Dijkstra-Algorithmus .................................. 187, 189, 562direkte Entfernungsbestimmung ................................. 58disjunktive Variablen .................................................. 49Distanzmatrix ............................................................. 33<strong>Dr</strong>eiecksungleichung................................................... 72Durchfahrtprobleme ................................................. 445EEntfernungen ............................................................. 58Entscheidungsfindung .................................................. 1Entscheidungshilfe ....................................................... 1Entscheidungsvariable ................................................ 35EULER-Weg .............................................................. 490Evolutionsalgorithmus ................ 418, 419, 427, 434, 435Extremwertaufgabe .................................................... 37FFixkosten-Transportmodell ....................................... 225GGAMS......................................................................... 13ganzzahlige Optimierung ............................................ 42Ganzzahligkeitsbedingung .......................................... 40General Routing-Problem ......................................... 618Ges2Yyy ..................................................................... 21Ges4Xxx ..................................................................... 20Globalisierung .............................................................. 2Google Earth .............................................................. 65Google Maps .............................................................. 66Graph ......................................................................... 31bewerteter Graph.................................................. 31gemischter Graph .................................................. 31gerichteter Graph .................................................. 31HHeterogener Fuhrpark .............................................. 587IIndikator .................................................................... 47Innerbetriebliche Standortzuordnung ....................... 312Intervallvariablen ....................................................... 51KKante ......................................................................... 31kartesische Koordinatensysteme................................. 59Knoten ....................................................................... 31isolierter Knoten.................................................... 32kombinatorische Optimierung .................................... 42Kopfspalte .................................................................. 19Kopfzeile .................................................................... 19k-opt Verfahren2-opt ................................................................... 5053-opt ................................................................... 505k-opt ................................................................... 505Korrekturfaktoren ...................................................... 73Kostenmatrix .............................................................. 33Kreisverkehr ............................................................... 34Kugeloberfläche ......................................................... 64Kurier- Express- und Paketdienst............................... 134Kurswinkel ............................................................... 470kürzester Weg .......................................................... 172von einem Knoten zu allen anderen ..................... 180zwischen allen Knoten .................................. 187, 189zwischen zwei Knoten ................................... 173, 180149


<strong>Modellbasiertes</strong> <strong>Logistikmanagement</strong>LLagerkosten................................................................ 56Längengrad ................................................................ 64Latitude...................................................................... 64LE 56Lebensmittelindustrie ................................................. 15lineare Optimierung ................................................... 39logische Bedingungen ................................................. 46Logistikeinheiten ........................................................ 56Logistikkosten ............................................................ 56logistische Versorgungskette ........................................ 2Longitude ................................................................... 64Lösungsgenerator ....................................................... 12MMatching .................................................................. 489minimales Kosten Matching ................................. 489mathematische Optimierung ...................................... 35mathematisches Modell ............................................... 1Matrixbezeichnung ..................................................... 20Matrixminimum-Verfahren ....................................... 110maximaler Fluss ........................................................ 164Maximum ................................................................... 36Maximum-Benefit-Briefträgerproblem ...................... 618Maximum-Covering-Location-Problem ...................... 374m-Briefträgerproblem .............................................. 618Median1.Median in der Ebene......................................... 4031-Median im Netzwerk ........................................ 381p-Median im Netzwerk ........................................ 383p-Median-Problem im Koordinatensystem ........... 415MedianeMediane im Netzwerk ......................................... 381Mehrdepotproblem .................................................. 586Mehrperiodenproblem ............................................. 587Miller-Tucker-Zemlin ................................................ 444Mineralölindustrie ........................................................ 4Minimum ................................................................... 36MINV(A) ..................................................................... 29MKM ........................................................................ 489MMULT(A,B) .............................................................. 28Modellgenerator ........................................................ 12MODI-Verfahren ......................................................... 78Monitoring ................................................................. 17MS Excel 2003 .......................................................... 619MS Excel 2010 .......................................................... 637MSB ......................................................................... 489MTRANS(A) ................................................................ 22MTZ-Bedingung ........................................................ 444verallgemeinert ................................................... 517NNachfolger ................................................................. 32Nebenbedingung ........................................................ 35Netz ........................................................................... 31Netzflussmodell........................................................ 143Netzwerk ................................................................... 31nichtlineare Optimierung ............................................ 42Nicht-Negativitätsbedingung ...................................... 40Nordwestecken-Regel............................................... 109OOpen Office .............................................................. 658Optimierungskriterium ......................................... 35, 54Optimum.................................................................... 35PPetal-Algorithmen .................................................... 555Pfad ........................................................................... 32Pfeil ........................................................................... 31Polarwinkel .............................................................. 466Premium-Solver........................................................ 649MS-Excel 2003 ..................................................... 630Prim-Algorithmus ..................................................... 489QQuadratischer Abstand ............................................... 72Quelle ........................................................................ 32RReflexivität ................................................................. 72Reportgenerator......................................................... 12Repsol Butano ........................................................ 4, 18Restriktion ................................................................. 35Rural Postman Problem ............................................ 618SSatz des Pythagoras .................................................... 67Savings-Verfahren .................................................... 535Senke ......................................................................... 32Set-Covering-Location-Problem ................................ 363Single-Source-Transportmodell ................................. 218Small-L ....................................................................... 49SOL .............................................................................. 7Spaltenbezeichnung ................................................... 20Spaltenindex .............................................................. 19Spaltenminimum-Verfahren ..................................... 109sphärische Trigonometrie ........................................... 68Standard-SolverMS-Excel 2003 ..................................................... 625MS-Excel 2010 ..................................................... 643Standortoptimierung ................................................ 330Standortplanungdiskret ................................................................. 330kontinuierlich ...................................................... 330Steiner-Weber-Modell .............................................. 403Supply Chain ................................................................ 2Sweep-Verfahren ..................................................... 549Symmetrie ................................................................. 72TT_XxxYyy .................................................................... 20Tabelle ....................................................................... 19Tourenplanungkapazitätsbeschränkt ........................................... 514kapazitätsbeschränkt mit Zeitfenster ................... 567TourenplanungsproblemeHeuristiken.......................................................... 535Transportkosten ......................................................... 56150


Übersicht über die wichtigsten Excel-ObjekteTransportmodelleinstufig ................................................................ 76Heuristiken.......................................................... 107klassisches Transportmodell .................................. 76kombiniert 1- oder 2-stufig .................................. 134mehrstufig .......................................................... 143zweistufig ............................................................ 124Transportmodelle mit mehreren Gütern ................... 233Transportoptimierung ................................................ 54Travelling-Salesman-Problem.................................... 441Heuristiken.......................................................... 466Tripel-Algorithmus ............................................. 187, 188TSP........................................................................... 442geschlossen ......................................................... 445offen ................................................................... 445UUmschlagsmodell ..................................................... 124Unimodularität ........................................................... 45unproduktive Strecke ............................................... 589VVARIGNONscher Apparat .......................................... 406Vektor ........................................................................ 19Spaltenvektor ........................................................ 19Zeilenvektor .......................................................... 19Vektoroptimierung ..................................................... 43verbundene Variablen ................................................ 50Verfahren der sukzessiven Einbeziehung ................... 480Verfahren des besten Nachfolgers ............................ 477Verfahren von Christofides ....................................... 488VOGELsches Approximationsverfahren ..................... 111Vorgänger .................................................................. 32WWarehouse Location Problemeinstufig kapazitiert ............................................. 333mehrstufig kapazitiert ......................................... 355zweistufig kapazitiert ........................................... 340Warehouse-Location-Probleme ................................ 333Weg ........................................................................... 32Windy Postman Problem .......................................... 618Wirkkoeffizienten ..................................................... 198WLP ......................................................................... 333ZZeilenbezeichnung...................................................... 20Zeilenindex................................................................. 19Zeilenminimum-Verfahren ........................................ 110Zielfunktion ................................................................ 35zulässiger Bereich ....................................................... 37Zuordnungsmodellklassisch .............................................................. 278quadratisch ......................................................... 312symmetrisch........................................................ 296verallgemeinert ................................................... 288Zuordnungsoptimierung ........................................... 278ZuordnungsproblemHeuristiken.......................................................... 324151

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!