VBA Crashkurs - fhdo

Transcrição

VBA Crashkurs - fhdo
Logistikmanagement
mit Heuristiken
Logistische Problemstellungen
unter Verwendung von Excel VBA lösen
Prof. Dr. Heinz-Michael Winkels
WS 2013/14
Modellbasiertes Logistikmanagement
Inhaltsverzeichnis
Inhaltsverzeichnis ........................................................................................................II
A Crash-Kurs in Excel VBA.........................................................................................6
A.1 Die Entwicklungsumgebung von Excel VBA ....................................................7
A.1.1 Aktivierung der Entwicklertools ..............................................................7
A.1.2 Aufruf der Entwicklungsumgebung ........................................................7
A.1.3 Der Projekt-Explorer ..............................................................................8
A.1.4 Das Eigenschaftenfenster....................................................................11
A.1.5 Das Code-Fenster ...............................................................................12
A.1.6 Der Objektkatalog ................................................................................14
A.1.7 Testumgebung: Das Direktfenster .......................................................17
A.1.8 Testumgebung: Das Überwachungsfenster.........................................18
A.1.9 Testumgebung: Das Lokal-Fenster......................................................19
A.1.10
Die Excel-Hilfe innerhalb der Entwicklungsumgebung ............20
A.1.11
Einstellen der Entwicklungsumgebung....................................22
A.2 Die Eingabe von Programm-Code .................................................................24
A.2.1 Erfassen von Makros mit dem Makro-Rekorder ..................................24
A.2.2 Bearbeiten oder Ausführen eines vorhandenen Makros über die
Menüstruktur........................................................................................26
A.2.3 Der Start von Makros mit Graphiken und Steuerelementen ................27
A.2.3.1 Ausführen eines Makros durch Anklicken eines Grafikobjektes27
A.2.3.2 Ausführen eines Makros durch Anklicken eines
Steuerelementes .....................................................................28
A.2.4 Programmierung mithilfe des Code-Fensters ......................................29
A.2.4.1 IntelliSense .............................................................................29
A.2.4.2 Hilfestellungen über die Bearbeiten Symbolleiste ...................30
A.2.4.3 Direkter und indirekter Aufruf des Code-Fensters ...................32
A.2.4.4 Anlegen eines neuen Modules ................................................32
A.2.4.5 Aufruf eines vorhandenen Modules.........................................32
A.2.4.6 Anlegen einer neuen Prozedur ...............................................33
A.2.5 Debugging/Fehlersuche.......................................................................34
A.2.5.1 Zeilenweise Abarbeitung einer Prozedur ................................34
A.2.5.2 Verwendung von Haltepunkten in einer Prozedur ...................35
A.2.5.3 Verwendung von Überwachungsausdrücken in einer Prozedur35
A.2.6 Standarddialoge...................................................................................35
A.2.6.1 Die Funktion MsgBox ..............................................................36
A.2.6.2 Die Funktion InputBox .............................................................37
A.2.6.3 Die Methode InputBox.............................................................38
A.2.7 Erstellen einer User-Form....................................................................39
A.2.7.1 Benutzerformular erstellen ......................................................39
A.2.7.2 Steuerelemente einfügen ........................................................40
A.2.7.3 Steuerelementeigenschaften festlegen ...................................41
A.2.7.4 Steuerelement-Eigenschaften initialisieren .............................43
A.2.7.5 Steuerelement- und Dialogfeldereignisse erstellen .................43
A.2.7.6 UserForm anzeigen.................................................................44
A.2.7.7 Steuerelemente während der Code-Ausführung verwenden ..44
A.2.7.8 Besonderheiten beim Dialogende ...........................................45
A.2.8 Internet Links für Hilfestellungen zur VBA Programmierung ................46
A.3 Die Syntax von VBA.......................................................................................47
A.3.1 Kommentare und Schreibkonventionen ...............................................47
II
Inhaltsverzeichnis
A.3.2 Standardkonventionen für die Namensgebung....................................47
A.3.3 Prozeduren ..........................................................................................48
A.3.3.1 Sub-Prozeduren ......................................................................48
A.3.3.2 Function-Prozeduren...............................................................50
A.3.3.3 Property-Prozeduren ...............................................................50
A.3.4 Konstante, Variable und Datenfeldern .................................................51
A.3.4.1 Standard-Datentypen ..............................................................51
A.3.4.2 Benutzerdefinierte Datentypen................................................52
A.1.1 Aufzähl-Typen .........................................................................53
A.3.4.3 Deklarieren von Konstanten ....................................................53
A.3.4.4 Deklarieren von Variablen .......................................................55
A.3.4.5 Deklarieren von Variablen innerhalb einer Prozedur...............56
A.3.4.6 Deklarieren von Datenfeldern innerhalb einer Prozedur .........57
A.3.5 Operatoren ..........................................................................................59
A.3.5.1 Arithmetische Operatoren zum Durchführen mathematischer
Berechnungen.........................................................................59
A.3.5.2 Vergleichsoperatoren zum Durchführen von Vergleichen .......59
A.3.5.3 Verkettungsoperatoren zum Aneinanderhängen von
Zeichenfolgen .........................................................................59
A.3.5.4 Logische Operatoren zum Durchführen logischer Operationen59
A.3.6 Kontrollstrukturen.................................................................................60
A.3.6.1 IF-Verzweigung .......................................................................60
A.3.6.2 IIF-Verzweigung ......................................................................60
A.3.6.3 For-Next-Schleife ....................................................................61
A.3.6.4 For-Each-Next-Schleife ...........................................................61
A.3.6.5 Do-Until-Loop-Schleife ............................................................62
A.3.6.6 Do-While-Loop-Schleife ..........................................................62
A.3.6.7 Select Case-Anweisung ..........................................................62
A.4 Verwendung der verschiedenen Funktions-Arten in Excel-VBA ....................64
A.4.1 Die verschiedenen Funktions-Arten in Excel-VBA ...............................64
A.4.2 Benutzerdefinierte VBA-Funktionen.....................................................64
A.4.2.1 Verwendung in VBA-Prozeduren ............................................64
A.4.2.2 Verwendung in Arbeitsblättern ................................................65
A.4.3 Vorinstallierte VBA-Funktionen ............................................................66
A.4.3.1 Verwendung in VBA-Prozeduren ............................................66
A.4.3.2 Verwendung in Arbeitsblättern ................................................66
A.4.4 Excel-Funktionen .................................................................................67
A.4.4.1 Besonderheiten von Excel-Funktionen....................................67
A.4.4.2 Verwendung in VBA-Prozeduren ............................................68
A.4.4.3 VBA-Befehle für die Zellenbelegung in Arbeitsblättern ...........69
A.5 Verwendung von Objekten in Excel-VBA .......................................................71
A.5.1 Begriffsklärung .....................................................................................72
A.5.2 Schreibweisen .....................................................................................73
A.5.3 Objektlisten ..........................................................................................74
A.5.4 Objektvariablen ....................................................................................74
A.5.5 Das Excel Objektmodell.......................................................................75
A.5.5.1 Das Application-Objekt............................................................76
A.5.5.2 Das Workbook-Objekt .............................................................76
A.5.5.3 Das Worksheet-Objekt ............................................................77
A.5.5.4 Das Range-Objekt...................................................................77
A.5.6 Spezielle Verwendungen des Excel Objektmodells .............................78
III
Modellbasiertes Logistikmanagement
A.5.6.1 Positionierung in Range-Objekten ..........................................78
A.5.6.2 Positionierung mit der Cells-Eigenschaft.................................79
A.5.6.3 Cursorposition feststellen ........................................................79
A.5.6.4 Zellen, Zellbereiche, Zeilen, Spalten gezielt auswählen..........80
A.5.6.5 Relatives Versetzen von Bereichen und Cursor......................80
A.5.6.6 Bereichsnamen vergeben mit Name-Eigenschaft ...................81
A.5.6.7 Wertzuweisungen mit Value-Eigenschaft ................................82
A.5.6.8 Formeln eintragen mit der Formula-Eigenschaft .....................82
A.5.6.9 Formatierung von Zellbereichen .............................................82
A.5.6.10 Löschen von Zellbereichen .................................................83
A.5.7 Erstellung eigener Klassen ..................................................................83
A.5.7.1 Definition einer Klasse ............................................................83
A.5.7.2 Eigenschaften .........................................................................83
A.5.7.3 Methoden ................................................................................85
A.5.7.4 Spezielle Ereignisprozeduren: Konstruktor und Destruktor .....85
A.5.8 Erzeugung neuer Objekte ....................................................................86
A.5.9 Entfernen von Objekten .......................................................................87
A.5.10
Erstellung von Ereignisprozeduren .........................................87
A.5.10.1 Allgemeine Ereignisprozeduren ..........................................87
A.5.10.2 Eigene Ereignisprozeduren .................................................88
A.5.10.3 Objekt mit WithEvents erstellen ..........................................88
A.5.10.4 Deklaration einer Objektvariablen vom Typ Application ......89
A.5.10.5 Eingabe des Programmcodes für die Ereignisprozedur ......90
A.5.10.6 Ausführen der Ereignisprozedur..........................................90
B Übersicht über die vorinstallierten VBA-Funktionen ..............................................91
B.1 Datums- und Zeitfunktionen ...........................................................................91
B.2 Textfunktionen ...............................................................................................92
B.3 Dateifunktionen und Anweisungen ................................................................95
B.4 Mathematische Funktionen ............................................................................97
C Übersicht über die Excel-Funktionen................................................................... 100
C.1 Finanzmathematische Funktionen ............................................................... 100
C.2 Logische Funktionen .................................................................................... 104
C.3 Textfunktionen ............................................................................................. 104
C.4 Datums- und Uhrzeitfunktionen ................................................................... 106
C.5 Nachschlage- und Verweisfunktionen .......................................................... 108
C.6 Mathematische und trigonometrische Funktionen ....................................... 110
C.7 Statistische Funktionen ................................................................................ 114
C.8 Konstruktionsfunktionen............................................................................... 122
C.9 Cubefunktionen............................................................................................ 124
C.10Informationsfunktionen................................................................................. 126
C.11Datenbankfunktionen ................................................................................... 127
C.12Kompatibilitätsfunktionen ............................................................................. 128
C.13Add-ins und Automatisierung ....................................................................... 131
D Übersicht über die wichtigsten Excel-Objekte ..................................................... 132
D.1 Das Application-Objekt ................................................................................ 132
D.1.1 Eigenschaften .................................................................................... 132
D.1.2 Methoden........................................................................................... 133
D.1.3 Ereignisse .......................................................................................... 133
D.2 Das Workbook-Objekt .................................................................................. 137
D.2.1 Eigenschaften .................................................................................... 137
D.2.2 Methoden........................................................................................... 137
IV
Inhaltsverzeichnis
D.2.3 Ereignisse .......................................................................................... 138
D.3 Das Worksheet-Objekt ................................................................................. 141
D.3.1 Eigenschaften .................................................................................... 141
D.3.2 Methoden........................................................................................... 142
D.3.3 Ereignisse .......................................................................................... 142
D.4 Das Range-Objekt ....................................................................................... 144
D.4.1 Eigenschaften .................................................................................... 144
D.4.2 Methoden........................................................................................... 145
D.4.3 Ereignisse .......................................................................................... 145
Literaturverzeichnis.................................................................................................. 146
Stichwortverzeichnis ................................................................................................ 149
V
Modellbasiertes Logistikmanagement
A Crash-Kurs in Excel VBA
In diesem Abschnitt geben wir einen Überblick über die Programmiersprache Visual
Basic for Applications (VBA) von Microsoft, ausgerichtet auf Excel, wobei wir
Kenntnisse in einer gängigen Programmiersprache voraussetzen. Das hat den
Vorteil, dass damit die Erklärung grundlegendender Begriffe nicht logisch
aufeinander aufbauend erklärt werden muss. Der nachfolgende Text ist als Steilkurs
für Programmierer mit Vorkenntnissen gedacht, die sich möglichst schnell in eine für
sie neue Programmiersprache und deren Entwicklungsumgebung einarbeiten wollen,
ohne sich lange mit zwar pädagogischen aber für ihre momentane Problemstellung
irrelevanten Beispielen zu beschäftigen.12
VBA ist eine leistungsfähige Skriptsprache und die am weitesten verbreitete
Möglichkeit,
auf
Microsoft-Office-Anwendungen
(Excel,
Word,
Access
etc.)
basierende Programme zu erstellen. VBA ist auf prozedurale Programmierung
ausgerichtet. Zwar gibt es auch in diesem Zusammenhang Klassen und Objekte mit
Merkmalen wie Datenkapselung, nicht jedoch die Implementierungsvererbung
objektorientierter Sprachen.
In diesem kurzen Schnelleinstieg können natürlich nur die wichtigsten Aspekte von
VBA behandelt werden. Wir empfehlen dem Nutzer, die nicht erwähnten Icons und
Menüs auf dem Bildschirm selbständig aus zu probieren, um auf diese Weise deren
Funktionalität spielerisch zu erfassen. Sie lassen sich in der Regel intuitiv verstehen.
Diese
Vorgehensweise
empfiehlt
sich
übrigens
für
jede
neue
Programmierumgebung.
Als Hilfsmittel greifen wir vornehmlich auf die von Microsoft bereits in Excel
integrierte und somit direkt verfügbare Hilfe-Funktion zurück. Im Bedarfsfall können
1
Umfassende und sehr ausführliche Einführungen in Excel-VBA findet man beispielsweise in den
Büchern von Held (2004, 2010a, 2010b). Eine kompakte Einführung bietet Nahrstedt (2011). Für
einen 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 auf
http://office.microsoft.com/de-de/ecel-help/
http://www.excel-functions.info
http://de.excelfunctions.eu/
6
Crash-Kurs in Excel VBA
hier Antworten zu den meisten Fragen der Themenstellung gefunden werden.
Weitere Hilfestellungen kann man dann über das Internet erlangen, diesbezügliche
Links werden angegeben.
Am Ende eines Abschnittes wird in der Regel ein zugehöriges Suchkriterium für die
Hilfe-Funktion angegeben und durch
markiert. Damit kann man dann
weiterführende Informationen zu den jeweiligen Themen finden. Eine weitere
Möglichkeit besteht darin, mit der Maus auf ein entsprechendes Icon des Bildschirms
zu zeigen und die F1-Hilfe-Taste zu drücken.
A.1
A.1.1
Die Entwicklungsumgebung von Excel VBA
Aktivierung der Entwicklertools
Die Registerkarte Entwicklertools wird in Excel 2010 nicht standardmäßig
angezeigt. Sie kann wie folgt aktiviert werden:
Registerkarte Datei  Optionen  Menüband anpassen  Hauptregisterkarten
 Kontrollkästchen Entwicklertools aktivieren  OK.
Abbildung: Aktivierung der Entwicklertools
A.1.2
Aufruf der Entwicklungsumgebung
7
Modellbasiertes Logistikmanagement
Innerhalb der Entwicklungsumgebung kann für eine Anwendung der Programm-Code
geschrieben 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öglichkeiten
aufgerufen werden:
•
Tastenkombination ALT + F11 (die schnellste Möglichkeit).
•
Innerhalb der Registerkarte Entwicklertools durch Anklicken des Visual
Basic Symbols oder alternativ des Menüpunktes Code Anzeigen.
•
Anklicken eines beliebigen Tabellenreiters (unten auf dem Blatt) und innerhalb
des Drop-down-Menüs Code Anzeigen wählen.
Abbildung: Aufrufen der Benutzeroberfläche
Makros: Erstellen oder Löschen eines Makros
Die Menüstruktur wirkt auf den ersten Blick recht komplex. Es können diverse
Fenster über den Menüpunkt Ansicht angezeigt werden, die sich bei näherer
Betrachtung hinsichtlich ihrer Funktionalität sehr praktisch ergänzen. Neben den
Standards wie Projekt-Explorer und Eigenschaftenfenster sind da auch noch die
Fenster
Überwachungsfenster,
Direktfenster,
Lokal-Fenster
sowie
der
Objektkatalog.
A.1.3
Der Projekt-Explorer
Unter einem Projekt versteht man eine Zusammenfassung unterschiedlicher
Programmtexte für eine bestimmte Anwendung (im Beispiel: eine Tourenplanung).
8
Crash-Kurs in Excel VBA
Man spricht auch von einem Container für die unterschiedlichen Arten von
Programm-Code und nennt die Arten allgemein Module. Dazu gehören 1:
•
Programm-Code
hinsichtlich
der
geöffneten
Excel-Objekte:
der
Arbeitsmappen (mit der Standard-Bezeichnung: DieseArbeitsmappe) und
deren Arbeitsblätter (mit den Standard-Bezeichnungen Tabelle1, etc.),
•
Programm-Code für Formulare (oder: UserForms, kurz: Forms) genannte
Benutzeroberflächen mit den Standard-Bezeichnungen UserForm1, etc. Hier
handelt es sich um Container für Bildschirmmasken, Steuerelemente und
zugehörigen Anweisungen in Form von Prozeduren.
•
Allgemeiner,
nicht
objekt-spezifischer
Programm-Code
in
Form
von
Prozeduren, der in unterschiedlichen Sinneinheiten (für die Programmstruktur
und 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 Methoden
und Eigenschaften.
Jedes Projekt besitzt einen Namen. Wird der gleiche Projektname (im Beispiel
VBAProjekt) in unterschiedlichen Dateien benutzt, so erscheint in Klammern dahinter
auch der Dateiname.
1
Oftmals wird sprachlich nicht zwischen Modulen und Standardmodulen unterschieden, was häufig
zur Verwirrung beiträgt.
2
Standardmodule wurden von Microsoft bis 2007 als Code-Module bezeichnet.
9
Modellbasiertes Logistikmanagement
Abbildung: Projekt-Explorer
Der Projekt-Explorer dient nur zur Verwaltung der Projekte, nicht zu deren inhaltlicher
Erstellung. Er zeigt eine hierarchische Liste aller Projekte der momentan geöffneten
Arbeitsmappen an, sowie die über den Excel-Manager eingebundenen Add-Ins
(installierte Dateien mit der Endung .xla bzw. .xlam, in der Abbildung beispielsweise
der Solver). Diese lassen sich jedoch nur dann im Detail anzeigen, wenn sie nicht
Passwort-geschützt sind.
10
Crash-Kurs in Excel VBA
Darüber hinaus wird auch noch das Projekt Personal.xlsb angezeigt1, in der als
persönliche Library solche Programm-Codes gespeichert werden können, die dann
auch 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
der
Entwicklungsumgebung.
Bei einem neuen Projekt wird immer VBAProjekt als Vorgabe-Namen für das aktuelle
Projekt aufgeführt. Für ein solches neues Projekt sind nur die Microsoft Excel
Objekte standardmäßig vorhanden und angezeigt. Formulare, Standardmodule oder
Klassenmodule müssen dann erst noch angelegt werden.
Mit Rechtsklick auf VBAProjekt  Eigenschaften von VBAProjekt kann man den
Namen ändern und die detaillierte Anzeige des Projektes per Passwort sperren.
Projekt-Explorer
A.1.4
Das Eigenschaftenfenster
Im Eigenschaftenfenster werden alle Eigenschaften und Einstellungen des im
Projekt-Explorer
ausgewählten
Moduls
zur
Entwurfszeit
angezeigt.
Die
voreingestellten Werte können hier verändert werden, ohne dass dafür aufwändige
Programmierarbeit zu leisten ist. (Beispiele: Ein- und Ausblenden von Tabellen,
Festlegen von Eingabebereichen, für die Programmierung genutzte interne
Namensgebungen für alle angesprochenen Module, usw.).
Für das Öffnen des Eigenschaftenfensters gibt es folgende Möglichkeiten:
1
•
Taste F4 drücken,
•
Registerkarte Ansicht  Eigenschaftenfenster wählen,
Personal.xlsb wird seit Excel 2007 für die persönliche Makrosammlung benutzt, vorher war das die
Datei personl.xls
11
Modellbasiertes Logistikmanagement
•
Anklicken
des
Icons
Eigenschaftenfenster
in
der
Symbolleiste
der
Entwicklungsumgebung.
Abbildung: Eigenschaftenfenster bezogen auf das Excel Objekt DieseArbeitsmappe
Eigenschaftenfenster
In der Hilfe befindet sich ebenfalls eine Übersicht mit nützlichen Shortcuts für das
Editieren der Eigenschaften.
Shortcuts für das Eigenschaftenfenster
Um die Definition/Bedeutung der einzelnen Eigenschaften zu erhalten, markiere man
den Namen durch Anklicken bis er blau hinterlegt ist und drücke dann auf die F1Taste.
A.1.5
Das Code-Fenster
Das Code-Fenster ist der eigentliche Visual-Basic-Editor. Es dient zum Erstellen,
Anzeigen und Bearbeiten von Visual-Basic-Code.
12
Crash-Kurs in Excel VBA
Für das Öffnen eines Code-Fensters gibt es folgende Möglichkeiten:
•
Doppelklick im Projektfenster auf ein Excel-Objekt, Standardmodul oder
Klassenmodul.
Beim Doppelklick auf ein Formular öffnet sich zunächst ein graphischer Editor,
der sogenannte Formular-Designer zum Entwurf von Dialog-Formularen und
Platzieren
von
Steuerelementen,
beim
weiteren
Doppelklick
auf
ein
Steuerelement oder eine Formularfläche dann das Code-Fenster für die
Eingabe zugehöriger Prozeduren.
•
Markieren eines Moduls im Projektfenster und Anklicken der Schaltfläche
Code anzeigen in der Kopfzeile des Projektfensters.
•
Markieren eines Moduls im Projektfenster und im Menü Ansicht auf Code
klicken oder F7 drücken.
Abbildung: Code-Fenster
Im oberen Teil sind zwei Auswahlfelder zu sehen. Im Feld Objekt (1) können alle
verfügbaren Objekte ausgewählt werden. Abhängig von der Auswahl ändern sich
dann auch die Einträge im Feld Prozedur (2). Es werden nur die für das Feld Objekt
möglichen Ereignisse angezeigt.
In der Kennzeichenleiste im Fenster unten links kann gewählt werden, ob die
Prozeduren eines Modules einzeln oder gesamt angezeigt werden.
Code-Fenster
13
Modellbasiertes Logistikmanagement
A.1.6
Der Objektkatalog
Der Objektkatalog wird über den Menüpunkt Anzeige oder die F2-Taste angezeigt.
Er stellt alle relevanten Objekte übersichtlich dar, nicht nur die Objekte aus den
vordefinierten Excel-Bibliotheken, sondern auch die eventuell manuell erstellten
Objekte aus allen zugänglichen Projekten.
Abbildung: Objektkatalog
Das Feld Projekt/Bibliothek zeigt alle Bibliotheken an, auf die das aktive Projekt
verweist. Es können Bibliotheken hinzugefügt oder über die Auswahl Alle
Bibliotheken angezeigt werden.
Im Feld Suchtext darunter kann Freitext eingeben werden, wobei auch
Platzhalterzeichen verwendet werden können. Die letzten vier Einträge werden
gespeichert und können ausgewählt werden.
In dem Teilfenster Klassen werden alle verfügbaren Klassen der ausgewählten
Bibliothek aufgelistet. Die Klasse wird in Fettschrift dargestellt, wenn für diese Code
14
Crash-Kurs in Excel VBA
vorhanden ist. Standardelement einer Klasse sind durch ein * markiert und werden
automatisch verwendet, wenn kein anderes Element festgelegt wurde.
Das Teilfenster Elemente von zeigt alle Elemente der ausgewählten Klasse, wobei
Methoden, Eigenschaften, Ereignisse oder Konstante, für die Code vorhanden ist, in
Fettschrift dargestellt werden.
Das Teilfenster Details zeigt detaillierte Informationen des ausgewählten Elements
oder der übergeordneten Klasse an. Der hier angezeigte Text kann kopiert werden.
In diesem Drop-down-Feld lassen sich die Bibliotheken, in denen gesucht werden
soll, wiederum eingrenzen.
Dabei kann zwischen folgenden Bereichen gewählt werden:
BIBLIOTHEK
BESCHREIBUNG
Alle Bibliotheken
Alle Elemente aus allen Klassen werden angezeigt.
Excel
Nur Elemente, die in Excel zur Verfügung stehen.
MSForms
Element, die für die Erstellung von Microsoft Formularen
benutzt werden können.
Office
Alle Elemente, die im gesamten Office-Paket genutzt
werden können.
stdole
Die für das Microsoft Objektsystem OLE zur Verfügung
stehenden Elemente.
VBA
Alle Elemente, die nur im VBA Editor zur Verfügung
stehen.
VBAProject
Zeigt alle Elemente an, die im aktuellen Projekt benutzt
werden.
Tabelle: Bibliotheken des Objektkataloges
Nachdem der Suchbegriff in das zweite Drop-down-Feld eingeben wurde, erscheinen
alle gefundenen Ergebnisse im Bereich Suchergebnisse. Dabei werden die
15
Modellbasiertes Logistikmanagement
gefundenen Elemente angezeigt, welchen Klassen diese zugeordnet sind und in
welcher Bibliothek sie sich befinden. Das untere Anzeigefeld zeigt die Eigenschaften
des jeweiligen Elementes. Beispielhaft ist in der nachfolgenden Abbildung der
Suchbegriff sqrt zu sehen. Anschließend wurde das Element SqrtPi ausgewählt, um
die Eigenschaften des Elementes zu veranschaulichen.
An dieser Stelle kann durch einfaches Markieren eines Elementes die Excel-Hilfe zu
diesem aufgerufen werden. Dazu muss entweder die F1-Taste, der Button
Objektkatalog oder das Excel-Hilfe Icon
im Kontextmenü gewählt werden. Die
Elemente lassen sich per Copy & Paste in das gewünschte Projekt kopieren.
Abbildung: Suchanfrage im Objektkatalog
16
im
Crash-Kurs in Excel VBA
Wird ein Rechtsklick innerhalb des Objektkataloges ausgeführt, so öffnet sich das
bekannte Kontextmenü. Dieses enthält zwei nützliche Funktionen. Zum einen lässt
der Punkt Verborgene Elemente anzeigen auch versteckte Elemente sichtbar
werden und zum anderen können mit dem Unterpunkt Verweise zusätzliche
Bibliotheken in den Objektkatalog eingebunden werden. Durch einfaches Anhaken
des jeweiligen Verweises wird die Verknüpfung zum Objektkatalog hergestellt und ist
durch anschließende Bestätigung des Fensters verfügbar. Die zur Verfügung
stehenden Bibliotheken hängen von der Software ab, die auf dem Rechner installiert
ist.
Die folgende Abbildung zeigt ein Dialogfenster zur Aktivierung weiterer Bibliotheken.
Abbildung: Verweise im Objektkatalog
Objektkatalog
A.1.7
Testumgebung: Das Direktfenster
Zum Austesten von Programmen und zur Fehlersuche lässt sich das Direktfenster
verwenden. Es wird über die Registerkarte Ansicht  Direktfenster oder alternativ
durch die Tastenkombination STRG + G geöffnet.
17
Modellbasiertes Logistikmanagement
Im Direktfenster kann temporärer Code eingegeben werden, der nach Betätigung der
Eingabetaste ausgeführt wird. Der (ausgetestete) eingegebene Code kann aus dem
Direktfenster kopiert und in das Code-Fenster eingefügt werden. Das Speichern des
Codes im Direktfenster ist nicht möglich.
Abbildung: Direktfenster
Direktfenster
A.1.8
Testumgebung: Das Überwachungsfenster
Das Überwachungsfenster dient ebenfalls für Testzwecke. Es erscheint automatisch,
sobald im Code spezielle Überwachungsausdrücke deklariert wurden.
Abbildung: Überwachungsfenster
18
Crash-Kurs in Excel VBA
Der Überwachungsausdruck wird in der Spalte Ausdruck angezeigt. In der Spalte
Wert wird der Wert des Ausdrucks beim Übergang in den Haltemodus angezeigt.
Dieser Wert kann bearbeitet werden. Bei unzulässigen Werten bleibt das
Bearbeitungsfeld aktiv, der Wert wird markiert und eine Meldung mit der
Fehlerbeschreibung erscheint. Durch Betätigen der ESC-Taste können Änderungen
zurückgenommen werden.
Aktuelle Werte, die nicht im Gültigkeitsbereich liegen, werden beim Wechsel in den
Haltemodus nicht angezeigt.
Überwachungsfenster
A.1.9
Testumgebung: Das Lokal-Fenster
Das Lokal-Fenster komplettiert die Instrumente der Testumgebung. Es zeigt alle
festgelegten Variablen in der gegenwärtigen Prozedur mit zugehörigem Wert an.
Nach einem Wechsel zwischen Laufzeit- und Haltemodus oder der Auswahl eines
anderen Eintrages in der Aufrufliste wird das Lokal-Fenster aktualisiert.
Abbildung: Lokal-Fenster
Die Namen der Variablen werden in der Spalte Ausdruck aufgelistet und können
nicht verändert werden. Um alle Variablen des aktuellen Moduls auf Modulebene
anzuzeigen, kann die erste Variable in der Liste, eine spezielle Modulvariable,
erweitert werden. Variablen werden in den verschiedenen Modulen differenziert
dargestellt. Die Systemvariable <Me> ist bei einem Klassenmodul definiert, während
bei Standardmodulen der <Name des aktuellen Moduls> die erste Variable darstellt
19
Modellbasiertes Logistikmanagement
Über das Lokal-Fenster sind globale Variablen und Variablen in anderen Projekten
nicht verfügbar.
Der Eintrag in der Spalte Wert kann bearbeitet werden. Bei unzulässigen Werten
bleibt das Bearbeitungsfeld aktiv, der Wert wird markiert und eine Meldung mit der
Fehlerbeschreibung erscheint. Durch Betätigen der ESC-Taste können Änderungen
zurückgenommen werden. Dabei muss für alle numerischen Variablen ein gültiger
Wert angegeben werden, während bei Zeichenfolgevariablen keine Eingabe
vorhanden sein muss. Es besteht die Möglichkeit, Variablen mit untergeordneten
Variablen ein- oder auszublenden, wobei ausgeblendete Variablen keinen Wert
anzeigen. Der Variablentyp wird im Element Typ angezeigt und kann nicht bearbeitet
werden.
Lokal-Fenster
A.1.10 Die Excel-Hilfe innerhalb der Entwicklungsumgebung
Die Excel-Hilfe bietet dem Entwickler zahlreiche Möglichkeiten, Fragen zur Visual
Basic Thematik nachzuschlagen.
Für den Aufruf der Excel-Hilfe innerhalb der VBA-Entwicklungsumgebung gibt es
folgende Möglichkeiten:
•
Über die Menüleiste durch Aufruf des Icons
•
Anklicken des Punktes
•
Drücken der F1-Taste.
.
.
Abbildung: Aufruf der Excel-Hilfe in der Menüleiste
Die nachfolgende Abbildung zeigt die Excel-Hilfe nach dessen Aufruf. Das gesamte
Inhaltsverzeichnis der Hilfe wird durch das Symbol
20
(1) angezeigt und an der
Crash-Kurs in Excel VBA
gleichen Stelle auch wieder ausgeblendet. Für die Suchanfragen wird das
Eingabefeld (2) genutzt. Darüber hinaus besteht die Möglichkeit, über den Dropdown-Button
(3) den Suchbereich einzuschränken oder zu erweitern.
Abbildung: Die Excel-Hilfe
Die nächste Abbildung zeigt die Einschränkung der Suche. Die Inhalte des
Suchbereichs sind in zwei Kategorien aufgeteilt. Der obere Bereich Inhalte von
Office.com (1) stellt die sogenannte Online-Suche dar. In diesem Abschnitt werden
alle Suchanfragen mit der Online-Hilfe von Microsoft bearbeitet. Dazu wird eine
aufgebaute Internetverbindung benötigt.
Der Bereich Inhalte von diesem Computer (2) bewirkt, dass nur die lokalen Inhalte
der
Excel-Hilfe
durchsucht
werden.
Diese
wird
automatisch
bei
der
Standardinstallation von Microsoft Excel 2010 auf dem Computer installiert und reicht
für die meisten Suchanfragen aus.
21
Modellbasiertes Logistikmanagement
Abbildung: Einschränkung der Suche
A.1.11 Einstellen der Entwicklungsumgebung
Die Entwicklungsumgebung von Excel VBA kann individuell eingestellt werden über
die Befehlsfolge: Registerkarte Entwicklertools  Extras  Optionen.
Abbildung: Einstellungen der Entwicklungsumgebung: Editor
Unter den Editor-Einstellungen sollte Variablendeklaration erforderlich aktiviert
sein. Damit ist es dann im Sinne einer sauberen Programmentwicklung erforderlich,
alle verwendeten Variablen vor deren Nutzung zu deklarieren. Auf diese Weise wird
in allen neuen Modulen die Anweisung Option Explicit an erster Stelle den
22
Crash-Kurs in Excel VBA
allgemeinen Deklarationen hinzugefügt. Für jede nicht definierte Variable erfolgt
dann eine Fehlermeldung.
Abbildung: Einstellungen der Entwicklungsumgebung: Verankerung
Verankerbare Fenster werden automatisch ausgerichtet, nicht verankerbare Fenster
können an eine beliebige Position auf dem Bildschirm verschoben werden. Auf diese
Weise können beispielsweise Projekt- und Eigenschaftenfenster praktischerweise
auf einen zweiten Bildschirm verlagert werden.
Optionen
23
Modellbasiertes Logistikmanagement
A.2
Die
Die Eingabe von Programm-Code
Programmierumgebung
von
Visual
Basic
unterscheidet
Excel-Objekte,
Formulare, Standardmodule und Klassenmodule. Als Programm-Code werden (im
Sprachgebrauch von Microsoft) sogenannte (VBA-) Makros erzeugt, das sind
Textbausteine in der Syntax der Programmiersprache VBA, die durch den Visual–
Basic-Interpreter oder Präprozessor bei der Ausführung automatisch durch ein
größeres Stück Programm-Code ersetzt werden. Der Makro-Begriff stammt aus den
Anfängen von Excel (Version 4). Damals wurde noch eine auf BASIC abzielende
rudimentäre
Programmiersprache
benutzt.
Im
Zusammenhang
mit
dem
fortgeschrittenen VBA sind die Begriffe Makro und (VBA-) Prozedur synonym.
Der Programm-Code wird innerhalb der Entwicklungsumgebung über das CodeFenster eingegeben. Hierbei werden die bereits erwähnten Modul-Blätter, kurz
Module erzeugt. Ein Modul kann eines oder mehrere Makros/Prozeduren enthalten.
Der
besondere
Vorteil
der
Nutzung
des
Code-Fensters
besteht
in
den
Programmierhilfen, genannt IntelliSense, die Microsoft hier bietet. Alternativ kann
man aber auch für die Programmerzeugung externe (ASCII-) Text-Editoren benutzen
und 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 und
eventuellen Verwendung für andere Zwecke verläuft entsprechend.
A.2.1
Erfassen von Makros mit dem Makro-Rekorder
Mit 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 Speicherort
angegeben werden. Eine Tastenkombination zum späteren Ausführen des Makros
kann optional hinterlegt werden.
24
Crash-Kurs in Excel VBA
Abbildung: Makro aufzeichnen mit Makro-Rekorder
Nach dem Start des Makro-Rekorders werden alle Tastatureingaben und Mausklicks
aufgezeichnet. Diese Aufzeichnungen werden relativ zur Cursor-Position beim
Aufruf des Rekorders vorgenommen, wenn vorher noch die Option Relative
Aufzeichnung durch Anklicken festgestellt wird (dabei wird der Text gelb hinterlegt).
Die Aufzeichnung wird über die Registerkarte Entwicklertools  Aufzeichnung
beenden (3) gestoppt.
Abbildung: Makro-Aufzeichnung beenden
25
Modellbasiertes Logistikmanagement
Schnellstart: Erstellen eines Makros
A.2.2
Bearbeiten oder Ausführen eines vorhandenen Makros über
die Menüstruktur
Die 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 Makro
Beim Klick auf Bearbeiten öffnet sich das Code-Fenster für das Modul, das dieses
Makro enthält, bei Schritt die schrittweise Testausführung.
26
Crash-Kurs in Excel VBA
Unter Optionen lässt sich nachträglich eine zugehörige Tastenkombination mit der
STRG-Taste einrichten oder ändern, mit der das Makro aus Excel heraus gestartet
werden kann.
Ausführen eines Makros
A.2.3
Der Start von Makros mit Graphiken und Steuerelementen
Eine alternative, aber sehr benutzerfreundliche Möglichkeit zum Ausführen eines
Makros besteht darin, eine Graphik oder ein Steuerelement in eines der geöffneten
Excel-Arbeitsblätter aufzunehmen und mit dem Makro zu verbinden.
A.2.3.1
Ausführen eines Makros durch Anklicken eines
Grafikobjektes
Fü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 entsprechenden
Möglichkeiten finden sich unter der Registrierkarte Einfügen.
Abbildung: Einfügen von Graphikobjekten
Hinzufügen, Ändern oder Löschen von Formen.
Man kann das Graphikobjekt nun mit der rechten Maustaste anklicken und einem
Makro zuweisen. Microsoft spricht hier von einem Hotspot. Es lässt sich durch
Anklicken dann noch zusätzlich formatieren:
Abbildung: Formatieren eines Graphikobjektes
Ausführen eines Makros
27
Modellbasiertes Logistikmanagement
A.2.3.2
Ausführen eines Makros durch Anklicken eines
Steuerelementes
Eine weitere Möglichkeit, eine Graphik zum Aufruf eines Makros zu benutzen,
besteht darin, Formular- oder ActiveX-Steuerelemente als spezielle Objekte in ein
Arbeitsblatt zu integrieren. Für diesen Zweck klicke man unter der Registrierkarte
Entwicklertools auf Einfügen. Die entsprechende Toolbox wird angezeigt, man
kann ein Steuerelement anwählen und auf dem Arbeitsblatt platzieren. Während
dieses Vorganges ändert sich die Form des Cursors zu einem Kreuz.
Abbildung: Einfügen von Formularsteuerelementen und ActiveX-Steuerelementen
Abbildung: Anzeige der Toolbox für Steuerelemente
Will man das Steuerelement hinterher bearbeiten, muss zuvor in der Registerkarte
Entwicklertools auf den Entwurfsmodus umgeschaltet werden.
Formularsteuerelemente
Formularsteuerelemente sind die ursprünglichen Steuerelemente von Excel (XLM).
Das Makro wird über Rechtsklick auf dem Steuerelement mit diesem verbunden
und
startet
dann
beim
Anklicken
des
Steuerelementes.
Innerhalb
der
Formularsteuerelemente wird je nach Art des Elementes bei dessen Formatierung
auf den Inhalt von Arbeitsblatt-Zellen oder Zellenbereichen verwiesen. Diese Werte
28
Crash-Kurs in Excel VBA
können dann als Parameter für ein Makro im Rahmen der Programmierung
übernommen werden.1
ActiveX-Steuerelemente
ActiveX-Steuerelemente
bieten
im
Vergleich
zu
Formularsteuerelementen
umfangreichere Optionen zur Automatisierung einer Aufgabe an. Es ist nicht möglich,
ein Makro über ein ActiveX-Steuerelement nur durch Zuweisung auszuführen, so wie
es bei einem Formularsteuerelement möglich ist. Die Makros gehören hier
stattdessen als eigener VBA-Code direkt zum Steuerelement, so wie bei den noch zu
beschreibenden UserForms und werden auch genauso behandelt. Zusätzlich
verfügen sie über umfangreiche Eigenschaften, mit denen Darstellung, Verhalten,
Schriftarten und andere Merkmale angepasst werden können. Klickt man auf das
Steuerelement, so wird zugehörige VBA-Code ausgeführt und alle für dieses
Steuerelement auftretenden Ereignisse verarbeitet.
Einige der ActiveX-Steuerelemente stehen nur auf UserForms zur Verfügung.2
Übersicht über Formulare, Formularsteuerelemente und ActiveX-Steuerelemente
auf einem Arbeitsblatt.
A.2.4
Programmierung mithilfe des Code-Fensters
Neben der automatischen Erfassung von Makros mit Hilfe des Makro-Rekorders
kann Programm-Code im integrierten Visual-Basic-Editor über das Code-Fenster
erstellt und bearbeitet werden.
A.2.4.1
IntelliSense
Der Visual-Basic-Editor verfügt mit IntelliSense über eine integrierte Funktionalität,
die dem Programmierer durch zusätzliche Informationen und Auswahlmöglichkeiten
die Arbeit erleichtert und die insbesondere den Aufwand des manuell einzugebenden
Quellcodes reduzieren soll:
1
Siehe http://support.microsoft.com/kb/291073/de
2
Siehe http://office.microsoft.com/de-de/excel-help/ubersicht-uber-formulare-formularsteuerelemente-
und-activex-steuerelemente-auf-einem-arbeitsblatt-HA010342745.aspx
29
Modellbasiertes Logistikmanagement
•
Der Quellcode wird nach jeder Eingabezeile optisch hinsichtlich der
Schreibweise (Groß- und Kleinschreibung) zur besseren Übersichtlichkeit
aufbereitet.
•
(Insbesondere lange) Variablennamen können mit STRG + Leertaste oder
STRG + Tab automatisch vervollständigt werden, sobald ein Name eindeutig
feststeht.
•
Bei der Eingabe eines Punkts hinter einer Objektvariablen werden die
Eigenschaften und Methoden eines Objektes auflistet und die leichte Auswahl
aus der Liste ermöglicht.
•
Bei dem Aufruf von Prozeduren erfolgen Hilfestellungen zur Angabe der
Parameter.
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 1
Die IntelliSense Funktionalitäten können zusätzlich auch über die Symbolleiste
Bearbeiten
abgerufen
werden.
Sie
enthält
weitere
Schaltflächen,
die
Tastenkombinationen für häufig verwendete Menübefehle zum Bearbeiten von Code
darstellen:
Abbildung: Symbolleiste Bearbeiten
Eigenschaften/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 VBA
Konstanten anzeigen
(Strg + Umschalt + J)
Öffnet ein Feld im Code-Fenster mit den Konstanten, die für die eingegebene
Eigenschaft zur Verfügung stehen, die vor dem Gleichheitszeichen (=) steht.
QuickInfo
(Strg + I)
Stellt Informationen zur Syntax für eine Variable, Funktion, Methode oder
Prozedur zur Verfügung, auf deren Namen sich der Cursor befindet.
Parameterinfo
(Strg + Umschalt + I)
Zeigt im Code-Fenster ein Popup-Fenster mit Informationen zu den
Parametern 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 auskommentieren
Fügt Kommentarzeichen am Zeilenanfang eines markierten Textbereichs ein.
Auskommentierung des Blocks aufheben
Entfernt Kommentarzeichen am Zeilenanfang eines markierten Textbereichs.
Lesezeichen setzen/zurücksetzen
Aktiviert bzw. deaktiviert ein Lesezeichen für die aktive Zeile im Code-Fenster.
Nächstes Lesezeichen
Setzt den Fokus auf das nächste Lesezeichen in der Lesezeichenliste.
Vorheriges Lesezeichen
Verschiebt den Fokus auf das vorherige Lesezeichen in der Lesezeichenliste.
Alle Lesezeichen löschen
Löscht alle Lesezeichen.
Bearbeiten-Symbolleiste
31
Modellbasiertes Logistikmanagement
A.2.4.3
Direkter und indirekter Aufruf des Code-Fensters
Alle nicht über Formulare eingegebenen Programme werden direkt gespeichert und
lassen sich auch direkt aufrufen: die Excel-Objekte, die Standardmodule oder die
Klassenmodule.
Für den Programm-Code, der den Ablauf von Benutzeroberflächen (UserForms)
regelt, wird das Code-Fenster innerhalb des logisch übergeordneten FormularDesigners aufgerufen, indem auf ein Steuerelement geklickt wird.
A.2.4.4
Anlegen eines neuen Modules
Die Excel-Objekte sind immer schon über die gewöhnliche Excel-Umgebung
vorgegeben. Falls aber noch keine Standard- bzw. Klassenmodule vorhanden sein
sollten,
müssen
diese
zunächst
angelegt
werden,
bevor
Programm-Code
eingegeben werden kann.
Für das Anlegen eines neuen Standardmodules [Klassenmodules] gibt es folgende
Möglichkeiten:
•
Man wählt in der Entwicklungsumgebung aus dem Menü Einfügen den Befehl
Modul [Klassenmodul].
•
Man wählt in der Symbolleiste Voreinstellung das Drop-down-Symbol und
dann 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-Explorer
A.2.4.5
Aufruf eines vorhandenen Modules
Zum Öffnen eines bereits vorhandenen Programmtextes klickt man im ProjektExplorer 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 Entwicklertools
mit Klick auf das Symbol Makros.
32
Crash-Kurs in Excel VBA
Für jedes vorhandene Modul kann ein eigenes Code-Fenster geöffnet werden. Auf
diese Weise kann Programm-Code zwischen unterschiedlichen Modulen und
Fenstern verschoben oder kopiert werden.
Makros
A.2.4.6
Anlegen einer neuen Prozedur
Nachdem das Code-Fenster geöffnet ist, bietet die Entwicklungsumgebung
Hilfestellung bei der Eingabe einer neuen Prozedur (im alten Sprachgebrauch: eines
Makros).
Dazu gibt es folgende Möglichkeiten:
•
Man wählt in der Entwicklungsumgebung aus dem Menü Einfügen den Befehl
Prozedur.
•
Man wählt in der Symbolleiste Voreinstellung das Drop-down-Symbol
(Prozedur einfügen) und dann Prozedur.
Abbildung: Prozedur hinzufügen
Es öffnet sich das obige Fenster, indem dann einer der drei möglichen ProzedurTypen (SUB, FUNCTION, PROPERTY) sowie der Gültigkeitsbereich der Prozedur
festgelegt werden.
33
Modellbasiertes Logistikmanagement
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. alle
Prozeduren in allen Modulen des zugehörigen Projektes, aber nicht darüber
hinaus.
•
PRIVATE: Modulebene, alle Prozeduren in dem Modul der so deklarierten
Prozedur
•
STATIC: Prozedurebene und bedeutet, dass die zugehörigen lokalen
Variablen nach dem Aufruf der Prozedur ihren Wert beibehalten und nicht
standardmäßig gelöscht werden.
Für Prozeduren in Klassenmodulen (und nur hier) gibt es dazu noch den optionalen
Zusatz FRIEND. Dadurch sind diese Prozeduren auch in bestimmten anderen
Klassen des Projektes aufrufbar, den sogenannten befreundeten Klassen.
In jedem genannten Fall erzeugt die Entwicklungsumgebung dann das Gerüst
innerhalb der VBA-Syntax, welches anschließend durch weiteren Programm-Code
ergänzt werden kann.
Erstellen einer Prozedur
A.2.5
Debugging/Fehlersuche
In der Entwicklungsumgebung werden unter dem Menü Debuggen verschiedene
Werkzeuge aufgeführt, die bei der Diagnose und dem Auffinden von Fehlern
behilflich sein können.
A.2.5.1
Zeilenweise Abarbeitung einer Prozedur
Eine zeilenweise Abarbeitung, bei der jeder einzelne Schritt bestätigt werden muss,
ist über das Menü Debuggen  Einzelschritt oder die F8-Taste möglich. Eine
weitere
34
Möglichkeit
besteht
darin,
den
Lauf
des
Makros
mit
Hilfe
der
Crash-Kurs in Excel VBA
Tastenkombination STRG + F8 an einer mit dem Cursor markierten Position zu
unterbrechen.
Verfolgen der Ausführung des Codes
A.2.5.2
Verwendung von Haltepunkten in einer Prozedur
Über das Menü Debuggen  Haltepunkt ein/aus oder mit der F9-Taste können
entsprechende
Haltepunkte
eingefügt
und
mit
der
Tastenkombination
STRG + UMSCHALT + F9 wieder gelöscht werden.
Setzen und Löschen eines Haltepunktes
A.2.5.3
Verwendung von Überwachungsausdrücken in einer
Prozedur
Darüber hinaus können über das Menü Debuggen  Überwachung hinzufügen
benutzerdefinierte Überwachungsausdrücke festgelegt werden, die das Verhalten
eines 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 Überwachungsausdrucks
A.2.6
Standarddialoge
Excel bietet eine Vielzahl an Standarddialogen für Interaktionen mit dem Anwender.
Diese werden z. B. dazu verwendet, Hinweise zu geben, Dateien auszuwählen oder
Einstellung 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
Modellbasiertes Logistikmanagement
Generell basieren alle Dialoge auf dem UserForm-Objekt. Die Standard-Dialoge
können über die Application-Eigenschaft Dialogs aufgerufen werden und mit der
Methode Show angezeigt und ausgeführt werden.
Listen der integrierten Dialogfeldargumente
A.2.6.1
Die Funktion MsgBox
MsgBox ist eine sehr häufig genutzte Funktion, die den Programmablauf unterbricht,
in einem Dialogfeld eine Meldung anzeigt und auf die Auswahl einer Schaltfläche
wartet. Es wird ein Wert vom Typ Integer zurückgegeben, der anzeigt, auf welche
Schaltfläche der Benutzer geklickt hat.
MsgBox(Prompt[, Buttons] [, Title] [, Helpfile, HelpContextId])
Parameter:
Prompt
Erforderlich. Eine Kette von max. 1024 Zeichen, die als Meldung im
Dialogfeld erscheint.
Buttons
Optional mit Standardwert 0. Numerischer Ausdruck mit einem
kombinierten Wert, der Anzahl und Typ der anzuzeigenden
Schaltflächen entspricht, die Art des zu verwendenden Symbols
sowie die Standardschaltfläche und die Bindung des Dialogfeldes
angibt.
Title
Optional
mit
Anwendungsname
als
Standardwert.
Ein
Zeichenfolgenausdruck, der in der Titelleiste des Dialogfeldes
angezeigt wird.
Helpfile
Nur in Verbindung mit HelpContextId: Ein Zeichenfolgenausdruck,
der die Hilfedatei mit der kontextbezogenen Hilfe für das Dialogfeld
angibt.
HelpContextId Optional. Ein numerischer Ausdruck mit der Hilfekontextkennung für
36
Crash-Kurs in Excel VBA
das 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.2
Die Funktion InputBox
VBA stellt für Benutzereingaben die Funktion InputBox zur Verfügung. Sie zeigt eine
Eingabeaufforderung in einem Dialogfeld an, wartet auf die Eingabe eines Textes
oder auf das Klicken auf eine Schaltfläche und gibt einen Wert vom Typ String
zurück, der den Inhalt des Textfeldes angibt.
InputBox(prompt
[, Title] [, Default] [,
[, Helpfile, HelpContextId])
Left]
[,
Top]
_
Parameter:
Default
optional:
Zeichenfolge
als
Vorbelegung
für
das
Eingabefeld,
Standardwert ist leer.
Left
optional: Numerischer Ausdruck für die x-Position des Dialogfeldes, der
horizontale Abstand des linken Rands des Dialogfeldes vom linken
Rand des Bildschirms in Points gemessen. Das Dialogfeld wird
standardmäßig horizonal zentriert.
Top
optional: Numerischer Ausdruck für die y-Position des Dialogfeldes, der
vertikale Abstand des oberen Rands des Dialogfeldes zum oberen
Rand des Bildschirms in Points gemessen. Das Dialogfeld wird
37
Modellbasiertes Logistikmanagement
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 werden
sollen, 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, so
dass der Sinn von eingegebenen Parametern ersichtlich wird. Für komplett
ausgelassene Parameter am Listenende gilt das also nicht.
Beispiele
Eingabe = InputBox( “Anzahl eingeben“, “Übersicht“, 0, 830, 950)
Eingabe = InputBox( , , , 830, 950)
InputBox-Funktion, InputBox-Funktion (Beispiel)
A.2.6.3
Die Methode InputBox
Neben der Funktion InputBox gibt es auch noch die Application-Methode mit
gleichem Namen. Der Unterschied zur Funktion besteht darin, dass bei der Methode
auch 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):
Type
optional: Gibt den Datentyp des Rückgabewertes an. Wenn dieses
Argument nicht angegeben wird, gibt das Dialogfeld Text zurück.
Ohne Angabe des Objekts geht VBA von der InputBox-Funktion aus und liefert bei
der Type-Angabe eine Fehlermeldung.
Wird Type nicht als Argument angegeben, so wird der Eingabewert je nach Form als
Zahl, Text Boolscher Wert oder Formel interpretiert.
Werte, die im Argument Type übergeben werden können:
38
Crash-Kurs in Excel VBA
Wert
Bedeutung
0
Formel
1
Zahl
2
Text (Zeichenfolge)
4
Wahrheitswert (True oder False)
8
Zellbezug, z. B. ein Range-Objekt
16
Fehlerwert, z. B. #NV
64
Wertearray
Beispiele
ZahlEingabe = Application.InputBox( “Bitte Anzahl eingeben“)
ZellenEingabe =Application.InputBox(
Prompt:=“Bitte Zelle markieren“, Type:=8)
Application.InputBox-Methode
A.2.7
Erstellen einer User-Form
Neben den nicht veränderbaren Standard-Dialogen gibt es die benutzerdefinierten
Dialoge,
die
sogenannten
UserForms.
Sie
dienen
der
Realisierung
einer
anwenderfreundlichen Lösung und können mit individuellen Steuerelementen
bestückt und automatisiert werden.
Zu den Steuerelementen gehören folgende Elemente:
•
Eingabe- und Textfelder
•
Listenfelder
•
Kombinationslistenfelder
•
Optionsschaltflächen
•
Kontrollkästchen.
Vorgehensweise: Erstellen eines benutzerdefinierten Dialogfelds
A.2.7.1
Benutzerformular erstellen
39
Modellbasiertes Logistikmanagement
UserForms können über das Menü Einfügen ausgewählt werden und öffnen einen
Formular-Designer mit zugehörigen Werkzeugen (s. nachfolgende Abbildung).
Abbildung: UserForm-Eingabe
A.2.7.2
Steuerelemente einfügen
Diese Werkzeuge ermöglichen es dem Benutzer, unterschiedliche Steuerelemente in
die 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 es
weitere Auswahlmöglichkeiten. Werte können hier auch manuell durch den
Benutzer eingetragen werden.
Listenfeld einfügen. Da mehrere Einträge gleichzeitig angezeigt werden,
benötigt das Listenfeld mehr Platz. Kann die UserForm nicht alle Einträge
anzeigen, wird dynamisch eine vertikale Steuerungsleiste eingebunden.
Rahmen einfügen. Einzelne Elemente können mit Hilfe des
Rahmenelementes gruppiert werden.
40
Crash-Kurs in Excel VBA
Kontrollkästchen einfügen. Bei der Verwendung von Kontrollkästchen
innerhalb einer Gruppe können ein aber auch mehrere Kontrollkästchen
aktiviert werden.
Optionsfeld einfügen. Bei der Verwendung von Kontrollkästchen innerhalb
einer Gruppe kann immer nur ein Kontrollkästchen aktiviert sein.
Umschaltfeld einfügen. Mit Hilfe des Umschaltfeldes können zwei
Funktionen in einem Steuerelement untergebracht werden, wie z.B.
Gitternetz ein/ Gitternetz aus.
Befehlsschaltfläche einfügen. Die Befehlsschaltflächen können später mit
Makros bestückt werden.
Register einfügen. Inhaltlich zusammenhängende Steuerelemente in
Gruppen können mit jeweils unterschiedlichen Informationen
zusammengestellt und angezeigt werden.
Multiseiten einfügen. Größere Mengen an Information, die zu
unterschiedlichen Kategorien gehören, können eingegeben werden.
Bildlaufleiste einfügen. Dieses Steuerelement wird verwendet, wenn die
UserForm so groß ist, dass bestimmte Elemente nur mit Hilfe von
Bildlaufleisten angezeigt werden können.
Drehfeld einfügen. Mit Hilfe dieses Symbols können z.B. Zahlen
schrittweise erhöht werden. Meist wird dieses Steuerelement zusammen mit
einem Textfeld verwendet, in dem das Ergebnis schrittweise angepasst
werden kann.
Grafiken, Logos oder Bilder einfügen.
Einen Bereich über ein Eingabefeld markieren bzw. eigene Texte eingeben
und an die UserForm übergeben.
Tabelle: Steuerelemente einer UserForm
Zusätzlich können über einen Rechtsklick auf die Werkzeugsammlung weitere
Steuerelemente
hinzugefügt
werden.
Ebenso
können
bereits
ausgewählte
Werkzeuge aus der Ansicht gelöscht werden.
A.2.7.3
Steuerelementeigenschaften festlegen
Steuerelemente können zusätzlich noch durch weitere Eigenschaften beschrieben
werden.
Diese
sind über
einen
Rechtsklick

Eigenschaften
auf
das
entsprechende Steuerelement zugänglich.
Beschriftung
41
Modellbasiertes Logistikmanagement
Beim Einfügen der Steuerelemente wird standardmäßig eine Beschriftung eingefügt.
Diese kann in einem weiteren Schritt den Anforderungen entsprechend abgeändert
werden. Dazu auf die Standard-Beschriftung klicken und die neue Beschriftung
einfügen.
Positionierung
Mit der StartupPosition-Eigenschaft ist es möglich, den Startwert festzulegen, an
welcher Stelle auf dem Bildschirm der Dialog erscheinen soll. Da diese Eigenschaft
nicht im Objektkatalog aufgeführt ist, werden hier die vier Einstellungen erläutert:
EINSTELLUNG
WERT
BESCHREIBUNG
Manual
0
Für den Dialog wird keine Anfangseinstellung
festgelegt.
CenterOwner
1
Dialog wird auf dem Element zentriert, zu dem das
UserForm-Objekt gehört (Defaulteinstellung).
CenterScreen
2
Dialog wird anhand des Bildschirms zentriert.
Windows Default
3
Dialog erscheint in der linken oberen Ecke des
Bildschirms.
Tabelle: UserForm positionieren
Unabhängig von StartupPosition können Dialoge manuell positioniert werden.
Dazu werden die Eigenschaften Left und Top in der UserForm_ActivateEreignisprozedur eingestellt.
Aktivierreihenfolge
Bei der Erstellung von UserForms sollte die Aktivierreihenfolge beachtet werden,
anhand derer die einzelnen Steuerelemente ausgeführt werden. Dies kann in Bezug
auf ein Springen mit der Tab-Taste interessant für den Benutzer sein. Mit einem
Rechtsklick auf die UserForm kann im Menü-Fenster die Reihenfolge ausgewählt
werden:
42
Crash-Kurs in Excel VBA
Abbildung: Aktivierreihenfolge
UserForm programmieren
Nachdem Steuerelemente in die UserForm eingefügt wurden, können diese auch mit
Funktionen versehen werden. Steuerelemente können zur Laufzeit initialisiert
werden, indem der VBA-Code in einer Prozedur verwendet wird. Dazu müssen dann
auch Prozeduren/Makros erstellt werden, welche die UserForm aufrufen, um
Eingaben zu tätigen. Die eingegebenen Daten müssen dafür in einer Tabelle
gespeichert werden. Zum Schluss muss die UserForm wieder beendet werden.
A.2.7.4
Steuerelement-Eigenschaften initialisieren
Mit Hilfe des Initialize-Ereignisses können Anfangswerte für das Steuerelement
festgelegt werden. Der Vorteil hier besteht darin, dass der Initialisierungscode im
Formular bleibt und dadurch in andere Projekte kopiert werden kann. Mit Hilfe der
Show-Methode, mittels der das Dialogfeld angezeigt werden kann, können die
Steuerelemente initialisiert werden.
Außerdem können Steuerelemente zur Laufzeit initialisiert werden, indem VBA-Code
in einem Makro verwendet wird.
Initialisieren von Steuerelement-Eigenschaften
A.2.7.5
Steuerelement- und Dialogfeldereignisse erstellen
UserForms besitzen einen vordefinierten Ereignissatz, d.h. dass z. B. eine
Befehlsschaltfläche ein Click-Ereignis oder UserForms-Objekte ein Initializie-Ereignis
besitzen.
43
Modellbasiertes Logistikmanagement
Um Ereignisprozeduren für ein Steuerelemente bzw. ein Formular zu schreiben,
muss das Steuerelement bzw. das Formular mit einem Doppelklick geöffnet werden
und aus dem Drop-down-Listenfeld bzw. über Einfügen  Prozedur eine Prozedur
ausgewählt werden. Dann erst kann der Code der Ereignisprozedur hinzugefügt
werden.
A.2.7.6
UserForm anzeigen
Um eine UserForm über VBA-Code anzuzeigen, muss sie zunächst als Objekt
geladen und dann mit der Show-Methode angezeigt werden.
Load UserFormName
Load-Anweisung
UserFormName.Show
UserForm Objekt
Soll eine erstellte UserForm getestet werden, so kann die Ausführung über
Ausführen  Sub/ Formular ausführen oder über die F5-Taste angestoßen
werden.
A.2.7.7
Steuerelemente während der Code-Ausführung
verwenden
Während der Code-Ausführung besteht die Möglichkeit, einige der SteuerelementeEigenschaften festzulegen und zurückzugeben. Daten, die in ein Formular
eingegeben wurden, gehen beim Schließen des Fensters verloren. Daher müssen
die eingegebenen Daten in Variablen der Modulebene gespeichert werden, während
das Formular noch ausgeführt wird.
Verwenden von Steuerelementen während der Code-Ausführung
44
Crash-Kurs in Excel VBA
A.2.7.8
Besonderheiten beim Dialogende
Durch den X-Button des Dialogfelds in der rechten oberen Ecke kann ein Dialog
geschlossen werden. Ist dies nicht gewünscht, so muss das QueryClose-Ereignis
mit dem Parameter CloseMode ausgewertet werden.
Dieses Ereignis kann verschiedene Zustände haben:
EINSTELLUNG
WERT
BESCHREIBUNG
vbFormControlMenu 0
Der Benutzer hat auf der UserForm im Systemmenü
den Befehl Schließen gewählt.
VbFormCode
1
Die Unload-Anweisung wird durch Code aufgerufen.
VbAppWindows
2
Die aktuelle Windows-Betriebsumgebungssitzung
wird beendet.
VbAppTaskManager 3
Die Anwendung wird vom Windows-Task-Manager
geschlossen.
Tabelle: QueryClose-Ereignis
Dieses Ereignis kann über das Argument Cancel gesteuert werden. Durch Festlegen
des Arguments auf einen Wert ungleich 0 wird das QueryClose-Ereignis in allen
geladenen Benutzerformularen beendet. So wird verhindert, dass die UserForm und
die Anwendung geschlossen werden.
Private Sub UserForm_QueryClose(Cancel%, CloseMode%)
If CloseMode = vbFormControlMenu Then Cancel = True
End Sub
45
Modellbasiertes Logistikmanagement
A.2.8
Internet Links für Hilfestellungen zur VBA Programmierung
Einige geeignete Portale und Medien sind im Folgenden aufgeführt:
BEREICH / ANBIETER
INTERNETLINK / BEGRIFF
Wikibooks VBA in Excel
http://de.wikibooks.org/wiki/VBA_in_Excel
Galileo Computing
Einstieg in Visual Basic
2010
http://openbook.galileocomputing.de/einstieg_vb_2010/
VBA-Programmierung
http://www.vba-wordwelt.de/
Visual Basic Online
Seminar
http://www.vb-seminar.de/
Excel Standard und
Excel VBA
http://www.online-excel.de/
Microsoft Developer
Network
http://msdn.microsoft.com/dede/library/office/ee814737(v=office.14).aspx
Youtube
Suchbegriff: VBA Tutorial
Office Forum
http://www.office-loesung.de/viewforum10_0_0.php
Excel-Formel-Übersetzer
http://de.excel-translator.de/
Tabelle: Hilfestellungen über das Internet
46
Crash-Kurs in Excel VBA
A.3
Die Syntax von VBA
Das
folgende
Kapitel
sind
die
wichtigsten
Sprachelemente
von
VBA
zusammengefasst. Zusätzliche Erläuterungen liefert grundsätzlich das Visual-Basic
Sprachverzeichnis in der Excel-Hilfe für Entwickler
A.3.1
.
Kommentare und Schreibkonventionen
Eingefügte Kommentare und Übersichtlichkeit im Schriftbild sind wesentliche
Merkmale guter Programmierung. Sie sind unabdingbar, um ein Programm auch
nach längerer Zeit schnell wieder verstehen zu können.
•
Ein Kommentarbereich (nicht notwendig am Anfang einer Zeile) beginnt mit
einem Hochkomma und endet am Zeilenende.
•
Eine Kommentarzeile beginnt mit der klassischen Anweisung Rem (für
Remark).
•
Für eine bessere Übersichtlichkeit können Texte eingerückt werden.
•
Längere Anweisungen können auf mehrere Zeilen verteilt werden, indem ein
Unterstrich mit vorangehendem Leerzeichen gesetzt wird.
•
Mehrere Anweisungen innerhalb einer Zeile werden durch Doppelpunkt
getrennt.
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 Zeile
x=y: u=w: a=b
A.3.2
Standardkonventionen für die Namensgebung
Eine Reihe von Sprachelementen in VBA muss zur Unterscheidung einen Namen
erhalten, z. B. Variablen, Konstante, Prozeduren, Objekte, Formulare, etc.
47
Modellbasiertes Logistikmanagement
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 und
Leerzeichen sind nicht erlaubt,
•
maximal 255 Zeichen,
•
kein VBA Schlüsselwort.
A.3.3
Prozeduren
Eine Prozedur ist eine Folge von gemeinsam ausgeführten Anweisungen. In VBA
unterscheidet man die Prozedurtypen Sub, Function und Property. Jede Prozedur
muss mit einem eindeutigen Namen versehen werden.
Prozeduren sind standardmäßig Public, wenn sie nicht explizit mit Public oder
Private deklariert werden. Auf eine solche Prozedur kann von allen anderen
Prozeduren in allen Modulen zugegriffen werden. Bei Verwendung in einem Modul
mit einer Option Private-Anweisung kann auf die Prozedur nur innerhalb des
Projekts zugegriffen werden.
A.3.3.1
Sub-Prozeduren
[Private | Public] [Static] Sub Name [(ArgListe)]
[Anweisungen]
[Exit Sub]
[Anweisungen]
End Sub
ArgListe ist eine Variablenliste mit den Argumenten, die an die Sub-Prozedur beim
Aufruf ü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ßenden
Argumente 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 VariantElementen ist. ParamArray erlaubt die Angabe einer variablen Anzahl von
Argumenten und darf nicht in Kombination mit den Schlüsselwörtern ByVal,
ByRef oder Optional benutzt werden.
Sub-Anweisung
Aufruf einer Sub-Prozedur
Call ProzedurName[(ArgListe)]
bzw.
ProzedurName[ArgListe]
Mit folgenden Bedeutungen:
•
Call ist dabei ein optionales Schlüsselwort. Wird es angegeben, so MUSS
ArgListe in Klammern stehen.
•
ArgListe ist die durch Kommata getrennte Liste der Variablen, die an die
Prozedur übergeben werden sollen. Wird das Schlüsselwort Call NICHT
verwendet, darf ArgListe NICHT in Klammern stehen.
Call-Anweisung
49
Modellbasiertes Logistikmanagement
A.3.3.2
Function-Prozeduren
[Public | Private | Friend] [Static] Function Name [(ArgListe)]
[As Typ]
[Anweisungen]
[Name = Ausdruck]
[Exit Function]
[Anweisungen]
[Name = Ausdruck]
End Function
Function-Prozeduren sind standardmäßig Public, wenn sie nicht explizit mit Public,
Private oder Friend deklariert werden. Für ArgListe gelten die gleichen Regeln, wie
sie unter Sub-Prozeduren aufgeführt wurden.
Aufruf einer Function-Prozedur
Der Aufruf einer Function-Prozedur innerhalb eines Ausdrucks erfolgt durch Angabe
des 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 die
Funktion wie eine Sub-Prozedur behandelt.
Beispiel:
MsgBox “Weitermachen?“
Call MsgBox(“Weitermachen?“)
Function-Anweisung
A.3.3.3
Property-Prozeduren
Über Property-Prozeduren können benutzerdefinierte Eigenschaften in UserForms,
Standardmodulen und Klassenmodulen erstellt und bearbeitet werden. Sie werden
damit 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]
Anweisungen
End Property
Schreiben einer Property-Prozedur
A.3.4
Konstante, Variable und Datenfeldern
Das Speichern von Daten läuft auch in VBA über Konstante und Variable, die durch
Namen unterschieden werden. Hinsichtlich des Speicherbedarfes werden die
üblichen unterschiedlichen Datentypen betrachtet. Bei der Deklaration von
Konstanten,
Variablen
oder
Datenfeldern
wird
dann
deren
individueller
Speicherbedarf festgelegt.
A.3.4.1
Standard-Datentypen
WERT
DATENTYP
Byte
Ganze Zahlen
Integer
Long
Single
Reelle Zahlen
Double
Currency
WERTEBEREICH/
SPEICHERBEDARF
Wertebereich: 0. . . 255,
1 Byte Speicherbedarf
Integer Wertebereich: -32
768. . . 32 767, 2 Byte
Speicherbedarf
Wertebereich: -2 147 483
648. . . 2 147 483 647, 4 Byte
Speicherbedarf
Fließkommazahl mit 8 Stellen
Genauigkeit, 4 Byte
Speicherbedarf
Fließkommazahl mit 16
Stellen Genauigkeit, 8 Byte
Speicherbedarf
Festkommazahlen mit 15
Stellen Genauigkeit vor und 4
Stellen hinter dem Komma;
Speicherbedarf: 8 Byte
KÜRZEL DEFTYP
kein
DefByte
%
DefInt
&
DefLng
!
DefSng
#
DefDbl
@
DefCur
51
Modellbasiertes Logistikmanagement
WERT
WERTEBEREICH/
DATENTYP
Zeichenketten
String
Wahrheitswerte Boolean
SPEICHERBEDARF
Speicherbedarf: 10 Byte und
2 Byte pro Zeichen; Länge
nur durch RAM begrenzt
Datentyp, der nur zwei Werte
annehmen kann (True,
False); Speicherbedarf: 2
Byte
Nimmt je nach Bedarf einen
der obigen Datentypen an;
Speicherbedarf: mindestens
16 Byte, bei Zeichenketten 22
Byte plus 2 Byte pro Zeichen
KÜRZEL DEFTYP
$
DefStr
kein
DefBool
kein
DefVar
VariantDatentyp
Variant
Datum/Zeit
Date
8 Byte Speicherbedarf
Kein
DefDate
Objekte
Object
Verweis auf ein Objekt
4 Byte Speicherbedarf
kein
DefObj
Tabelle: Standard-Datentypen in VBA
Datentypen
A.3.4.2
Benutzerdefinierte Datentypen
Neben den Standard-Datentypen kann man als Benutzer aber auch noch eigene
Datensätze mittels der Type-Anweisung definieren.
Die Type-Anweisung kann nur auf Modulebene verwendet werden. Nach der
Deklaration eines solchen benutzerdefinierten Typs kann eine Variable oder ein
Datenfeld dieses Typs innerhalb des Gültigkeitsbereiches dieser Type-Deklaration
deklariert werden.
[Private | Public] Type TypName
AttributName1 [([Indizes])] As Typ
[AttributName2 [([Indizes])] As Typ]
...
End Type
52
Crash-Kurs in Excel VBA
Beispiel:
Type Lkw
Hersteller As String
= “MAN“
Gewicht As Double
= 34.12
Stellplaetze As Integer
= 100
End Type
Lkw.Hersteller = “Mercedes“
Type-Anweisung
A.1.1 Aufzähl-Typen
Enum-Typen werden mit konstanten Werten initialisiert, die zur Laufzeit nicht
verändert werden. Sie werden für die Deklaration von Variablen und Parameter mit
klar definiertem diskretem Wertebereich verwendet und beschränken diese auf den
angegebenen Wertebereich.
Die Enum-Anweisung kann nur auf Modulebene verwendet werden. Enum-Typen
sind standardmäßig Public. Im Falle von Private ist der Typ nur in dem Modul
sichtbar, in dem er definiert wurde.
[Private | Public] Enum EnumName
ElementName1 [= Konstantenausdruck]
[ElementName2 [= Konstantenausdruck]]
...
End Enum
Enum-Anweisung
A.3.4.3
Deklarieren von Konstanten
Konstanten können innerhalb oder außerhalb des Anweisungsblocks einer Prozedur
(also zwischen Sub Name() … End Sub) definiert werden. In Sub-, Function- oder
Property-Prozeduren deklarierte Konstanten gelten als lokal innerhalb dieser
Prozedur. Eine Konstante, die außerhalb einer Prozedur deklariert wurde, ist für das
53
Modellbasiertes Logistikmanagement
gesamte umgebende Modul definiert. Konstanten können an allen Stellen verwendet
werden, an denen auch ein Ausdruck zulässig ist.
[Public | Private] Const Name [ As Datentyp ] = Ausdruck
Beispiel:
Const conAlter As Integer = 34
Die optionalen Schlüsselworte Private und Public dürfen nicht innerhalb von
Prozeduren benutzt werden, sondern nur außerhalb auf Modulebene. Die
Deklaration muss dann also vor dem Schlüsselwort Sub erfolgen. Private bedeutet
dabei, dass die Konstante nur innerhalb desjenigen Moduls zur Verfügung steht, in
dem sie deklariert wurde, Public dagegen, dass sie allen Prozeduren in allen
Modulen zur Verfügung steht. Innerhalb von Klassenmodulen dürfen Konstante nicht
als Public deklariert werden.
Deklarieren von Konstanten
Es gibt vielfältige innerhalb von VBA bereits vordefinierte Konstante, um die
Programmierung zu erleichtern, sie sind in der Excel-Hilfe unter
erläutert.
54
•
CallType-Konstanten
•
Compiler-Konstanten
•
Dateiattribut-Konstanten
•
Dateieingabe/-ausgabe-Konstanten
•
Datumsformat-Konstanten
•
Datumskonstanten
•
Dir-, GetAttr- und SetAttr-Konstanten
•
DriveType-Konstanten
•
Farbkonstanten
•
Formularkonstanten
•
IMEStatus-Konstanten
•
Kalender-Konstanten
Konstanten
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 Konstanten
A.3.4.4
Deklarieren von Variablen
Wenn in den Editor-Einstellungen Variablendeklaration erforderlich aktiviert wurde
oder wenn die Anweisung Option Explicit im Modul verwendet wird, erfolgt für jede
nicht deklarierte Variable eine Fehlermeldung. Ohne zwingende Variablendeklaration
wird jede nicht deklarierte Variable als Variant-Typ behandelt.
Variablen sind Speicherplätze für Zeichenfolgen (Strings), Werte und Objekte. Ihre
Gültigkeit und die Lebensdauer ihrer Werte sind abhängig vom Ort und der Art ihrer
Deklaration.
•
Deklaration innerhalb einer Prozedur
Die Variable ist lokal, hat ihre Gültigkeit also ausschließlich für diese Prozedur
und kann nicht aus anderen Prozeduren angesprochen werden.
•
Deklaration im Modulkopf
Die Variable gilt für alle Prozeduren dieses Moduls, eine Weitergabe als
Parameter ist nicht notwendig.
•
Deklaration im Modulkopf eines Standardmoduls als Public
Die Variable gilt für alle Prozeduren der Arbeitsmappe, soweit das die
Prozedur enthaltene Modul nicht als Private deklariert ist.
Public-Variablen und Variablen auf Modulebene sollte man eigentlich tunlichst
vermeiden, da man nicht immer schnell feststellen kann, wann diese öffentlichen
55
Modellbasiertes Logistikmanagement
Variablen ihren Wert verlieren oder wo er geändert wird. Die sauberste Lösung ist die
Deklaration innerhalb der Prozeduren und die Weitergabe als Parameter. 1
GÜLTIGKEITSBEREICH
UND LEBENSDAUER
DEKLARATION
EINER VARIABLEN
Öffentlich
(alle Prozeduren in allen
Modulen (des Projektes))
Privat
(nur in den Prozeduren
des Moduls)
Lokal vergänglich
(Prozedurebene, Wert
wird gelöscht)
Lokal statisch
(Prozedurebene, Wert
wird beibehalten)
Deklaration vor der Sub-Zeile mit Public-Anweisung
z. B.: Public Variable As Datentyp
Deklaration vor Sub-Zeile mit Private-Anweisung
z. B.: Private Variable As Datentyp
Deklaration nach der Sub-Zeile mit Dim-Anweisung
Deklaration nach der Sub-Zeile mit Static-Anweisung:
z. B.: Static Variable As DatenTyp
Tabelle: Gültigkeitsbereiche und Lebensdauer von Variablen in VBA
Public-Anweisung, Private Anweisung, Dim-Anweisung, Static-Anweisung
A.3.4.5
Deklarieren von Variablen innerhalb einer Prozedur
Die Deklaration von Variablen innerhalb einer Prozedur kann unter VBA auf drei
Arten erfolgen. Die klassische Variante verwendet den expliziten Datentyp, die
kürzere Variante lediglich ein Kurzzeichen direkt an den Namen gehängt. Mit der
DefTyp-Anweisung kann man darüber hinaus auch noch Variablentypen für
Variablennamen festlegen, deren Name mit einem Buchstaben innerhalb eines
gewissen Bereiches beginnt. Innerhalb einer Prozedur sollte man die DimAnweisung in der Regel an den Anfang der Prozedur stellen.
Die Datentyp-Kürzel und DefTyp-Bezeichnungen entnehme man der obigen Tabelle
zu den Standard-Datentypen.
1
Vergl.
http://de.wikibooks.org/wiki/VBA_in_Excel/_G%C3%BCltigkeit_von_Variablen_und_Konstanten#Dekla
ration_auf_Prozedurebene
56
Crash-Kurs in Excel VBA
Dim Name1 As Datentyp1[, Name2 As Datentyp2[, …]]
Dim Name1DatentypKürzel1[, Name2DatentypKürzel2[, …]]
DefTyp Buchstabenbereich1[, Buchstabenbereich2[, …]]
Beispiel:
Dim AnzPers As Integer, LkwGew As Double
Dim AnzPers%, Curr$
DefInt A-K, P-R
Deklarieren von Variablen
DefTyp Anweisung
A.3.4.6
Deklarieren von Datenfeldern innerhalb einer Prozedur
Datenfelder sind Variablen mit einer zusätzlichen Dimensionsangabe.
Deklarieren von Datenfeldern:
Dim Name (Dimension1[, Dimension2[,…]]) As Datentyp
Beispiel:
Dim Distanz(10,20) As Double
Ob ein Datenfeld mit 0 oder 1 beginnend indiziert ist, hängt von der Einstellung der
Option Base-Anweisung ab. Wenn Option Base 1 nicht angegeben ist, beginnen
alle Datenfelder mit dem Index Null. Das obige Beispiel wäre dann also eine 11x21Matrix.
Festlegen der Startindizes:
Option Base {0 | 1}
Die Dim-Anweisung kann auch in Kombination mit einem leeren Klammernpaar zur
Deklaration eines dynamischen Datenfelds verwendet werden. Nach einer solchen
57
Modellbasiertes Logistikmanagement
Deklaration kann man mit der nachfolgenden ReDim-Anweisung innerhalb des
Programmablaufes die Anzahl der Dimensionen und Elemente in dem Datenfeld neu
definieren. Gleiches gilt für bereits vorher festgelegte Werte der Indizes:
Dynamisches Datenfeld erzeugen:
Dim Name()
Neudimensionierung von Datenfeldern:
Redim [Preserve] Name (Dimension1 [, Dimension2 [,…]]) As Datentyp
Das Preserve rettet dabei – soweit möglich – vorhandene Daten, während die
nachfolgende Anweisung das Datenfeld neu initialisiert:
Neuinitialisierung von Datenfeldern:
Erase Name
Neben den Datenfeldern mit dem durch Option Base vorgegebenen Startindex
lassen sich aber auch noch Datenfelder mit einem bestimmtem Indexbereich
festlegen.
Deklarieren von Datenfeldern mit festgelegtem Indexbereich:
Dim Name (Indizes1[, Indizes2[,…]]) As Datentyp
Beispiel:
Dim LuftDistanz(5 To 10,10 To 20, 30) As Double
Wenn keine Untergrenze angegeben ist, wird die Vorgabe durch Option Base
vorausgesetzt.
58
Crash-Kurs in Excel VBA
Deklarieren von Datenfeldern
A.3.5
Operatoren
VBA verwendet die üblichen arithmetischen, Vergleichs-, Verkettungs- und logischen
Operatoren.
Operatoren (Zusammenfassung)
A.3.5.1
Arithmetische Operatoren zum Durchführen
mathematischer Berechnungen
= , + , - , * , / ,^ , \ , Mod.
Arithmetische Operatoren
A.3.5.2
Vergleichsoperatoren zum Durchführen von Vergleichen
= , > , >= , < , <= , <> , Like (Mustervergleich bei Zeichenketten), Is (vergleicht
Objekt-Variable).
Vergleichsoperatoren
A.3.5.3
Verkettungsoperatoren zum Aneinanderhängen von
Zeichenfolgen
& (Aneinanderhängen von Zeichenketten), + (Addition oder Verkettung zweier
Ausdrücke).
Verkettungsoperatoren
A.3.5.4
Logische Operatoren zum Durchführen logischer
Operationen
And; Or; Xor; Not;. Eqv (logische Äquivalenz); Imp (logische Implikation).
Logische Operatoren
59
Modellbasiertes Logistikmanagement
A.3.6
Kontrollstrukturen
Der folgende Abschnitt listet die Syntax zu den üblichen Kontrollstrukturen einer
Programmiersprache.
A.3.6.1
IF-Verzweigung
Verzweigungen 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 Aktion2
Block Syntax:
‘ Version 1
If Bedingung Then
Anweisungsblock1
Else
Anweisungsblock2
End If
‘ Version 2
If Bedingung1 Then
Anweisungsblock1
ElseIf Bedingung2
Anweisungsblock2
Else
Anweisungsblock3
End If
Mit Hilfe von Verschachtelungen können mit der Blockform mehrere Bedingungen
nacheinander durchgeführt werden. Das End If ist dabei zwingend erforderlich.
If …Then…Else-Anweisung
A.3.6.2
60
IIF-Verzweigung
Crash-Kurs in Excel VBA
Die IIf-Verzweigung ist eine abgewandelte Form der If-Verzweigung. Diese wertet
einen Ausdruck aus und gibt entweder den Wert für die korrekte oder für die falsche
Auswertung zurück.
IIf(Ausdruck, korrekt, falsch)
Iif-Funktion
A.3.6.3
For-Next-Schleife
Mit Hilfe der For-Next-Schleife kann ein Block von Anweisungen eine unbestimmte
Anzahl an Wiederholungen durchlaufen werden. Dabei wird eine Zählervariable
verwendet, die sich bei jedem Durchlauf erhöht oder verringert.
For Zähler = Anfang To Ende
Anweisung
[Exit For]
[Anweisung]
Next [Zähler]
For…Next-Anweisung
A.3.6.4
For-Each-Next-Schleife
Die For-Each-Next-Schleife wiederholt eine Gruppe von Anweisungen für jedes
Element in einem Datenfeld oder in einer Auflistung (von Objekten).
For Each Element In Gruppe
[Anweisung]
[Exit For]
[Anweisung]
Next [Element]
61
Modellbasiertes Logistikmanagement
For Each…Next-Anweisungen
A.3.6.5
Do-Until-Loop-Schleife
Durch die Do-Until-Loop-Schleife wird ein Block von Anweisungen solange
wiederholt, bis eine Bedingung den Status True erhält. Diese Bedingung wird jeweils
am Ende eines Durchlaufs geprüft.
Do Until Bedingung
Anweisung
[Exit Do]
[Anweisung]
Loop
Do…Loop-Anweisung
A.3.6.6
Do-While-Loop-Schleife
Diese Schleife funktioniert analog zur Do-Until-Loop-Schleife. Jedoch wird die
Bedingung immer zu Beginn der Schleife abgefragt.
Do While Bedingung
Anweisung
[Exit Do]
[Anweisung]
Loop
Do…Loop-Anweisung
A.3.6.7
Select Case-Anweisung
Die Select Case-Anweisung überprüft einen Ausdruck nach möglichen Werten und
führt anschließend eine oder mehrere Anweisungen durch.
62
Crash-Kurs in Excel VBA
Select Case Ausdruck
Case Auswahlwert1
[Anweisungsblock1]
Case Auswahlwert2
[Anweisungsblock2]
…
[Case Else
Anweisungsblock x]
End Select
Select Case-Anweisung
63
Modellbasiertes Logistikmanagement
A.4
Verwendung der verschiedenen Funktions-Arten in ExcelVBA 1
A.4.1
Die verschiedenen Funktions-Arten in Excel-VBA
In Excel-VBA gibt es drei Arten von Funktionen:
•
die benutzerdefinierte VBA-Funktionen, also die Function Prozeduren
innerhalb der VBA Syntax,
•
bereits vorinstallierte VBA-Funktionen, die dem kompletten Office-Paket und
damit auch Excel zur Verfügung stehen,
•
sowie die Excel-Funktionen, die innerhalb der Tabellenkalkulation aufgerufen
werden können und die im Register Formeln aufgelistet sind.
A.4.2
A.4.2.1
Benutzerdefinierte VBA-Funktionen
Verwendung in VBA-Prozeduren
Wenn bestimmte Berechnungen häufig wiederholt werden, ist es sinnvoll, dafür
spezielle Funktionen zu definieren, in logistischen Anwendungen beispielsweise für
die Entfernungsberechnung nach Luftlinie zwischen zwei Orten auf einer Landkarte
oder auf dem Globus.
Function dPythagoras(xA As Double, yA As Double, _
xB As Double, yB As Double) As Double
dPythagoras = Sqr((xA - xB) ^ 2 + (yA - yB) ^ 2)
End Function
Man beachte im Beispiel, dass die Parameter der Funktion in der FunctionAnweisung per Kommata getrennt werden.
Im Sinne eines guten Programmierstils ist übrigens immer auf eine saubere
Dimensionierung zu achten, für die Funktionen selbst, deren Parameter sowie die in
den Funktionen verwendeten Variablen.
1
Für eine ausgezeichnete Darstellung siehe
http://de.wikibooks.org/wiki/VBA_in_Excel/_Funktionen#Einsatz_von_benutzerdefinierten_Funktionen
_.28UDF.29 (Fassung vom 25.7.2013).
64
Crash-Kurs in Excel VBA
A.4.2.2
Verwendung in Arbeitsblättern
Nachdem man innerhalb der Entwicklungsumgebung eine Funktion in ein Modul
eingegeben hat, steht diese Excel als benutzerdefinierte Funktion zur Verfügung.
Function Mult7(x As Integer) As Integer
Mult7 = 7 * x
End Function
Klickt man im Register Formeln auf Funktion einfügen oder alternativ die
Shift + F3-Taste und wählt die Kategorie Benutzerdefiniert, so erhält man
beispielsweise:
Abbildung: Einfügen einer benutzerdefinierten Funktion
Hier ist darauf zu achten, dass für den Funktionsnamen keine in Excel belegten
Namen verwendet werden, im oberen Beispiel etwa würde der Name X7 zu einer
Fehlermeldung führen wegen des Konfliktes mit der gleichnamigen Zelle.
Besitzt eine Funktion mehrere Parameter, so werden diese beim Aufruf im
Tabellenblatt in der deutschsprachigen Excel Version nicht per Komma, sondern
mit Semikolon getrennt!
65
Modellbasiertes Logistikmanagement
Abbildung: Aufruf einer benutzerdefinierten Funktion mit mehreren Parametern
A.4.3
A.4.3.1
Vorinstallierte VBA-Funktionen
Verwendung in VBA-Prozeduren
Vorinstallierte Funktionen lassen sich - ob mit oder ohne Parameter – direkt in
Prozeduren aufrufen.
‘
‘ ohne Parameter
‘
Sub PathAct()
MsgBox CurDir
End Sub
‘
‘ mit Parameter
‘
Sub TypeAct()
MsgBox TypeName(ActiveSheet)
End Sub
In jeder neuen Excel-Version kommen neue VBA-Funktionen hinzu.
Für eine gewollt abwärtskompatible Anwendung ist deshalb zunächst zu prüfen, ab
wann die Funktion für VBA zur Verfügung gestellt wurde.
A.4.3.2
Verwendung in Arbeitsblättern
Unter anderem wegen der unterschiedlichen Sprachversionen lassen sich VBAFunktionen nicht direkt in Arbeitsblättern aufrufen. Schreibt man beispielsweise
66
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 einer
benutzerdefinierten Funktion „kapselt“ und damit so wie oben im Beispiel
dPythagoras das Ergebnis ins Tabellenblatt überträgt.
Function UmgebungsVariable()
UmgebungsVariable = Environ("Path")
End Function
Hat eine VBA-Funktion den gleichen Namen wie eine Excel-Funktion, so kann man
sie ohne Fehlermeldung in die Zellen eines Arbeitsblattes eingetragen werden, wobei
mehrere Parameter wieder anstatt per Komma per Semikolon getrennt werden. Doch
hier ist Vorsicht geboten: Trotz Namensgleichheit können Excel- und VBAFunktionen zu unterschiedlichen Ergebnissen führen (siehe z. B. die Trim-Funktion).
A.4.4
Excel-Funktionen
A.4.4.1
Besonderheiten von Excel-Funktionen
Sprachversion
Excel-Funktionen werden unabhängig von der Sprachversion1 intern von Excel
immer in ihre englischsprachige Originalversion übertragen und so verarbeitet. Die
deutschen Funktionsnamen werden also intern immer übersetzt, aus einem
Trennsemikolon bei Parameteraufzählungen wird ein Komma, ein Dezimalkomma
bei unseren Zahlenangaben zu einem angelsächsischen Dezimalpunkt, usw.
Eine Gegenüberstellung eines Teils der deutschen und englischen Begriffe befindet
sich im Installationsverzeichnis von Office in der Datei VBAListe.xls. Sehr hilfreich
ist für diesen Zweck im Internet der Excel-Formel-Übersetzer unter http://de.exceltranslator.de.
Absolute oder relative Bezugsart
1
Hier wird grundsätzlich von einer deutschsprachigen Excel-Version ausgegangen.
67
Modellbasiertes Logistikmanagement
Eine weitere Besonderheit der Excel-Funktionen, dass ihre Parameter mit absolutem
oder 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 die
Spalten durchnummeriert sind. Dafür hat Excel das Z1S1-Bezugssystem in der
deutschen Version bzw. das R1C1-Bezugssystem in der englischsprachigen
Originalversion. Unter der Registerkarte Datei  Optionen  Formeln kann man
diese Bezugsart übrigens einstellen.
REFERENZ
REFERENZ
(DEUTSCH)
(ENGL.)
BEDEUTUNG
Ein relativer Bezug auf die Zelle, die sich in
derselben Spalte zehn Zeilen über der
aktiven Zelle befindet.
Ein relativer Bezug auf die Zelle, die sich
zehn Zeilen unter und fünf Spalten rechts
von der aktiven Zelle befindet.
Ein absoluter Bezug auf die Zelle, die sich
in der zehnten Zeile und in der fünften
Spalte befindet.
Z(-10)S
R[-10]C
Z(10)S(5)
R[10]C[5]
Z10S5
R10C5
Z(-1)
R[-1]
Ein relativer Bezug auf die gesamte Zeile
oberhalb der aktiven Zelle.
Z
R
Ein absoluter Bezug auf die aktuelle Zeile.
Tabelle: Relative und absolute Positionsangaben im Z1S1- bzw. R1S1-Bezugssystem
Z1S1-Bezugsart
A.4.4.2
Verwendung in VBA-Prozeduren
Die Excel-Tabellenfunktionen können in ihrer englischen Originalbezeichnung
auch in VBA eingesetzt werden. Dazu muss man sie zunächst aber als solche
kenntlich machen, indem ihnen ein Application oder ein WorksheetFunction
voranstellt wird.
68
Crash-Kurs in Excel VBA
Bei der Verwendung von WorksheetFunction bietet der Editor Hilfestellungen für
die Auswahl der Funktionen und deren Argumente an.
Application ist vorteilhaft für den Zweck der Abwärtskompatibilität von ExcelVersionen und für die Rückgabe von Fehlerwerten.
‘ ohne Editierhilfe
Public Sub Average_Beispiel1()
Dim Bereich As Range
Set Bereich = Sheets("Tabelle1").Range("A1:A10")
MsgBox Application.Average(Bereich)
End Sub
‘ mit Editierhilfe
Public Sub Average_Beispiel2()
Dim Bereich As Range
Set Bereich = Sheets("Tabelle1").Range("A1:A9")
MsgBox WorksheetFunction.Average(Bereich)
End Sub
Public Sub Average_Beispiel3()
Dim Bereich As Range
Set Bereich = Sheets("Tabelle1").Range("A1:A8")
MsgBox Application.WorksheetFunction.Average(Bereich)
End Sub
A.4.4.3
VBA-Befehle für die Zellenbelegung in Arbeitsblättern
Value: Eintrag eines absoluten Wertes
‘ Die Zelle B1 erhält den Wert der Funktion
Sub Average_Value()
Dim Bereich As Range
Set Bereich = Sheets("Tabelle1").Range("A1:A10")
Cells(1,2).Value = WorksheetFunction.Average(Bereich)
End Sub
Formula: Eintrag einer Formel mit absolutem Zellbezug
‘ Die Zelle B2 erhält die Formel =MITTELWERT(A1:A10)
‘ Die Bereichsangabe erfolgt absolut
Sub Average_AbsoluteFormel()
Range("B2").Formula = "=AVERAGE(A1:A10)"
End Sub
69
Modellbasiertes Logistikmanagement
FormulaR1C1: Eintrag einer Formel mit relativem Zellbezug
‘ Die Zelle B3 erhält die Formel =MITTELWERT(A1:A10)
‘ Die Bereichsangabe erfolgt relativ zu B3
Sub Average_RelativeFormelA()
Range("B3").Select
Range("B3").FormulaR1C1 = "=AVERAGE(R[-1]C[-1]:R[7]C[-1])"
End Sub
Der relative Bezug wird in eckigen Klammern bei den Rows und Columns
angegeben. 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 B4
Sub Average_RelativeFormelB()
Range("B4").Select
Range("B4").FormulaR1C1 = "=AVERAGE(R1C[-1]:R10C[-1])"
End Sub
Der absolute Bezug wird ohne Klammern bei den Rows und Columns angegeben.
FormulaLocal: Eintrag einer Formel in deutscher Syntax
Möchte man nicht auf die deutsche Syntax verzichten, so kann man die
FormulaLocal-Eigenschaft verwenden. Damit ist es möglich, Tabellenfunktionen so
anzugeben, 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 C2
Sub Average_AbsoluteFormelLocal()
Range("C2").FormulaLocal = "=MITTELWERT(A1:A10)"
End Sub
FormulaLocalR1C1: Eintrag einer Formel in deutscher Syntax mit relativem
Zellbezug
70
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 C3
Sub Average_RelativeFormelALocal()
Range("C3").Select
Range("C3").FormulaR1C1Local = "=MITTELWERT(Z(-2)S(-2):Z(7)S(-2))"
End Sub
Man beachte in der FormulaR1C1Local-Schreibweise die runden anstelle der
eckigen 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 C4
Sub Average_RelativeFormelBLocal()
Range("C4").Select
Range("C4").FormulaR1C1Local = "=MITTELWERT(Z1S(-2):Z10S(-2))"
End Sub
Grundsätzlich sollte mit Formula gearbeitet und FormulaLocal gemieden werden,
um problemlos Makros austauschen zu können.
A.5
Verwendung von Objekten in Excel-VBA
Objekte bilden das Gerüst der Office-Anwendungen. Sie stellen die wichtigen
Elemente 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 zur
Verfügung. Vollständige Auflistungen mit Details und Beispielen zu den aktuell
gültigen Objekten findet man im Objektkatalog und in der
Excel-Hilfe 
Excel2010-Entwicklerreferenz  Excel-Objektmodellreferenz. Wir werden hier
nur die wesentlichen Aspekte des Excel Objektmodells behandeln.
71
Modellbasiertes Logistikmanagement
A.5.1
Begriffsklärung
Im Rahmen der objektorientierten Programmierung sind Objekte Abstraktionen von
Dingen der realen Welt. Einem Objekt ordnet man Eigenschaften, Methoden,
Ereignisse sowie Unterobjekte zu.
Eigenschaften (auch Attribute) sind die Merkmale eines Objektes. Sie werden durch
Zustandsvariablen ausgedrückt. Werden Eigenschaften verändert, so ändert sich das
Verhalten oder das Erscheinungsbild. Sobald ein Objekt eine konkrete Ausprägung
erhalten hat, (es instanziiert wurde), können die Eigenschaften abgefragt und ggf.
festgelegt werden. Einige Eigenschaften sind schreibgeschützt und können daher
nur gelesen, aber nicht geändert werden.
Methoden (engl. methods) beschreiben einen Vorgang bzw. eine Tätigkeit, die mit
einem Excel-Objekt ausgeführt werden kann, um dessen Eigenschaften zu ermitteln
oder zu verändern. Wenn man Objekte als Substantive und Eigenschaften als
Adjektive in einem Satz sieht, sind Methoden die Verben, mit denen ausgedrückt
werden kann, was das Substantiv macht.
Klassen sind die Zusammenfassung der Eigenschaften und Methoden von
Objekten. Sie stellen damit also einen Objekttyp dar, der sich von anderen
Objekttypen durch die Menge und die Art seiner Eigenschaften und Methoden
unterscheidet. Die Begriffe Objekt und Klasse werden bei Microsoft teilweise leider
synonym verwendet, was manchmal zur Verwirrung beiträgt. In Rahmen der
objektorientierten Programmierung wäre eine Klasse aber eine Vorlage, sozusagen
ein Bauplan, oder eine Schablone, für die Erstellung eines konkreten Objekts mit
konkreten Eigenschaften. Dieses konkrete Objekt besitzt dann alle grundsätzlichen
Eigenschaften und Methoden der Klasse. Man spricht bei einer solchen
Konkretisierung auch von einer Instanz der Klasse und nennt den Prozess
Instanzierung 1.
Ereignisse sind Zustandsbeschreibungen eines Objektes, auf die mit bestimmten
Programmabläufen, den Ereignisprozeduren reagiert wird. Die Ereignisse können
1
Man findet auch die Schreibweise Instanziierung. Dem wird hier Instanzierung im Sinne der neuen
Rechtschreibung vorgezogen.
72
Crash-Kurs in Excel VBA
durch
systemexterne
Aktionen
(Mausklicks,
Tastatureingaben,
etc.)
oder
systeminterne Aktionen (Variablen erhalten bestimmte Werte) ausgelöst werden. Das
kann im Rahmen der Excel Objekthierarchie auf den drei Ebenen Application,
Workbook und Worksheet geschehen. Welche Ereignisse für diese Ebenen
verfügbar sind, kann im Objektkatalog nachgeschlagen werden. Ereignisse sind
entweder auf eine einzige Ebene begrenzt oder sind auf mehreren Ebenen
verfügbar.
A.5.2
Schreibweisen
Zur ausführlichen Bezeichnung eines Objektes, einer Methode, einer Eigenschaft
oder eines Ereignisses benutzt man die Schreibweise:
Objekt[.Unterobjekt…][.Methode | .Eigenschaft | .Ereignis ]
Bei dieser Schreibweise muss in Excel VBA aber nicht immer die vollständige
Auflistung mit dem Objektbezeichner erfolgen, wenn aus dem Zusammenhang klar
ist, worauf man sich bezieht oder wenn Grundeinstellungen (Default-Werte) genutzt
werden. Befindet man sich beispielsweise in der Prozedur eines Eingabeformulars
mit dem Namen UserForm1, so ist die Standardeinstellung für die Eigenschaft einer
TextBox „Text“. Dann kann man alternativ schreiben:
Beispiel
UserForm1.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 Objektes
hintereinander verarbeitet werden. Dann kann man folgende Schreibweise benutzen:
73
Modellbasiertes Logistikmanagement
With Objektname
.Eigenschaft1 = Wert
.Eigenschaft2 = Wert
.Eigenschaft3 = Wert
…
.Methode1([Parameterliste1]
.Methode2([Parameterliste2]
.Methode3([Parameterliste3]
…
End With
A.5.3
Objektlisten
Microsoft unterscheidet grundsätzlich zwischen Auflistungen von Objekten und den
Objekten an sich. Objekte kann man in Auflistungen verwalten und werden
traditionell in Listen ablegen, die den Namen des Objekts tragen, gefolgt von einem
Plural-„s“, z. B. Workbooks für die Workbook-Objekte oder Worksheets bei den
Worksheet-Objekten. Innerhalb dieser Auflistungen können Objekte über einen
Namen 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-Auflistung
verwendet.
ActiveWorkbook.Windows(1).Caption = "Tourenplan"
ActiveWorkbook.Windows("Tourenplan").ActiveSheet.Calculate
Solche Objektlisten lassen sich auch für eigene Objekte mithilfe der Klasse
Collection erstellen.
Collection (innerhalb der VBA Bibliothek)
A.5.4
Objektvariablen
Mit der Dim-Anweisung kann Variablen der Datentyp Objekt zugewiesen werden.
74
Crash-Kurs in Excel VBA
Dim Objektvariable As Objekt
Die Zuweisung von Objekten an Variable geschieht nicht über „=“ sondern über die
Set-Anweisung:
Set Objektvariable = Objektausdruck
Fü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. Damit
kann man Schreibarbeit ersparen.
Set myObject = ActiveWorkbook
MsgBox myObject.Sheets(2).Name
A.5.5
Das Excel Objektmodell
Programmierobjekte werden in der Hierarchie des Objektmodells der Anwendung
organisiert und spiegeln so grob die Programmoberfläche wider.
Range
Application
Worksheet
[...]
Workbook
[...]
[...]
[...]
[...]
[...]
Abbildung: Excel Objektmodell
Dabei bedeutet:
75
Modellbasiertes Logistikmanagement
•
Application Object
die gesamte Excel-Anwendung
•
Workbook Object
die Excel-Arbeitsmappe
•
Worksheet Object
ein Tabellenblatt
•
Range Object
ein
Zellenbereich
bestehend
aus
einer
oder
mehreren Zellen
A.5.5.1
Das Application-Objekt
Das Application-Objekt stellt die Excel-Anwendung selbst dar und somit die höchste
Ebene der Excel-Objekthierarchie. Neben zahlreichen Informationen über die
laufende
Anwendung
(die
derzeit
geöffneten
Benutzer-Objekte)
werden
Einstellungen und Optionen zur Verfügung gestellt, die sich auf die gesamte
Anwendung auswirken, ebenfalls Methoden, die Objekte der obersten Ebene
zurückgeben.
Viele Eigenschaften und Methoden des Application-Objekts sind global. Bei der
Schreibweise muss deshalb nicht der Objektbezeichner Application mit angegeben
werden. Gleiches gilt für Eigenschaften und Methoden, die gängige Objekte der
Benutzeroberfläche zurückgeben (z.B. ActiveCell, ActiveSheet).
Application-Object
Um Excel von „außen auf zu rufen“, wird die Activate-Eigenschaft hinsichtlich eines
Window oder Workbook-Objektes verwendet:
Application.Windows("VBATest.xlsx").Activate
'oder
Application.Workbooks("VBATest.xlsx ").Activate
A.5.5.2
Das Workbook-Objekt
Mit dem Workbook-Objekt wird auf eine einzelne Arbeitsmappe zugegriffen, also die
gespeicherte Excel-Datei. Soll ein Workbook-Objekt aus der Liste der Workbooks
76
Crash-Kurs in Excel VBA
ausgewählt werden, so geschieht das in der Regel durch die Angabe des
Dateinamens.
Workbooks(“VBATest.xlsx”).Activate
Workbook-Objekt, Workbooks-Objekt
A.5.5.3
Das Worksheet-Objekt
Worksheet-Objekte sind die einzelnen Tabellenblätter einer Excel-Anwendung. Sie
können über die Worksheets-Auflistungen per Name oder Index aufgerufen werden:
Worksheets("Tabelle1").Activate
‘oder
Worksheets(1).Activate
Worksheet-Objekt; Worksheets-Objekt
A.5.5.4
Das Range-Objekt
Das Range-Objekt ist die wichtigste Abstraktion eines Worksheet-Objekts. Mit
diesem
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 mit
Columns.
Ein Cell-Object gibt es übrigens nicht in der Excel-Objekthierarchie, dafür kann man
aber die Cells-Eigenschaft des Range-Objektes nutzen.
Range-Objekt, Ranges-Objekt
77
Modellbasiertes Logistikmanagement
A.5.6
Spezielle Verwendungen des Excel Objektmodells
In diesem Abschnitt werden auf der Grundlage von Excel-Objekten ein paar wichtige
praktische Vorgehensweisen für die Ablaufsteuerung und die Navigation innerhalb
von Tabellen zusammengefasst. Eine umfangreichere Übersicht über die wichtigsten
Excel-Objekte liefert Anhang D.
A.5.6.1
Positionierung in Range-Objekten
Im Excel A1-Standardformat (max. 65536 Zeilen als Zahlen 1, 2, 3, …; max. 256
Spalten 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 der
Adresse links oben und der Adresse rechts unten, z.B. “D4:F14“ oder
•
ein allgemeiner Zellbereich durch eine per Kommata getrennte Liste
mehrerer 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 SyntaxVersionen:
Objekt.Range(Zellbereich)
Objekt.Range(Zellbereich1, Zellbereich2)
Die erste Syntax-Version arbeitet mit einem einzigen Zellbereich, der im
Standardformat angegeben ist. Bei der zweiten Syntax-Variante stellt Zellbereich1
die linke obere Ecke und Zellbereich2 die rechte untere Ecke des Bereiches dar.
Zellbereich1 und 2 können Adressen von Einzelzellen oder allgemeine Zellbereiche
sein. Bei Überschneidung wird die Vereinigungsmenge genommen.
78
Crash-Kurs in Excel VBA
Worksheets(“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.2
Positionierung mit der Cells-Eigenschaft
So wie das R1C1-Format bei den Funktionen ist es für die Berechnung von
Zelladressen und für die Benutzung von Variablen für Zelladressen vorteilhaft, für die
Zeilen und Spalten eines Tabellenblattes Zahlen zu verwenden.
Mit der Cells-Eigenschaft von Range-Objekten gibt es dann folgende SyntaxVarianten:
Objekt.(Cells(Row1,Column1), Cells(Row2,Column2))
Objekt.Cells(Row,Column)
Objekt.Cells
In der ersten Variante ist wieder die obere linke Ecke bis zur unteren rechten Ecke
gemeint, in der zweiten das angegebene Element. Die dritte Variante gibt alle Zellen
des Tabellenblattes an.
A.5.6.3
Cursorposition feststellen
ActiveCell ist eine Eigenschaft des Application-Objekts, die eine Range-Objekt
zurück gibt. ActiveSheet gibt als Eigenschaft von Application den Namen der aktiven
Tabelle zurück oder legt ihn fest. Damit kann man die aktuelle Cursorposition
ermitteln:
•
ActiveCell.Address
Adresse der aktiven Zelle des aktiven Tabellenblattes
79
Modellbasiertes Logistikmanagement
•
ActiveCell.Row
Zeilennummer der aktiven Zelle des aktiven Tabellenblattes
•
ActiveCell.Column
Spaltennummer der aktiven Zelle des aktiven Tabellenblattes
•
ActiveCell.Parent.Name
Name der Tabelle mit der aktiven Zelle des aktiven Tabellenblattes
•
ActiveSheet.Parent.Name
Name der Arbeitsmappe des aktiven Tabellenblattes
A.5.6.4
Zellen, Zellbereiche, Zeilen, Spalten gezielt auswählen
Nachdem man ein Arbeitsblatt ausgewählt hat, können einzelne Zellen mit dem
Range-Objekt über Activate markiert werden, also der Cursor gesetzt werden.
Für Zellbereiche benutzt man Select, Zeilen und Spalten werden ebenfalls über
Select markiert.
Range(Zellbereich).Select
Cells(RowIndex,ColumnIndex).Select
Rows(RowIndex).Select
Columns(ColumnIndex).Select
Beispiele:
Worksheets(“Tabelle1”).Activate
Range(“C2:F14”).Select
Range(“B2”).Activate
Rows(17).Select
Columns(19).Select
A.5.6.5
80
Relatives Versetzen von Bereichen und Cursor
Crash-Kurs in Excel VBA
Offset ist eine Eigenschaft des Range-Objektes, das einen Bereich darstellt, der
gegenüber dem angegebenen Bereich versetzt ist.
Rangeobjekt.Offset(rowOffset,columnOffset)
rowOffset
(optional):
Anzahl
der
(positiv), 0, oder bei negative Werten
columnOffset (optional): Anzahl der
(positiv), 0, oder bei negative Werten
Versatzzeilen
nach oben.
Versatzspalten
nach links.
nach
unten
nach
rechts
Beispiel
‘ Cursor 4 nach unten und 2 nach links
Worksheets(“Tabelle1”).Activate
Range.Offset(rowOffset,columnOffset)
ActiveCell.Offset(4,-2)
‘ oder
ActiveCell.Offset(rowOffset:=4, columnOffset:=-2)
A.5.6.6
Bereichsnamen vergeben mit Name-Eigenschaft
Mithilfe der Namensvergabe an Zellenbereiche lässt sich die Schreibweise in vielen
Fällen übersichtlicher gestalten.
‘ Namensvergabe
Range(”A1”).Name = “Km_pro_Std”
Range(Cell(1,2)).Name = “kWh”
‘Wertzuweisung
Range(“km_pro_Std”) = 60
‘ Löscht den Namen wieder:
Range(”Km_pro_Std”).Name.Delete
81
Modellbasiertes Logistikmanagement
A.5.6.7
Wertzuweisungen mit Value-Eigenschaft
Range(”A1”).Value = “Die Antwort aller Fragen”
‘ auch:
Range(”A1”) = “Die Antwort aller Fragen”
‘
Range(Cell(1,2)).Value = 42
‘ auch:
Range(Cell(1,2)) = 42
Als Default-Wert kann die Angabe „Value“ zu einem Range-Objekt entfallen.
A.5.6.8
Formeln eintragen mit der Formula-Eigenschaft
Range(”A1”).Formula = “= A2 + A3”
‘
Sheets(“Tabelle1”).Cells(1,1)).Formula = “= A2 + A3”
‘ auch:
ActiveCell.Formula = “= A2 + A3”
A.5.6.9
Formatierung von Zellbereichen
Hinsichtlich der Zellformatierung können Schrifttypen, Rahmen und Farben vergeben
werden.
Die allgemeine Syntax lautet:
‘Schrifttypen
Range.Font.Eigenschaft = Wert
'Rahmen
Objekt.Borders
Objekt.Borders(Index)
82
Crash-Kurs in Excel VBA
‘Hintergrundfarben Rahmenfarben Schriftfarben
Range.Interior.ColorIndex = Wert
Range.Borders.ColorIndex = Wert
Range.Font.ColorIndex = Wert
‘oder mit Mischfarben
Range.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 Objektes
A.5.6.10
Löschen von Zellbereichen
Es gibt unterschiedliche Möglichkeiten, Zellen oder Zellinhalte zu löschen. Die
einfachste Möglichkeit im angegeben Bereich alle Einträge und Formatierungen zu
löschen geht über die Clear-Methode eines Range-Objektes:
Range(Zellbereich).Clear
A.5.7
Erstellung eigener Klassen
A.5.7.1
Definition einer Klasse
Für die Definition eigener Klassen wird in VBA das Klassenmodul verwendet. Dieses
besondere Modul dient als Container für die Definition von Eigenschaften und
Methoden
einer
Klasse.
Der
Name
des
Klassenmoduls
lässt
sich
im
Eigenschaftenfenster einstellen. Nach der Definition einer Klasse wird diese auch im
Objektkatalog aufgeführt.
Das Attribut Instancing ist standardmäßig auf Private gesetzt, so dass die
Definitionen in dieser Klasse nur auf das Modul beschränkt sind.
A.5.7.2
Eigenschaften
83
Modellbasiertes Logistikmanagement
Die im Modulkopf einer Klasse deklarierten Variablen sind Eigenschaften der Klasse.
Auf Private deklarierte Variable/Eigenschaften können nur Methoden der eigenen
Klasse zugreifen. Eine mit Public deklarierte Variable/Eigenschaft kann von jedem
Objekt und jeder Prozedur aus gelesen und verändert werden.
Public Bereich As String
Um Eigenschaftswerte nur auslesen aber nicht verändern zu können, kann man
Public Functions benutzen:
Public Function Bereich() As String
Bereich = “A1:B10”
End Function
Eine weitere Möglichkeit zur Definition von Eigenschaften ist durch die schon
dargestellten Property-Prozeduren gegeben, die beim Zugriff auf die Eigenschaft
ausgeführt werden. Der Rumpf dieser Prozeduren wird beim Anlegen einer neuen
Prozedur - wie ebenfalls schon beschrieben - automatisch erzeugt:
[Public | Private] [Static] Property {Get | Let | Set}
Eigenschaftsname [(Argumente)] [As Typ]
Anweisungen
End 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 herstellt
Property-Prozeduren treten normalerweise paarweise auf: Property Let mit
Property Get und Property Set mit Property Get. Wird nur eine Property GetProzedur deklariert, so ist die Eigenschaft schreibgeschützt.
84
Crash-Kurs in Excel VBA
Im Gegensatz zu Public-Variablen können Property-Prozeduren im Objektkatalog
durch Texte beschrieben werden.
In der Regel sollten Eigenschaften als Private deklariert werden. Zugriff auf
Eigenschaften sollte nur durch als Public deklarierte Methoden möglich sein.
A.5.7.3
Methoden
Die Methoden der Klasse werden im Klassenmodul im Anschluss an die
Eigenschaften als Sub- oder Function-Prozedur mit den Zugriffsmöglichkeit Public
oder Private deklariert. Auf Private deklarierte Methoden kann nur innerhalb der
eigenen Klasse zugegriffen werden, auf Public deklarierte Methoden von jedem
Objekt und jeder Prozedur aus.
A.5.7.4
Spezielle Ereignisprozeduren: Konstruktor und
Destruktor
Wählt man im Code-Fenster im Objekt-Feld den Eintrag Class, so erscheinen
Programmgerü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 jeder
Instanzierung eines Objektes dieser Klasse wird automatisch der Konstruktor
gestartet, vor jeder Löschung eines Objektes dieser Klasse der Destruktor. Als
Private-Prozeduren können sie nicht von außen aufgerufen werden. Im Konstruktor
können Eigenschaften der Klasse auf Anfangswerte gesetzt werden, im Destruktor
Aufräumarbeiten durchgeführt werden, beispielsweise dynamisch diejenigen Objekte
gelöscht werden, die durch die Instanz erzeugt wurden.
Private Sub Class_Initialize()
End Sub
Private Sub Class_Terminate()
End Sub
85
Modellbasiertes Logistikmanagement
A.5.8
Erzeugung neuer Objekte
Um die angelegten Funktionalitäten einer Klasse nutzen zu können, müssen von der
Klasse Instanzen, also die Objekte gebildet werden. Aus jeder Klasse können
beliebig viele1 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 Klassenname
Das Schlüsselwort New kann je nach Gültigkeitsbereich und Lebensdauer
entsprechend auch im Zusammenhang mit Private, Public, Set und Static benutzt
werden.
New
Das Objekt wird mit der Deklarationsanweisung noch nicht erzeugt.2 Erst der Zugriff
auf irgendeine Eigenschaft oder Methode der Objektvariablen lässt das Objekt
tatsächlich im Speicher entstehen. Greift man nicht auf das Objekt zu, wird auch
keine Instanz erzeugt. Um die sofortige Objekterzeugung zu erzwingen3, kann man
auch die Methode der frühen Bindung für die Instanzierung verwenden:
Frühe Bindung:
Dim Objektvariable As KlassenName
Set Objektvariable As New KlassenName
1
Natürlich begrenzt durch den zur Verfügung stehenden Speicherplatz
2
Was aus Platzgründen manchmal als vorteilhaft erscheint.
3
Was aus Laufzeitgründen manchmal als vorteilhaft erscheint.
86
Crash-Kurs in Excel VBA
Alternativ gibt es auch noch die Methode der späten Bindung. Der Objektvariable
wird zunächst der allgemeine Datentyp Object zugewiesen und dann später der
konkrete Objekttyp, also die Klasse zugewiesen:
Späte Bindung:
Dim Objektvariable As Object
…
…
Set Objektvariable As New KlassenName
Bei der frühen Bindung kann man als Programmierer den Vorteil von IntelliSense
nutzen. Bei der späten Bindung kann man nutzen, dass die Variable jeden beliebigen
Objekttyp aufnehmen kann, sogar unterschiedliche Typen nacheinander.
A.5.9
Entfernen von Objekten
In VBA muss ein Objekt nicht explizit gelöscht werden. Objekte in nicht als Static
deklarierten Prozeduren werden automatisch aus dem Speicher entfernt. Gleiches
gilt, falls keine Variable mehr auf das Objekt zeigt. Das ist beispielsweise dann der
Fall, wenn mit dem Set-Befehl eine Objektvariable, die vorher dem betreffenden
Objekt 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 KlassenName2
Set Objektvariable = Nothing
A.5.10 Erstellung von Ereignisprozeduren
A.5.10.1
Allgemeine Ereignisprozeduren
87
Modellbasiertes Logistikmanagement
Ereignisprozeduren reagieren auf Ereignisse, die durch externe oder interne
Programmaktionen ausgelöst werden. Sie sind für alle beliebigen geöffneten Blätter
oder Arbeitsmappen verfügbar und machen nur in Klassen einen Sinn.
Der Prozedurname setzt sich bei Microsoft traditionell aus dem Klassennamen
verbunden mit dem Ereignisnamen über einen Unterstrich zusammen, z. B.
Worksheet_Change. Man findet diese Ereignisprozeduren in dem Klassenmodul
eines Tabellenblattes. Das erhält man durch Rechtsklick auf Tabellenreiter und
Code anzeigen wählen.
A.5.10.2
Eigene Ereignisprozeduren
In Microsoft Excel können Ereignisprozeduren auf der Ebene von
•
Arbeitsblatt,
•
Diagramm,
•
Abfragetabelle,
•
Arbeitsmappe oder
•
Anwendung
erstellt werden.
Ereignisse können dabei auf mehreren Ebenen auftauchen. So tritt beispielsweise
das Activate-Ereignis nur auf der Blattebene ein. Das SheetActivate-Ereignis ist
dagegen sowohl auf der Arbeitsmappen- als auch auf der Anwendungsebene
verfügbar: für eine Arbeitsmappe, wenn ein beliebiges Blatt der Arbeitsmappe
aktiviert wird, auf der Anwendungsebene, wenn ein beliebiges Blatt in einer
beliebigen Arbeitsmappe geöffnet wird.
Die vorgenannten eingebauten Excel-Klassen können mit ihren Ereignissen in neue
Klassen eingebunden werden. Sinnvoll ist dies beispielsweise, wenn eine
Worksheet_Change-Ereignisprozedur allgemeingültig werden soll und sich so nicht
nur auf die Arbeitsmappe beschränkt, in der sich der Code befindet.
A.5.10.3
88
Objekt mit WithEvents erstellen
Crash-Kurs in Excel VBA
Um Ereignisprozeduren für ein Diagramm, eine QueryTable-Objekt oder ein
Application-Objekt zu schreiben, muss unter Verwendung des Schlüsselwortes
WithEvents in einem Klassenmodul zunächst ein neues Objekt erstellt werden:
[Dim | Public | Private] WithEvents Objektvariable As Klassenname
Das Schlüsselwort WithEvents gibt an, dass die Objektvariable auf Ereignisse
reagieren kann, die von einem ActiveX-Objekt wie einer Befehlsschaltfläche oder
einem Textfeld ausgelöst wurden. Eine solche Deklaration ist auf Klassenmodule
beschränkt und die betreffende Klasse muss dabei natürlich Ereignisse auslösen. Mit
WithEvents können beliebig viele Variablen deklarieren werden, jedoch keine
Datenfelder. Instanzierung mit New kann nicht zusammen mit WithEvents
verwendet werden.
WithEvents
A.5.10.4
Deklaration einer Objektvariablen vom Typ Application
Das Application-Objekt bietet eine Vielzahl von Ereignissen der Excel-Anwendung
an, die ausgewertet werden können. Bevor man jedoch ein Ereignis mit dem
Application-Objekt verwenden kann, muss
•
ein Klassenmodul, beispielsweise mit dem Namen EventClassModule erstellt
•
und für Ereignisse ein Objekt, beispielsweise mit dem Namen App, vom Typ
Application deklariert werden.
Das neue Klassenmodul enthält dann den folgenden Code:
Public WithEvents App As Application
Das neue Objekt wird durch den VisualBasic Editor im Klassenmodul dann im
Dropdown-Listenfeld Objekt angezeigt. Wählt man das neue Objekt App im
Anzeigefeld Objekt aus, so werden die gültigen Ereignisse für dieses Objekt im
Dropdown-Listenfeld Prozedur angezeigt.
89
Modellbasiertes Logistikmanagement
A.5.10.5
Eingabe des Programmcodes für die Ereignisprozedur
Nun können Ereignisprozeduren für das neue Objekt in Abhängigkeit von
Ereignissen hinzugefügt werden. Mithilfe der EnableEvents-Eigenschaft können
dabei Ereignisse gezielt aktiviert und deaktiviert werden.
Beispielsweise führt das Speichern einer Arbeitsmappe mit der Save-Methode zum
Auftreten
des
BeforeSave-Ereignisses.
Das
Aufrufen
der
zugehörigen
Ereignisprozedur kann verhindert werden, indem die EnableEvents-Eigenschaft auf
False gesetzt wird, bevor die Save-Methode aufgerufen wird.
Beispiel
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
A.5.10.6
Ausführen der Ereignisprozedur
Bevor schließlich Prozeduren ausgeführt werden können, muss das deklarierte
Objekt im Klassenmodul mit dem Application-Objekt verbunden werden. Dazu kann
folgender Code verwendet werden:
Dim X As New EventClassModule
Sub InitializeApp()
Set X.App = Application
End Sub
Nachdem die Prozedur InitializeApp ausgeführt wurde, zeigt das App-Objekt im
Klassenmodul auf das Application-Objekt von Excel. Außerdem werden die
Ereignisprozeduren im Klassenmodul ausgeführt, sobald ein Ereignis eintritt.
90
Übersicht über die vorinstallierten VBA-Funktionen
B Übersicht über die vorinstallierten VBA-Funktionen
Dieses Kapitel gibt eine Schnell-Übersicht zu den vorinstallierten VBA-Funktionen
nach Sinnzusammenhängen. Die detaillierte Syntax zu den einzelnen Funktionen
nebst Beispielen findet man in der Excel-Hilfe, Hilfe für Entwickler unter dem Visual
Basic Sprachverzeichnis
Funktionen.
Datums- und Zeitfunktionen 1
B.1
FUNKTION
BESCHREIBUNG
CDate
Wandelt eine Zeichenfolge in einen Datumswert um
Date
Gibt das aktuelle Systemdatum aus
DateAdd
Liefert einen Wert zurück, der ein Datum erhält, zu dem ein
bestimmtes Zeitintervall addiert wurde
DateDiff
Gibt einen Wert zurück, der die Anzahl der Zeitintervalle
zwischen zwei bestimmten Terminen angibt
DatePart
Liefert einen Wert zurück, der einen bestimmten Teil eines
angegebenen Datums enthält
DateSerial
Liefert einen Wert zurück, der die angegebene Jahres-,
Monats- und Tageszahl enthält
DateValue
Wandelt eine Zeichenfolge in einen gültigen Datumswert um
Day
Extrahiert den Tag als ganzzahligen Wert (1-31) aus einem
Datumswert
FileDateTime
Liefert das Erstellungsdatum bzw. Änderungsdatum einer
Datei zurück.
FormatDateTime
Formatiert Systemkonstanten in Datums um
1
Siehe Held(2004), Seite 91.
91
Modellbasiertes Logistikmanagement
FUNKTION
BESCHREIBUNG
Hour
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)
MonthName
Liefert die Zeichenfolge des Monats zurück
Now
Liefert das Systemdatum inklusive der Uhrzeit
Second
Gibt die Sekunden aus dem Datumswert zurück
Timer
Gibt einen Wert vom Typ Single zurück, der die Anzahl der
seit Mitternacht vergangenen Sekunden angibt
TimeSerial
Setzt einen Datums-/Zeitwert aus Ganzzahlwerten
(Sekunden, Minuten, Stunden) zusammen
TimeValue
Wandelt eine Zeichenfolge in einen gültigen Zeitwert um
Weekday
Gibt den Wochentag aus einem Datumswert zurück
WeekdayName
Gibt den Wochentag als Zeichenfolge aus einem Datumswert
zurück
Year
Nummerischer Ausdruck, der einen Zeichenfolgenausdruck
oder eine beliebige Kombination als Datum darstellen kann
Tabelle: Datums- und Zeitfunktionen
B.2
1
Textfunktionen 1
Siehe Held(2004), Seite 122.
92
Übersicht über die vorinstallierten VBA-Funktionen
FUNKTION
BESCHREIBUNG
ASC
Gibt einen Integer-Wert zurück, der den Zeichencode
entsprechend dem ersten Buchstaben in einer Zeichenfolge
darstellt
Choose
Wählt einen Wert aus einer Liste von Argumenten aus und
gibt ihn zurück
Chr
Gibt einen Wert vom Typ String zurück, der das Zeichen
enthält, das dem angegebenen Zeichen-Code zugeordnet ist
InStr
Gibt die Position des ersten Auftretens einer Zeichenfolge
innerhalb einer anderen Zeichenfolge zurück
InStrRev
Gibt die Position einer Zeichenfolge in einer anderen
Zeichenfolge von der hinteren Position an
Join
Gibt eine Zeichenfolge zurück, die sich aus der Kombination
einer Reihe von untergeordneten Zeichenfolgen ergibt, die in
einem Datenfeld enthalten sind
LCase
Wandelt Großbuchstaben in Kleinbuchstaben um
Left
Len
Mid
Replace
Right
Gibt einen Wert zurück, der eine bestimmte Anzahl von
Zeichen ab dem ersten linken Zeichen einer Zeichenfolge
enthält
Gibt einen Wert vom Typ Long zurück, der die Anzahl der
Zeichen in einer Zeichenfolge oder die zum Speichern
erforderlichen Bytes enthält
Gibt einen Wert vom Typ Variant zurück, der eine bestimmte
Anzahl von Zeichen aus einer Zeichenfolge enthält
Liefert Zeichenfolge, in der eine festgelegte, untergeordnete
Zeichenfolge mit einer festgelegten Häufigkeit durch eine
andere untergeordnete Zeichenfolge ersetzt wurde
Gibt einen Wert zurück, der eine bestimmte Anzahl von
Zeichen ab dem ersten rechten Zeichen einer Zeichenfolge
enthält
Space
Liefert eine Zeichenfolge vom Typ Variant zurück, die aus
einer angegebenen Anzahl von Leerzeichen besteht
Spc
Fügt in einer Textdatei eine bestimme Anzahl von
Leerzeichen ein
Split
Gibt ein nullbasiertes, eindimensionales Datenfeld zurück, das
eine festgelegte Anzahl an untergeordneten Zeichenfolgen
enthält
93
Modellbasiertes Logistikmanagement
FUNKTION
BESCHREIBUNG
Str
Gibt einen Wert vom Typ Variant (String) zurück, der eine
Zahl darstellt
StrComp
Gibt einen Wert vom Typ Variant (Integer) zurück, der das
Ergebnis eines Zeichenfolgenergebnis anzeigt
StrConv
Gibt einen Wert vom Typ String zurück, der die angegeben
umgewandelt wurde
StrReverse
Liefert eine Zeichenfolge, in der die Reihenfolge der Zeichen
einer Zeichenfolge umgekehrt wurde
String
Liefert eine Zeichenfolge zurück, die ein sich wiederholendes
Zeichen der angegebenen Länge enthält
Switch
Wertet eine Liste von Ausdrücken aus und gibt einen Wert
vom Typ Variant oder einen Ausdruck zurück
Trim
Gibt eine Zeichenfolge zurück, die eine Kopie einer
bestimmten Zeichenfolge enthält, die keine führenden
und/oder nachgestellten Leerzeichen enthält
UCase
Wandelt Kleinbuchstaben in Großbuchstaben um
Tabelle: Textfunktionen
94
Übersicht über die vorinstallierten VBA-Funktionen
Dateifunktionen und Anweisungen 1
B.3
FUNKTION
BESCHREIBUNG
ChDir
Wechselt das aktuelle Verzeichnis oder den aktuellen Ordner
ChDrive
Wechselt das aktuelle Laufwerk
Close
Beendet das Lesen aus und das Schreiben in eine Datei, die
mit der Open-Anweisung geöffnet wurde
CurDir
Gibt einen Wert zurück, der den aktuellen Pfad darstellt
Dir
Gibt eine String-Zeichenfolge zurück, die den Namen einer
Datei, eines Verzeichnisses oder eines Ordners darstellt
Environ
Gibt die mit einer Betriebssystem-Umgebungsvariablen
verbundenen Zeichenfolge zurück
EOF
Liefert einen String, der den Boolean-Wert True enthält, wenn
das Ende einer Datei die im Zugriffsmodus Random oder
Input geöffnet wurde, erreicht worden ist
FileAttr
Gibt einen Wert vom Typ Long zurück, der den Zugriffsmodus
für mit der Open-Anweisung geöffnete Dateien darstellt.
FileCopy
Kopiert eine Datei
FileLen
Gibt einen Wert vom Typ Long zurück, der die Länge einer
Datei in Bytes angibt.
FreeFile
Gibt einen Wert vom Typ Integer zurück, der die nächste
verfügbare Dateinummer darstellt, die die Open-Anweisung
zum Öffnen einer Datei verwenden kann.
Get
Liest Daten aus einer geöffneten Datenträgerdatei in eine
Variable ein.
GetAttr
Gibt einen Wert vom Typ Integer zurück, der die Attribute
einer Datei, eines Verzeichnisses oder eines Ordners
darstellt.
Input
Gibt einen Wert vom Typ String zurück, der Zeichen aus einer
im Modus Input oder Binary geöffneten Datei enthält.
1
Siehe Held(2004), Seite 158.
95
Modellbasiertes Logistikmanagement
FUNKTION
BESCHREIBUNG
Kill
Löscht Dateien von einem Datenträger.
Line Input
Liest eine einzelne Zeile aus einer geöffneten sequentiellen
Datei und weist sie einer Variablen vom Typ String zu.
LOC
Gibt einen Wert vom Typ Long zurück, der die aktuelle
Schreib-/Leseposition innerhalb einer geöffneten Datei angibt.
Lock/Unlock
LSet
Regelt die Zugriffsmöglichkeiten anderer Prozesse auf eine
Datei (oder auf Teile einer Datei), die mit der OpenAnweisung geöffnet wurde.
Richtet eine Zeichenfolge innerhalb einer
Zeichenfolgenvariablen links aus oder kopiert eine Variable
eines benutzerdefinierten Datentyps in eine Variable eines
anderen benutzerdefinierten Datentyps.
MkDir
Erstellt ein neues Verzeichnis oder einen neuen Ordner.
Name
Umbenennen einer Datei
Open
Öffnet eine Datei für die Ein- bzw. Ausgabe
Print
Schreibt Daten, die für die Ausgabe formatiert sind, in eine
sequentielle Datei.
Put
Schreibt Daten aus einer Variablen in eine Datenträgerdatei.
Reset
Schließt alle Datenträgerdateien, die mit der Open-Anweisung
geöffnet wurden.
RmDir
Entfernt ein existierendes Verzeichnis oder einen
existierenden Ordner.
Seek
Legt in einer mit der Open-Anweisung geöffneten Datei die
Position für den nächsten Lese- oder Schreibvorgang fest.
SetAttr
Legt die Attribute für eine Datei fest.
Shell
Führt ein ausführbares Programm aus. Falls erfolgreich, gibt
sie einen Wert vom Typ Variant (Double) zurück, der die
Task-ID des Programms darstellt. Andernfalls wird Null
zurückgegeben.
96
Übersicht über die vorinstallierten VBA-Funktionen
FUNKTION
Write
BESCHREIBUNG
Schreibt Daten in eine sequentielle Datei.
Tabelle: Dateifunktionen und Anweisungen
Mathematische Funktionen 1
B.4
FUNKTION
BESCHREIBUNG
Abs
Gibt einen Wert zurück, der den gleichen Typ wie der
übergebene Wert hat und den Absolutwert einer Zahl angibt.
Atn
Gibt einen Wert vom Typ Double zurück, der den
Arcustangens einer Zahl angibt.
Cos
Gibt ein Bogenmaß vom Typ Double zurück, der den Cosinus
eines Winkels im Bogenmaß angibt.
DDB
Gibt einen Wert vom Typ Double zurück, der die
Abschreibung eines Vermögenswertes über einen bestimmten
Zeitraum mit Hilfe der geometrisch degressiven
Abschreibungsmethode oder einer von Ihnen ausgewählten
Methode angibt.
Exp
Gibt einen Wert vom Typ Double zurück, der e (die Basis des
natürlichen Logarithmus) potenziert mit einem Wert angibt.
Fix
Gibt den ganzzahligen Anteil einer Zahl zurück.
FV
Gibt einen Wert vom Typ Double zurück, der den zukünftigen
Wert einer Annuität bei regelmäßigen, konstanten
Zahlungsausgängen und einem konstanten Zinssatz angibt.
Int
Gibt den ganzzahligen Anteil einer Zahl zurück.
IPmt
Gibt einen Wert vom Typ Double zurück, der die Zinszahlung
für einen bestimmten Zeitraum einer Annuität bei
regelmäßigen, konstanten Zahlungen und einem konstanten
Zinssatz angibt.
1
Siehe Held(2004), Seite 191
97
Modellbasiertes Logistikmanagement
FUNKTION
BESCHREIBUNG
IRR
Gibt einen Wert vom Typ Double zurück, der den internen
Ertragssatz für eine Folge regelmäßiger Cash Flows (Ausund Einzahlungen) angibt.
Log
Gibt einen Wert vom Typ Double zurück, der den natürlichen
Logarithmus einer Zahl angibt.
NPer
NPV
Pmt
PPmt
PV
Gibt einen Wert vom Typ Double zurück, der die Anzahl der
Zeiträume für eine Annuität bei regelmäßigen, konstanten
Zahlungen und einem konstanten Zinssatz angibt.
Gibt einen Wert vom Typ Double zurück, der den NettoBarwert einer Investition bei regelmäßigen Cash Flows (Ausund Einzahlungen) und einem Diskontsatz angibt.
Gibt einen Wert vom Typ Double zurück, der die Auszahlung
für eine Annuität bei regelmäßigen konstanten
Zahlungsausgängen und konstantem Zinssatz angibt.
Gibt einen Wert vom Typ Double zurück, der den Kapitalanteil
einer Auszahlung für einen bestimmten Zeitraum einer
Annuität bei regelmäßigen konstanten Auszahlungen und
einem konstanten Zinssatz angibt.
Gibt einen Wert vom Typ Double zurück, der den Barwert
einer Annuität bei zukünftig regelmäßig und konstant zu
leistenden Zahlungsausgängen und einem konstanten
Zinssatz angibt.
Randomize
Initialisiert den Zufallszahlengenerator.
Rate
Gibt einen Wert vom Typ Double zurück, der den Zinssatz
einer Annuität pro Zeitraum angibt.
Rnd
Gibt einen Wert vom Typ Single zurück, der eine Zufallszahl
darstellt.
Round
Gibt eine Zahl zurück, die auf eine festgelegte Anzahl an
Dezimalpunkten gerundet wurde.
Sgn
Gibt einen Wert vom Typ Variant (Integer) zurück, der das
Vorzeichen einer Zahl darstellt.
Sin
Gibt einen Wert vom Typ Double zurück, der den Sinus eines
Winkels im Bogenmaß enthält.
SLN
Gibt einen Wert vom Typ Double zurück, der die arithmetische
Abschreibung eines Vermögenswertes über einen bestimmten
Zeitraum angibt.
Sqr
Gibt einen Wert vom Typ Double zurück, der die
Quadratwurzel einer Zahl angibt.
98
Übersicht über die vorinstallierten VBA-Funktionen
FUNKTION
BESCHREIBUNG
SYD
Gibt einen Wert vom Typ Double zurück, der die
Jahresabschreibung eines Vermögenswertes über einen
bestimmten Zeitraum angibt.
Tan
Gibt einen Wert vom Typ Double wieder, der den Tangens
eines Winkels im Bogenmaß angibt.
Tabelle: Mathematische Funktionen
99
Modellbasiertes Logistikmanagement
C Übersicht über die Excel-Funktionen
Die zahlreichen in Excel implementierten Funktionen zur Tabellenkalkulation bilden
die dritte Gruppe der unter Excel-VBA ansprechbaren Funktionen. Die detaillierte
Syntax nebst Beispielen fast aller Funktionen 1 in der deutschsprachigen Version
findet man in der Excel-Hilfe unter dem Visual-Basic Sprachverzeichnis unter
Funktionsreferenz oder in der Excel2010-Entwicklerreferenz unter
Elemente des
Worksheet-Function-Objekts.
C.1
Finanzmathematische Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
AMORDEGRK
AMORDEGRC
Gibt die Abschreibung für die einzelnen
Abschreibungszeiträume mit Hilfe eines
Abschreibungskoeffizienten zurück
AMORLINEARK
AMORLINC
Gibt die Abschreibung für die einzelnen
Abschreibungszeiträume zurück
AUFGELZINSF
ACCRINTM
AUFGELZINS
ACCRINT
AUSZAHLUNG
RECEIVED
BW
PV
DIA
SYD
DISAGIO
DISC
1
Gibt die aufgelaufenen Zinsen
(Stückzinsen) eines Wertpapiers zurück,
die bei Fälligkeit ausgezahlt werden
Gibt die aufgelaufenen Zinsen
(Stückzinsen) eines Wertpapiers mit
periodischen Zinszahlungen zurück
Gibt den Auszahlungsbetrag eines voll
investierten Wertpapiers am
Fälligkeitstermin zurück
Gibt den Barwert einer Investition zurück
Gibt die arithmetisch-degressive
Abschreibung eines Wirtschaftsguts für
eine bestimmte Periode zurück
Gibt den in Prozent ausgedrückten
Abzinsungssatz eines Wertpapiers
zurück
Bis auf die exotischen Add-in und Automatisierungsfunktionen, hier bleibt nur „googeln“, etwa:
http://www.codematic.net/excel-development/excel-xll/excel-xll-register.htm
100
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
DURATION
DURATION
Gibt die jährliche Duration eines
Wertpapiers mit periodischen
Zinszahlungen zurück
EFFEKTIV
EFFECT
Gibt die jährliche Effektivverzinsung
zurück
GDA2
DB
GDA
DDB
IKV
IRR
ISPMT
ISPMT
KAPZ
PPMT
KUMKAPITAL
CUMPRINC
KUMZINSZ
CUMIPMT
Berechnet die kumulierten Zinsen, die
zwischen zwei Perioden zu zahlen sind
KURSDISAGIO
PRICEDISC
Gibt den Kurs pro 100 € Nennwert eines
unverzinslichen Wertpapiers zurück
Gibt die geometrisch-degressive
Abschreibung eines Wirtschaftsguts für
eine bestimmte Periode zurück
Gibt die Abschreibung eines Anlageguts
für einen angegebenen Zeitraum unter
Verwendung der degressiven
Doppelraten-Abschreibung oder eines
anderen von Ihnen angegebenen
Abschreibungsverfahrens zurück
Gibt den internen Zinsfuß einer
Investition ohne Finanzierungskosten
oder Reinvestitionsgewinne zurück
Berechnet die während eines bestimmten
Zeitraums für eine Investition gezahlten
Zinsen
Gibt die Kapitalrückzahlung einer
Investition für eine angegebene Periode
zurück
Berechnet die aufgelaufene Tilgung
eines Darlehens, die zwischen zwei
Perioden zu zahlen ist
Gibt den Kurs pro 100 € Nennwert eines
Wertpapiers zurück, das Zinsen am
Fälligkeitsdatum auszahlt
Gibt den Kurs pro 100 € Nennwert eines
Wertpapiers zurück, das periodisch
Zinsen auszahlt
KURSFÄLLIG
PRICEMAT
KURS
PRICE
LIA
SLN
Gibt die lineare Abschreibung eines
Wirtschaftsguts pro Periode zurück
MDURATION
MDURATION
Gibt die geänderte Dauer für ein
Wertpapier mit einem angenommenen
Nennwert von 100 € zurück
101
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
NBW
NPV
Gibt den Nettobarwert einer Investition
auf Basis periodisch anfallender
Zahlungen und eines Abzinsungsfaktors
zurück
NOMINAL
NOMINAL
Gibt die jährliche Nominalverzinsung
zurück
Wandelt eine Notierung, die als
Dezimalzahl ausgedrückt wurde, in einen
Dezimalbruch um
Wandelt eine Notierung, die als
Dezimalbruch ausgedrückt wurde, in eine
Dezimalzahl um
Gibt den internen Zinsfuß zurück, wobei
positive und negative Zahlungen zu
unterschiedlichen Sätzen finanziert
werden
NOTIERUNGBRU
DOLLARFR
NOTIERUNGDEZ
DOLLARDE
QIKV
MIRR
RENDITEDIS
YIELDDISC
Gibt die jährliche Rendite eines
unverzinslichen Wertpapiers zurück
RENDITEFÄLL
YIELDMAT
Gibt die jährliche Rendite eines
Wertpapiers zurück, das Zinsen am
Fälligkeitsdatum auszahlt
RENDITE
YIELD
Gibt die Rendite eines Wertpapiers
zurück, das periodisch Zinsen auszahlt
RMZ
PMT
Gibt die periodische Zahlung für eine
Annuität zurück
TBILLÄQUIV
TBILLEQ
Gibt die Rendite für ein Wertpapier
zurück
TBILLKURS
TBILLPRICE
Gibt den Kurs pro 100 € Nennwert eines
Wertpapiers zurück
TBILLRENDITE
TBILLYIELD
Gibt die Rendite für ein Wertpapier
zurück
UNREGER.KURS
ODDFPRICE
UNREGER.REND
ODDFYIELD
102
Gibt den Kurs pro 100 € Nennwert eines
Wertpapiers mit einem unregelmäßigen
ersten Zinstermin zurück
Gibt die Rendite eines Wertpapiers mit
einem unregelmäßigen ersten Zinstermin
zurück
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
Gibt den Kurs pro 100 € Nennwert eines
Wertpapiers mit einem unregelmäßigen
letzten Zinstermin zurück
Gibt die Rendite eines Wertpapiers mit
einem unregelmäßigen letzten Zinstermin
zurück
Gibt die degressive Abschreibung eines
Wirtschaftsguts für eine bestimmte
Periode oder Teilperiode zurück
Gibt den internen Zinsfuß einer Reihe
nicht periodisch anfallender Zahlungen
zurück
Gibt den Nettobarwert (Kapitalwert) einer
Reihe nicht periodisch anfallender
Zahlungen zurück
UNREGLE.KURS
ODDLPRICE
UNREGLE.REND
ODDLYIELD
VDB
VDB
XINTZINSFUSS
XIRR
XKAPITALWERT
XNPV
ZINS
RATE
Gibt den Zinssatz pro Zeitraum einer
Annuität zurück
ZINSSATZ
INTRATE
Gibt den Zinssatz eines voll investierten
Wertpapiers zurück
ZINSTERMNZ
COUPNCD
Gibt das Datum des ersten Zinstermins
nach dem Abrechnungstermin zurück
ZINSTERMTAGE
COUPDAYS
ZINSTERMTAGNZ
COUPDAYSNC
ZINSTERMTAGVA
COUPDAYBS
ZINSTERMVZ
COUPPCD
Gibt das Datum des letzten Zinstermins
vor dem Abrechnungstermin zurück
ZINSTERMZAHL
COUPNUM
Gibt die Anzahl der Zinstermine zwischen
Abrechnungs- und Fälligkeitsdatum
zurück
ZINSZ
IPMT
Gibt die Zinszahlung einer Investition für
die angegebene Periode zurück
FVSCHEDULE
Gibt den aufgezinsten Wert des
Anfangskapitals für eine Reihe periodisch
unterschiedlicher Zinssätze zurück
ZW2
Gibt die Anzahl der Tage der Zinsperiode
zurück, die den Abrechnungstermin
einschließt
Gibt die Anzahl der Tage vom
Abrechnungstermin bis zum nächsten
Zinstermin zurück
Gibt die Anzahl der Tage vom Anfang
des Zinstermins bis zum
Abrechnungstermin zurück
103
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
ZW
FV
Gibt den zukünftigen Wert (Endwert)
einer Investition zurück
ZZR
NPER
Gibt die Anzahl der Zahlungsperioden
einer Investition zurück
Tabelle: Finanzmathematische Funktionen
C.2
Logische Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
FALSCH
FALSE
Gibt den Wahrheitswert FALSCH zurück
WENN
IF
Gibt einen logischen Test an, der durchgeführt
werden soll
NICHT
NOT
Kehrt die Logik der Argumente um
ODER
OR
Gibt WAHR zurück, wenn ein Argument
WAHR ist
UND
AND
Gibt WAHR zurück, wenn alle zugehörigen
Argumente WAHR sind
WAHR
TRUE
Gibt den Wahrheitswert WAHR zurück
IFERROR
Wenn eine Formel mit einem Fehler
ausgewertet wird, wird ein angegebener Wert
zurückgegeben; anderenfalls wird das
Ergebnis der Formel zurückgegeben.
WENNFEHLER
Tabelle: Logische Funktionen
C.3
104
Textfunktionen
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
ASC
ASC
Wandelt lateinische Buchstaben voller Breite
(Double-Byte-Zeichen) oder Katakana
innerhalb einer Zeichenfolge in Zeichen
halber Breite (Single-Byte-Zeichen) um
BAHTTEXT
BAHTTEXT
Wandelt eine Zahl in einen Text im
Währungsformat ß (Baht) um
CODE
CODE
Gibt die Codezahl des ersten Zeichens in
einem Text zurück
DM
DOLLAR
Wandelt eine Zahl in einen Text im
Währungsformat $ (Dollar) um
ERSETZEN,
ERSETZENB
REPLACE,
REPLACEB
Ersetzt Zeichen in Text
FEST
FIXED
Formatiert eine Zahl als Text mit einer festen
Anzahl Dezimalstellen
FINDEN,
FINDENB
FIND, FINDB
Sucht einen in einem anderen Textwert
enthaltenen Textwert (Groß-/Kleinschreibung
wird beachtet)
GLÄTTEN
TRIM
Entfernt Leerzeichen aus Text
GROSS2
PROPER
Schreibt den ersten Buchstaben aller Wörter
in einem Textwert groß
GROSS
UPPER
Wandelt Text in Großbuchstaben um
IDENTISCH
EXACT
Überprüft, ob zwei Textwerte identisch sind
JIS
JIS
Wandelt lateinische Buchstaben halber Breite
(Single-Byte-Zeichen) oder Katakana
innerhalb einer Zeichenfolge in Zeichen voller
Breite (Double-Byte-Zeichen) um
KLEIN
LOWER
Wandelt Text in Kleinbuchstaben um
LÄNGE,
LÄNGEB
LEN, LENB
Gibt die Anzahl Zeichen in einer
Textzeichenfolge zurück
105
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
LINKS, LINKSB
LEFT, LEFTB
Gibt die Zeichen ganz links aus einem
Textwert zurück
PHONETIC
PHONETIC
Extrahiert die phonetischen (Furigana)Zeichen aus einer Textzeichenfolge
RECHTS,
RECHTSB
RIGHT, RIGHTB
Gibt die Zeichen ganz rechts aus einem
Textwert zurück
SÄUBERN
CLEAN
Löscht alle nicht druckbaren Zeichen aus
einem Text
SUCHEN,
SUCHENB
SEARCH,
SEARCH
TEIL, TEILB
MID, MIDB
TEXT
TEXT
Formatiert eine Zahl und wandelt sie in Text
um
T
T
Wandelt die eigenen Argumente in Text um
VERKETTEN
CONCATENATE
Verknüpft mehrere Textelemente zu einem
Textelement
WECHSELN
SUBSTITUTE
Ersetzt alten Text durch neuen Text in einer
Textzeichenfolge
WERT
VALUE
Wandelt ein Textargument in eine Zahl um
WIEDERHOLEN
REPT
Wiederholt einen Text so oft wie angegeben
ZEICHEN
CHAR
Gibt das der Codezahl entsprechende
Zeichen zurück
Sucht einen in einem anderen Textwert
enthaltenen Textwert (Groß-/Kleinschreibung
wird nicht beachtet)
Gibt eine bestimmte Anzahl Zeichen aus
einer Textzeichenfolge zurück, die an der
angegebenen Stelle beginnt
Tabelle: Textfunktionen
C.4
106
Datums- und Uhrzeitfunktionen
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
Gibt die fortlaufende Zahl des Datums
zurück, das vor oder nach einer
bestimmten Anzahl von Arbeitstagen liegt.
Dabei werden Parameter verwendet, um
anzugeben, welche und wie viele Tage auf
Wochenenden fallen.
Gibt die fortlaufende Zahl des Datums vor
oder nach einer bestimmten Anzahl von
Arbeitstagen zurück
Gibt die Anzahl der ganzen Tage zwischen
Ausgangsdatum und Enddatum in
Bruchteilen von Jahren zurück
ARBEITSTAG.
INTL
WORKDAY.INTL
ARBEITSTAG
WORKDAY
BRTEILJAHRE
YEARFRAC
DATUM
DATE
Gibt die fortlaufende Zahl eines
bestimmten Datums zurück
DATWERT
DATEVALUE
Wandelt ein Datum in Form von Text in
eine fortlaufende Zahl um
EDATUM
EDATE
Gibt die fortlaufende Zahl des Datums
zurück, bei dem es sich um die
angegebene Anzahl von Monaten vor oder
nach dem Anfangstermin handelt
HEUTE
TODAY
Gibt die fortlaufende Zahl des heutigen
Datums zurück
JAHR
YEAR
Wandelt eine fortlaufende Zahl in ein Jahr
um
JETZT
NOW
Gibt die fortlaufende Zahl des aktuellen
Datums und der aktuellen Uhrzeit zurück
KALENDER
WOCHE
WEEKNUM
Wandelt eine fortlaufende Zahl in eine
Zahl um, die angibt, in welche Woche
eines Jahres das angegebene Datum fällt
MINUTE
MINUTE
Wandelt eine fortlaufende Zahl in eine
Minute um
MONAT
MONTH
Wandelt eine fortlaufende Zahl in einen
Monat um
MONATSENDE
EOMONTH
Gibt die fortlaufende Zahl des letzten Tags
des Monats vor oder nach einer
festgelegten Anzahl von Monaten zurück
107
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
NETTO
ARBEITSTAGE.
INTL
NETWORKDAYS.
INTL
Gibt die Anzahl der vollen Arbeitstage
zwischen zwei Datumsangaben zurück.
Dabei werden Parameter verwendet, um
anzugeben, welche und wie viele Tage auf
Wochenenden fallen
NETTO
ARBEITSTAGE
NETWORKDAYS
Gibt die Anzahl der vollen Arbeitstage
zwischen zwei Datumsangaben zurück
SEKUNDE
SECOND
Wandelt eine fortlaufende Zahl in eine
Sekunde um
STUNDE
HOUR
Wandelt eine fortlaufende Zahl in eine
Stunde um
TAGE360
DAYS360
Berechnet die Anzahl der Tage zwischen
zwei Datumsangaben ausgehend von
einem Jahr, das 360 Tage hat
TAG
DAY
Wandelt eine fortlaufende Zahl in den Tag
des Monats um
WOCHENTAG
WEEKDAY
Wandelt eine fortlaufende Zahl in den Tag
der Woche um
ZEIT
TIME
Gibt die fortlaufende Zahl einer
bestimmten Uhrzeit zurück
ZEITWERT
TIMEVALUE
Wandelt eine Uhrzeit in Form von Text in
eine fortlaufende Zahl um
Tabelle: Datums- und Zeitfunktionen
C.5
Nachschlage- und Verweisfunktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
ADRESSE
ADDRESS
Gibt einen Bezug auf eine einzelne Zelle in
einem Tabellenblatt als Text zurück
BEREICH.
VERSCHIEBEN
OFFSET
Gibt einen Bezug zurück, der einen
Abstand zu einem angegebenen Bezug
hat
108
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BEREICHE
AREAS
BESCHREIBUNG
Gibt die Anzahl der innerhalb eines
Bezugs aufgeführten Bereiche zurück
Erstellt eine Verknüpfung oder einen
Sprung, über die ein auf einem
Netzwerkserver, in einem Intranet oder im
Internet gespeichertes Dokument geöffnet
wird
Verwendet einen Index, um einen Wert
aus einem Bezug oder einem Array
auszuwählen
HYPERLINK
HYPERLINK
INDEX
INDEX
INDIREKT
INDIRECT
Gibt einen Bezug zurück, der von einem
Textwert angegeben wird
MTRANS
TRANSPOSE
Gibt die Transponierte einer Matrix zurück
PIVOTDATEN
ZUORDNEN
GETPIVOTDATA
Gibt die in einem PivotTable-Bericht
gespeicherten Daten zurück
RTD
RTD
Ruft Echtzeitdaten von einem Programm
ab, das die COM-Automatisierung
unterstützt
SPALTE
COLUMN
Gibt die Spaltennummer eines Bezugs
zurück
SPALTEN
COLUMNS
Gibt die Anzahl der innerhalb eines
Bezugs aufgeführten Spalten zurück
SVERWEIS
VLOOKUP
Sucht in der ersten Spalte einer Matrix und
dann zeilenweise, um den Wert einer Zelle
zurückzugeben
VERGLEICH
MATCH
Sucht Werte in einem Bezug oder in einer
Matrix
VERWEIS
LOOKUP
Sucht Werte in einem Vektor oder in einer
Matrix
WAHL
CHOOSE
Wählt einen Wert aus einer Liste mit
Werten aus
WVERWEIS
HLOOKUP
Sucht in der obersten Zeile einer Matrix
und gibt den Wert der angegebenen Zelle
zurück
109
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
ZEILE
ROW
Gibt die Zeilennummer eines Bezugs
zurück
ZEILEN
ROWS
Gibt die Anzahl der innerhalb eines
Bezugs aufgeführten Zeilen zurück
Tabelle: Nachschlage- und Verweisfunktionen
C.6
Mathematische und trigonometrische Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
ABRUNDEN
ROUNDDOW
Rundet einer Zahl in Richtung Null ab
N
ABS
ABS
Gibt den Absolutwert einer Zahl zurück
AGGREGAT
AGGREGAT
E
Gibt ein Aggregat in einer Liste oder
Datenbank zurück
ARCCOS
ACOS
Gibt den Arcuscosinus einer Zahl zurück
ARCCOSHYP
ACOSH
Gibt den umgekehrten hyperbolischen
Cosinus einer Zahl zurück
ARCSIN
ASIN
Gibt den Arcussinus einer Zahl zurück
ARCSINHYP
ASINH
Gibt den umgekehrten hyperbolischen
Sinus einer Zahl zurück
ARCTAN2
ATAN2
Gibt den Arcustangens von x- und yKoordinaten zurück
ARCTAN
ATAN
Gibt den Arcustangens einer Zahl zurück
110
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
ARCTANHYP
ATANH
Gibt den umgekehrten hyperbolischen
Tangens einer Zahl zurück
AUFRUNDEN
ROUNDUP
Rundet eine Zahl von Null aus auf
BOGENMASS
RADIANS
Wandelt Grad in Bogenmaß (Radiant) um
COS
COS
Gibt den Cosinus einer Zahl zurück
COSHYP
COSH
Gibt den hyperbolischen Kosinus einer Zahl
zurück
EXP
EXP
Potenziert die Basis e (EULERsche Zahl)
mit der als Argument angegebenen Zahl
FAKULTÄT
FACT
Gibt die Fakultät einer Zahl zurück
GANZZAHL
INT
Rundet eine Zahl auf die nächste Ganzzahl
ab
GERADE
EVEN
Rundet eine Zahl auf die nächste gerade
ganze Zahl auf
GGT
GCD
Gibt den größten gemeinsamen Teiler
zurück
GRAD
DEGREES
Wandelt Bogenmaß (Radiant) in Grad um
ISO.OBERGRENZE
ISO.CEILING
Gibt eine Zahl zurück, die auf die nächste
Ganzzahl oder auf das kleinste Vielfache
von Schritt gerundet wurde
KGV
LCM
Gibt das kleinste gemeinsame Vielfache
zurück
KOMBINATIONEN
COMBIN
Gibt die Anzahl der Kombinationen für eine
bestimmte Anzahl von Objekten zurück
TRUNC
Schneidet die Kommastellen der Zahl ab
und gibt als Ergebnis eine ganze Zahl
zurück
KÜRZEN
111
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
LN
LN
Gibt den natürlichen Logarithmus einer Zahl
zurück
LOG10
LOG10
Gibt den Logarithmus einer Zahl zur Basis
10 zurück
LOG
LOG
Gibt den Logarithmus einer Zahl zur
angegebenen Basis zurück
MDET
MDETERM
Gibt die Determinante einer Matrix zurück
MINV
MINVERSE
Gibt die Inverse einer Matrix zurück
MMULT
MMULT
Gibt das Produkt zweier Matrizen zurück
OBERGRENZE.
GENAU
CEILING.
PRECISE
Rundet eine Zahl auf die nächste Ganzzahl
oder auf das kleinste Vielfache von Schritt.
Die Zahl wird unabhängig von ihrem
Vorzeichen aufgerundet.
OBERGRENZE
CEILING
Rundet eine Zahl auf die nächste Ganzzahl
oder auf das kleinste Vielfache von Schritt
PI
PI
Gibt den Wert von Pi zurück
POLYNOMIAL
MULTINOMI
AL
Gibt den Polynomialkoeffizienten einer
Gruppe von Zahlen zurück
POTENZ
POWER
Gibt als Ergebnis eine potenzierte Zahl
zurück
POTENZREIHE
SERIESSUM
Gibt die Summe von Potenzen (zur
Berechnung von Potenzreihen und
dichotomen Wahrscheinlichkeiten) zurück
PRODUKT
PRODUCT
Multipliziert die zugehörigen Argumente
QUADRATE
SUMME
SUMSQ
Gibt die Summe der quadrierten Argumente
zurück
QUOTIENT
QUOTIENT
Gibt den ganzzahligen Anteil einer Division
zurück
112
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
REST
MOD
Gibt den Rest einer Division zurück
RÖMISCH
ROMAN
Wandelt eine arabische Zahl in eine
römische Zahl als Text um
RUNDEN
ROUND
Rundet eine Zahl auf eine bestimmte
Anzahl von Dezimalstellen
SIN
SIN
Gibt den Sinus eines angegebenen Winkels
zurück
SINHYP
SINH
Gibt den hyperbolischen Sinus einer Zahl
zurück
SUMME
SUM
Addiert die zugehörigen Argumente
SUMMEN
PRODUKT
SUMPRODU
CT
Gibt die Summe der Produkte
entsprechender Matrixkomponenten zurück
SUMMEWENN
SUMIF
Addiert Zellen, die mit den Suchkriterien
übereinstimmen
SUMMEWENNS
SUMIFS
Addiert die Zellen in einem Bereich, die
mehrere Kriterien erfüllen
Gibt die Summe der Differenz von
Quadraten entsprechender Werte in zwei
Matrizen zurück
Gibt die Summe der Summe von Quadraten
entsprechender Werte in zwei Matrizen
zurück
Gibt die Summe der Quadrate von
Differenzen entsprechender Werte in zwei
Matrizen zurück
SUMMEX2MY2
SUMX2MY2
SUMMEX2PY2
SUMX2PY2
SUMMEXMY2
SUMXMY2
TAN
TAN
Gibt den Tangens einer Zahl zurück
TANHYP
TANH
Gibt den hyperbolischen Tangens einer
Zahl zurück
TEILERGEBNIS
SUBTOTAL
Gibt ein Teilergebnis in einer Liste oder
Datenbank zurück
113
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
ODD
Rundet eine Zahl auf die nächste ungerade
ganze Zahl auf
UNTERGRENZE.GEN
AU
FLOOR.PRE
CISE
Rundet eine Zahl auf die nächste Ganzzahl
oder auf das kleinste Vielfache von Schritt
ab. Die Zahl wird unabhängig von ihrem
Vorzeichen abgerundet.
UNTERGRENZE
FLOOR
Rundet eine Zahl in Richtung Null ab
VORZEICHEN
SIGN
Gibt das Vorzeichen einer Zahl zurück
VRUNDEN
MROUND
Gibt eine auf das gewünschte Vielfache
gerundete Zahl zurück
WURZEL
SQRT
Gibt die Quadratwurzel einer Zahl zurück
WURZELPI
SQRTPI
Gibt die Wurzel aus der mit Pi multiplizierten
Zahl zurück
ZUFALLSBEREICH
RANDBETW
EEN
Gibt eine ganze Zufallszahl aus dem
festgelegten Bereich zurück
ZUFALLSZAHL
RAND
Gibt eine Zufallszahl zwischen 0 und 1
zurück
ZWEIFAKULTÄT
FACTDOUBL
E
Gibt die Fakultät zu Zahl mit Schrittlänge 2
zurück
UNGERADE
Tabelle: Mathematische und trigonometrische Funktionen
C.7
Statistische Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
ACHSEN
ABSCHNITT
114
INTERCEPT
BESCHREIBUNG
Gibt den Schnittpunkt der linearen
Regressionsgeraden zurück
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
ANZAHL2
COUNTA
Zählt die Anzahl der Werte in der
Liste mit Argumenten
ANZAHL
COUNT
Zählt die Anzahl der Zahlen in der
Liste mit Argumenten
ANZAHL
LEEREZELLEN
COUNTBLANK
Gibt die Anzahl der leeren Zellen
in einem Bereich an
BESTIMMTHEITS
MASS
RSQ
BETA.INV
BETA.INV
BETA.VERT
BETA.DIST
BINOM.INV
BINOM.INV
BINOM.VERT
BINOM.DIST
CHI-QHI.VERT.RE
CHI-QHI.VERT.RE
CHIQU.INV.RE
CHISQ.INV.RT
CHIQU.INV
CHISQ.INV
CHIQU.TEST
CHISQ.TEST
CHIQU.VERT.RE
CHISQ.DIST.RT
EXPON.VERT
EXPON.DIST
Gibt das Quadrat des
PEARSONschen
Korrelationskoeffizienten zurück
Gibt Quantile der kumulierten
Verteilungsfunktion für eine
bestimmte Betaverteilung zurück
Gibt die Werte der kumulierten
Betaverteilungsfunktion zurück
Gibt den kleinsten Wert zurück, für
den die kumulierten
Wahrscheinlichkeiten der
Binomialverteilung kleiner oder
gleich einer
Grenzwahrscheinlichkeit sind
Gibt Wahrscheinlichkeiten einer
binominalverteilten
Zufallsvariablen zurück
Gibt die kumulative BetaWahrscheinlichkeitsdichtefunktion
zurück
Gibt Quantile der
Verteilungsfunktion (1-Alpha) der
Chi-Quadrat-Verteilung zurück
Gibt die kumulative BetaWahrscheinlichkeitsdichtefunktion
zurück
Gibt die Teststatistik eines
Unabhängigkeitstests zurück
Gibt Werte der Verteilungsfunktion
(1-Alpha) einer Chi-Quadratverteilten Zufallsgröße zurück
Gibt Wahrscheinlichkeiten einer
exponentialverteilten
Zufallsvariablen zurück
115
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
F.INV.RE
F.INV.RT
Gibt Quantile der F-Verteilung
zurück
F.INV
F.INV
Gibt Quantile der F-Verteilung
zurück
F.TEST
F.TEST
Gibt die Teststatistik eines F-Tests
zurück
Gibt Werte der Verteilungsfunktion
(1-Alpha) einer F-verteilten
Zufallsvariablen zurück
Gibt Werte der Verteilungsfunktion
(1-Alpha) einer F-verteilten
Zufallsvariablen zurück
F.VERT.RE
F.DIST.RT
F.VERT
F.DIST
FISHER
FISHER
Gibt die Fisher-Transformation
zurück
FISHERINV
FISHERINV
Gibt die Umkehrung der FisherTransformation zurück
GAMMA.INV
GAMMA.INV
Gibt Quantile der
Gammaverteilung zurück
GAMMA.VERT
GAMMA.DIST
Gibt Wahrscheinlichkeiten einer
gammaverteilten Zufallsvariablen
zurück
GAMMALN.GENAU
GAMMALN.PRECISE
Gibt den natürlichen Logarithmus
der Gammafunktion zurück, Γ(x)
GAMMALN
GAMMALN
Gibt den natürlichen Logarithmus
der Gammafunktion zurück, Γ(x)
GEOMITTEL
GEOMEAN
Gibt das geometrische Mittel
zurück
GESTUTZTMITTEL
TRIMMEAN
GTEST
ZTEST
HARMITTEL
HARMEAN
116
Gibt den Mittelwert einer
Datengruppe zurück, ohne die
Randwerte zu berücksichtigen
Gibt den einseitigen
Wahrscheinlichkeitswert für einen
Gaußtest (Normalverteilung)
zurück
Gibt das harmonische Mittel
zurück
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
FREQUENCY
Gibt eine Häufigkeitsverteilung als
einspaltige Matrix zurück
HYPGEOM.VERT
HYPGEOM.DIST
Gibt Wahrscheinlichkeiten einer
hypergeometrisch-verteilten
Zufallsvariablen zurück
KGRÖSSTE
LARGE
Gibt den k-größten Wert einer
Datengruppe zurück
KKLEINSTE
SMALL
Gibt den k-kleinsten Wert einer
Datengruppe zurück
KONFIDENZ.
NORM
CONFIDENCE.NOR
M
KONFIDENZ.T
CONFIDENCE.T
KORREL
CORREL
KOVARIANZ.P
COVARIANCE.P
KOVARIANZ.S
COVARIANCE.S
KURT
KURT
Gibt die Kurtosis (Exzess) einer
Datengruppe zurück
LOGNORM.INV
LOGNORM.INV
Gibt Perzentile der
Lognormalverteilung zurück
HÄUFIGKEIT
LOGNORM.VERT
LOGNORM.DIST
MAXA
MAXA
Gibt das 1-Alpha
Konfidenzintervall für den
Erwartungswert einer
Zufallsvariablen zurück
Gibt das Konfidenzintervall für den
Erwartungswert einer
Zufallsvariablen zurück, wobei der
Studentsche T-Test verwendet
wird
Gibt den Korrelationskoeffizienten
zweier Reihen von
Merkmalsausprägungen zurück
Gibt die Kovarianz zurück, den
Mittelwert der für alle
Datenpunktpaare gebildeten
Produkte der Abweichungen
Gibt die Kovarianz einer
Stichprobe zurück, d. h. den
Mittelwert der für alle
Datenpunktpaare gebildeten
Produkte der Abweichungen
Gibt Werte der Verteilungsfunktion
einer lognormalverteilten
Zufallsvariablen zurück
Gibt den größten Wert in einer
Liste mit Argumenten zurück.
Dazu zählen Zahlen, Text und
Wahrheitswerte
117
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
MAX
MAX
Gibt den größten Wert in einer
Liste mit Argumenten zurück
MEDIAN
MEDIAN
Gibt den Median der angegebenen
Zahlen zurück
MINA
MINA
Gibt den kleinsten Wert in einer
Liste mit Argumenten zurück.
Dazu zählen Zahlen, Text und
Wahrheitswerte
MIN
MIN
Gibt den kleinsten Wert in einer
Liste mit Argumenten zurück
MITTELABW
AVEDEV
MITTELWERTA
AVERAGEA
MITTELWERT
AVERAGE
MITTELWERT
WENN
AVERAGEIF
MITTELWERT
WENNS
AVERAGEIFS
MODUS.EINF
MODE.SNGL
MODUS.VIELF
MODE.MULT
NEGBINOM.VERT
NEGBINOM.DIST
NORM.INV
NORM.INV
118
Gibt die durchschnittliche absolute
Abweichung von Datenpunkten
von ihrem Mittelwert zurück
Gibt den Mittelwert der
zugehörigen Argumente zurück.
Dazu gehören Zahlen, Text und
Wahrheitswerte
Gibt den Mittelwert der
zugehörigen Argumente zurück
Gibt den Durchschnittswert
(arithmetisches Mittel) für alle
Zellen in einem Bereich, die einem
angegebenen Kriterium
entsprechen, zurück
Gibt den Durchschnittswert
(arithmetisches Mittel) aller Zellen
zurück, die mehreren Kriterien
entsprechen
Gibt den am häufigsten
vorkommenden Wert in einer
Datengruppe zurück
Gibt ein vertikales Array der am
häufigsten vorkommenden oder
wiederholten Werte in einem Array
oder Datenbereich zurück
Gibt Wahrscheinlichkeiten einer
negativbinomialverteilten
Zufallsvariablen zurück
Gibt Quantile der Normalverteilung
zurück
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
NORM.S.INV
NORM.S.INV
BESCHREIBUNG
Gibt Quantile der
Standardnormalverteilung zurück
Gibt Wahrscheinlichkeiten einer
standardnormalverteilten
Zufallsvariablen zurück
Gibt Wahrscheinlichkeiten einer
normalverteilten Zufallsvariablen
zurück
NORM.S.VERT
NORM.S.DIST
NORM.VERT
NORM.DIST
PEARSON
PEARSON
Gibt den Pearsonschen
Korrelationskoeffizienten zurück
POISSON.VERT
POISSON.DIST
Gibt Wahrscheinlichkeiten einer
Poisson-verteilten Zufallsvariablen
zurück
PROGNOSE
PROGNOSE
Gibt einen Wert zurück, der sich
aus einem linearen Trend ergibt
QUANTIL.EXKL
PERCENTILE.EXC
Gibt das k-Quantil von Werten in
einem Bereich zurück, wobei k im
Bereich von 0..1 ausschließlich
liegt
QUANTIL.INKL
PERCENTILE.INC
Gibt das k-Quantil von Werten in
einem Bereich zurück
QUANTILSRANG.
EXKL
QUANTILSRANG.
EXKL
QUANTILSRANG.
INKL
QUANTILSRANG.
INKL
QUARTILE.EXKL
QUARTILE.EXC
QUARTILE.INKL
QUARTILE.INC
RANG.GLEICH
RANK.EQ
RANG.MITTELW
RANK.AVG
Gibt den prozentualen (0..1
ausschließlich) Rang (Alpha) eines
Werts in einem Datenset zurück
Gibt den prozentualen Rang
(Alpha) eines Werts in einer
Gruppe von Daten zurück
Gibt die Quartile eines Datensets
zurück, basierend auf
Perzentilwerten von 0..1
ausschließlich
Gibt die Quartile einer
Datengruppe zurück
Gibt den Rang zurück, den eine
Zahl innerhalb einer Liste von
Zahlen einnimmt
Gibt die durchschnittliche
Rangzahl zurück, den eine Zahl
innerhalb einer Liste von Zahlen
einnimmt
119
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
RGP
LINEST
Gibt die Parameter eines linearen
Trends zurück
RKP
LOGEST
Gibt die Parameter eines
exponentiellen Trends zurück
SCHIEFE
SKEW
Gibt die Schiefe einer Verteilung
zurück
STABW.N
STDEV.P
Berechnet die
Standardabweichung auf der
Grundlage der Grundgesamtheit
STABW.S
STDEV.S
Schätzt die Standardabweichung
ausgehend von einer Stichprobe
Schätzt die Standardabweichung
ausgehend von einer Stichprobe,
die Zahlen, Text und
Wahrheitswerte enthält
Berechnet die
Standardabweichung auf der
Grundlage der Grundgesamtheit,
die Zahlen, Text und
Wahrheitswerte enthält
STABWA
STDEVA
STABWNA
STDEVPA
STANDARDISIERUNG
STANDARDIZE
Gibt einen standardisierten Wert
zurück
STEIGUNG
SLOPE
Gibt die Steigung der linearen
Regressionsgeraden zurück
STFEHLERYX
STEYX
Gibt den Standardfehler der
geschätzten y-Werte für alle xWerte der Regression zurück
SUMQUADABW
DEVSQ
Gibt die Summe von quadrierten
Abweichungen zurück
T.INV.2S
T.INV.2T
Gibt die zweiseitigen Quantile der
(Student) t-Verteilung zurück
T.INV
T.INV
Gibt den t-Wert der Student-TVerteilung als Funktion der
Wahrscheinlichkeit und der
Freiheitsgrade zurück
T.TEST
T.TEST
Gibt die Teststatistik eines
Student'schen t-Tests zurück
120
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
Gibt die Prozentpunkte
(Wahrscheinlichkeit) für die
(Student) t-Verteilung für zwei
Endflächen zurück
Gibt Werte der Verteilungsfunktion
(1-Alpha) einer (Student) tverteilten Zufallsvariablen zurück
Gibt die Prozentpunkte
(Wahrscheinlichkeit) für die
(Student) t-Verteilung zurück
T.VERT.2S
T.DIST.2T
T.VERT.RE
T.DIST.RT
T.VERT
T.DIST
TREND
TREND
Gibt Werte zurück, die sich aus
einem linearen Trend ergeben
VAR.P
VAR.P
Berechnet die Varianz auf der
Grundlage der Grundgesamtheit
VAR.S
VAR.S
Schätzt die Varianz auf der
Grundlage einer Stichprobe
VARIANZA
VARA
VARIANZENA
VARPA
VARIATIONEN
PERMUT
VARIATION
GROWTH
WAHRSCHBEREICH
PROB
WEIBULL.VERT
WEIBULL.DIST
ZÄHLENWENN
COUNTIF
ZÄHLENWENNS
COUNTIFS
Schätzt die Varianz ausgehend
von einer Stichprobe, die Zahlen,
Text und Wahrheitswerte enthält
Berechnet die Varianz auf der
Grundlage einer Grundgesamtheit,
die Zahlen, Text und
Wahrheitswerte enthält
Gibt die Anzahl der Permutationen
für eine bestimmte Anzahl von
Objekten zurück
Gibt Werte zurück, die sich aus
einem exponentiellen Trend
ergeben
Gibt die Wahrscheinlichkeit für ein
von zwei Werten
eingeschlossenes Intervall zurück
Gibt Wahrscheinlichkeiten einer
Weibull-verteilten Zufallsvariablen
zurück
Die Zellen eines Bereichs, deren
Inhalte mit den Suchkriterien
übereinstimmen, werden gezählt
Die Zellen eines Bereichs, deren
Inhalte mit mehreren Kriterien
übereinstimmen, werden gezählt
Tabelle: Statistische Funktionen
121
Modellbasiertes Logistikmanagement
C.8
Konstruktionsfunktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
BESSELI
BESSELI
Gibt die geänderte Besselfunktion
In(x) zurück
BESSELJ
BESSELJ
Gibt die Besselfunktion Jn(x)
zurück
BESSELK
BESSELK
Gibt die geänderte Besselfunktion
Kn(x) zurück
BESSELY
BESSELY
Gibt die Besselfunktion Yn(x)
zurück
Wandelt eine binäre Zahl
(Dualzahl) in eine dezimale Zahl
um
Wandelt eine binäre Zahl
(Dualzahl) in eine hexadezimale
Zahl um
BININDEZ
BIN2DEC
BININHEX
BIN2HEX
BININOKT
BIN2OCT
Wandelt eine binäre Zahl
(Dualzahl) in eine oktale Zahl um
DELTA
DELTA
Überprüft, ob zwei Werte gleich
sind
DEZINBIN
DEC2BIN
Wandelt eine dezimale Zahl in
eine binäre Zahl (Dualzahl) um
DEZINHEX
DEC2HEX
Wandelt eine dezimale Zahl in
eine hexadezimale Zahl um
DEZINOKT
DEC2OCT
Wandelt eine dezimale Zahl in
eine oktale Zahl um
GAUSSF.GENAU
ERF.PRECISE
Gibt die Fehlerfunktion zurück
GAUSSFEHLER
ERF
Gibt die Fehlerfunktion zurück
GAUSSFKOMPL.GENA
ERFC.PRECISE
U
122
Gibt das Komplement zur
GAUSZschen Fehlerfunktion
integriert zwischen x und
Unendlichkeit zurück
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
GAUSSFKOMPL
ERFC
Gibt das Komplement zur
GAUSZschen Fehlerfunktion
zurück
GGANZZAHL
GESTEP
Überprüft, ob eine Zahl größer als
ein gegebener Schwellenwert ist
HEXINBIN
HEX2BIN
Wandelt eine hexadezimale Zahl
in eine binäre Zahl (Dualzahl) um
HEXINDEZ
HEX2DEC
Wandelt eine hexadezimale Zahl
in eine dezimale Zahl um
HEXINOKT
HEX2OCT
Wandelt eine hexadezimale Zahl
in eine Oktalzahl um
IMABS
IMABS
Gibt den Absolutbetrag (Modulo)
einer komplexen Zahl zurück
IMAGINÄRTEIL
IMAGINARY
Gibt den Imaginärteil einer
komplexen Zahl zurück
IMAPOTENZ
IMPOWER
Potenziert eine komplexe Zahl mit
einer ganzen Zahl
IMARGUMENT
IMARGUMENT
Gibt das Argument Theta zurück,
einen Winkel im Bogenmaß
IMCOS
IMCOS
Gibt den Cosinus einer komplexen
Zahl zurück
IMDIV
IMDIV
Gibt den Quotienten zweier
komplexer Zahlen zurück
IMEXP
IMEXP
Gibt die algebraische Form einer
in exponentieller Schreibweise
vorliegenden komplexen Zahl
zurück
IMKONJUGIERTE
IMCONJUGATE
Gibt die konjugierte komplexe Zahl
zu einer komplexen Zahl zurück
IMLN
IMLN
Gibt den natürlichen Logarithmus
einer komplexen Zahl zurück
IMLOG10
IMLOG10
Gibt den Logarithmus einer
komplexen Zahl zur Basis 10
zurück
123
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
IMLOG2
IMLOG2
Gibt den Logarithmus einer
komplexen Zahl zur Basis 2
zurück
IMPRODUKT
IMPRODUCT
Gibt das Produkt von 2 bis 255
komplexen Zahlen zurück
IMREALTEIL
IMREAL
Gibt den Realteil einer komplexen
Zahl zurück
IMSIN
IMSIN
Gibt den Sinus einer komplexen
Zahl zurück
IMSUB
IMSUB
Gibt die Differenz zwischen zwei
komplexen Zahlen zurück
IMSUMME
IMSUM
Gibt die Summe von komplexen
Zahlen zurück
IMWURZEL
IMSQRT
Gibt die Quadratwurzel einer
komplexen Zahl zurück
KOMPLEXE
COMPLEX
Wandelt den Real- und
Imaginärteil in eine komplexe Zahl
um
OKTINBIN
OCT2BIN
Wandelt eine oktale Zahl in eine
binäre Zahl (Dualzahl) um
OKTINDEZ
OCT2DEC
Wandelt eine oktale Zahl in eine
dezimale Zahl um
OKTINHEX
OCT2HEX
Wandelt eine oktale Zahl in eine
hexadezimale Zahl um
UMWANDELN
CONVERT
Wandelt eine Zahl von einem
Maßsystem in ein anderes um
Tabelle: Konstruktionsfunktionen
C.9
124
Cubefunktionen
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
Gibt den Wert einer
Elementeigenschaft im Cube
zurück. Wird verwendet, um zu
überprüfen, ob ein Elementname
im Cube vorhanden ist, und um
die für dieses Element
angegebene Eigenschaft
zurückzugeben.
Gibt ein Element oder ein Tuple in
einem Cube zurück. Wird
verwendet, um zu überprüfen, ob
das Element oder Tuple im Cube
vorhanden ist.
Gibt die Eigenschaft eines Key
Performance Indicators (KPI)
zurück und zeigt den KPI-Namen
in der Zelle an. Ein KPI ist ein
quantifizierbares Maß, wie z. B.
der monatliche Bruttogewinn oder
die vierteljährliche
Mitarbeiterfluktuation, mit dessen
Hilfe das Leistungsverhalten eines
Unternehmens überwacht werden
kann.
Definiert eine berechnete Menge
Elemente oder Tupeln durch
Senden eines Mengenausdrucks
an den Cube auf dem Server, der
die Menge erstellt und an
Microsoft Office Excel zurückgibt
CUBEELEMENT
EIGENSCHAFT
CUBEMEMBER
PROPERTY
CUBEELEMENT
CUBEMEMBER
CUBEKPI
ELEMENT
CUBEKPIMEMBER
CUBEMENGE
CUBESET
CUBE
MENGENANZAHL
CUBESETCOUNT
Gibt die Anzahl der Elemente in
einer Menge zurück
CUBE
RANGELEMENT
CUBE
RANKEDMEMBER
Gibt das n-te oder n-rangige
Element in einer Menge zurück.
Wird verwendet, um mindestens
ein Element in einer Menge
zurückzugeben, wie z. B. bester
Vertriebsmitarbeiter oder 10 beste
Kursteilnehmer.
CUBEWERT
CUBEVALUE
Gibt einen Aggregatwert aus dem
Cube zurück
Tabelle: Cubefunktionen
125
Modellbasiertes Logistikmanagement
C.10 Informationsfunktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
FEHLER.TYP
ERROR.TYPE
Gibt eine Zahl zurück, die einem
Fehlertyp entspricht
INFO
INFO
Gibt Informationen zur aktuellen
Betriebssystemumgebung zurück
ISTBEZUG
ISREF
Gibt WAHR zurück, wenn der Wert
ein Bezug ist
ISTFEHLER
ISERROR
Gibt WAHR zurück, wenn der Wert
ein beliebiger Fehlerwert ist
ISTFEHL
ISERR
Gibt WAHR zurück, wenn der Wert
ein beliebiger Fehlerwert außer
#NV ist
ISTGERADE
ISEVEN
Gibt WAHR zurück, wenn die Zahl
gerade ist
ISTKTEXT
ISNONTEXT
Gibt WAHR zurück, wenn der Wert
kein Text ist
ISTLEER
ISBLANK
Gibt WAHR zurück, wenn der Wert
leer ist
ISTLOG
ISLOGICAL
Gibt WAHR zurück, wenn der Wert
ein Wahrheitswert ist
ISTNV
ISNA
Gibt WAHR zurück, wenn der Wert
der Fehlerwert #NV ist
ISTTEXT
ISTEXT
Gibt WAHR zurück, wenn der Wert
ein Text ist
ISTUNGERADE
ISODD
Gibt WAHR zurück, wenn die Zahl
ungerade ist
ISTZAHL
ISNUMBER
Gibt WAHR zurück, wenn der Wert
eine Zahl ist
N
N
Gibt einen Wert zurück, der in eine
Zahl umgewandelt wurde
126
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
NV
NA
Gibt den Fehlerwert #NV zurück
TYP
TYPE
Gibt eine Zahl zurück, die den
Datentyp eines Werts angibt
ZELLE
CELL
Gibt Informationen zur
Formatierung, zur Position oder
zum Inhalt einer Zelle zurück
Tabelle: Informationsfunktionen
C.11 Datenbankfunktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
DBANZAHL2
DCOUNTA
Zählt nicht leere Zellen in einer Datenbank
DBANZAHL
DCOUNT
Zählt die Zellen mit Zahlen in einer
Datenbank
DBAUSZUG
DGET
Extrahiert aus einer Datenbank einen
einzelnen Datensatz, der den angegebenen
Kriterien entspricht
DBMAX
DMAX
Gibt den größten Wert aus ausgewählten
Datenbankeinträgen zurück
DBMIN
DMIN
Gibt den kleinsten Wert aus ausgewählten
Datenbankeinträgen zurück
DBMITTELWERT
DAVERAGE
Gibt den Mittelwert der ausgewählten
Datenbankeinträge zurück
DBPRODUKT
DPRODUCT
DBSTDABW
DSTDEV
Multipliziert die Werte in einem bestimmten
Feld mit Datensätzen, die den Kriterien in
einer Datenbank entsprechen
Schätzt die Standardabweichung auf der
Grundlage einer Stichprobe aus
ausgewählten Datenbankeinträgen
127
Modellbasiertes Logistikmanagement
DBSTDABWN
DSTDEVP
DBSUMME
DSUM
DBVARIANZEN
DVARP
DBVARIANZ
DVAR
Berechnet die Standardabweichung auf der
Grundlage der Grundgesamtheit
ausgewählter Datenbankeinträge
Addiert die Zahlen in der Feldspalte mit
Datensätzen in der Datenbank, die den
Kriterien entsprechen
Berechnet die Varianz auf der Grundlage der
Grundgesamtheit ausgewählter
Datenbankeinträge
Schätzt die Varianz auf der Grundlage
ausgewählter Datenbankeinträge
Tabelle: Datenbankfunktionen
C.12 Kompatibilitätsfunktionen
Es handelt sich hier um Funktionen, die aus Gründen der Kompatibilität mit früheren
Excel-Versionen noch implementiert sind.
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
BETAINV
BETAINV
Gibt Quantile der kumulierten
Verteilungsfunktion für ein
bestimmte Betaverteilung zurück
BETAVERT
BETADIST
Gibt die Werte der kumulierten
Betaverteilungsfunktion zurück
BINOMVERT
BINOMDIST
CHIINV
CHIINV
CHITEST
CHITEST
CHIVERT
CHIDIST
EXPONVERT
EXPONDIST
128
Gibt Wahrscheinlichkeiten einer
binominalverteilten
Zufallsvariablen zurück
Gibt Quantile der
Verteilungsfunktion (1-Alpha) der
Chi-Quadrat-Verteilung zurück
Gibt die Teststatistik eines
Unabhängigkeitstests zurück
Gibt Werte der Verteilungsfunktion
(1-Alpha) einer Chi-Quadratverteilten Zufallsgröße zurück
Gibt Wahrscheinlichkeiten einer
exponentialverteilten
Zufallsvariablen zurück
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
FINV
FINV
Gibt Quantile der F-Verteilung
zurück
FTEST
FTEST
Gibt die Teststatistik eines F-Tests
zurück
FVERT
FDIST
Gibt Werte der Verteilungsfunktion
(1-Alpha) einer F-verteilten
Zufallsvariablen zurück
GAMMAINV
GAMMAINV
Gibt Quantile der
Gammaverteilung zurück
GAMMAVERT
GAMMADIST
GTEST
ZTEST
HYPGEOMVERT
HYPGEOMDIST
KONFIDENZ
CONFIDENCE
KOVAR
COVAR
KRITBINOM
CRITBINOM
LOGINV
LOGINV
LOGNORMVERT
LOGNORMDIST
MODALWERT
MODE
Gibt Wahrscheinlichkeiten einer
gammaverteilten Zufallsvariablen
zurück
Gibt den einseitigen
Wahrscheinlichkeitswert für einen
GAUSZtest (Normalverteilung)
zurück
Gibt Wahrscheinlichkeiten einer
hypergeometrisch-verteilten
Zufallsvariablen zurück
Gibt das 1-Alpha
Konfidenzintervall für den
Erwartungswert einer
Zufallsvariablen zurück
Gibt die Kovarianz zurück, den
Mittelwert der für alle
Datenpunktpaare gebildeten
Produkte der Abweichungen
Gibt den kleinsten Wert zurück, für
den die kumulierten
Wahrscheinlichkeiten der
Binomialverteilung kleiner oder
gleich einer
Grenzwahrscheinlichkeit sind
Gibt Perzentile der
Lognormalverteilungsfunktion
zurück
Gibt Werte der Verteilungsfunktion
einer lognormalverteilten
Zufallsvariablen zurück
Gibt den am häufigsten
vorkommenden Wert in einer
Datengruppe zurück
129
Modellbasiertes Logistikmanagement
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
NEGBINOMVERT
NEGBINOMDIST
Gibt Wahrscheinlichkeiten einer
negativbinomialverteilten
Zufallsvariablen zurück
NORMINV
NORMINV
Gibt Quantile der Normalverteilung
zurück
NORMVERT
NORMDIST
NORMSVERT
NORMSDIST
POISSON
POISSON
QUANTIL
PERCENTILE
Gibt das k-Quantil von Werten in
einem Bereich zurück
QUANTILSRANG
PERCENTRANK
Gibt den prozentualen Rang
(Alpha) eines Werts in einer
Gruppe von Daten zurück
QUARTILE
QUARTILE
Gibt die Quartile einer
Datengruppe zurück
RANG
RANK
Gibt den Rang zurück, den eine
Zahl innerhalb einer Liste von
Zahlen einnimmt
STABW
STDEV
Schätzt die Standardabweichung
ausgehend von einer Stichprobe
STABWN
STDEVP
Berechnet die
Standardabweichung auf der
Grundlage der Grundgesamtheit
STANDNORMINV
NORMSINV
Gibt Quantile der
Standardnormalverteilung zurück
TINV
TINV
Gibt Quantile der (Student) tVerteilung zurück
TTEST
TTEST
Gibt die Teststatistik eines
Studentschen t-Tests zurück
TDIST
Gibt Werte der Verteilungsfunktion
(1-Alpha) einer (Student) tverteilten Zufallsvariablen zurück
TVERT
130
Gibt Wahrscheinlichkeiten einer
normalverteilten Zufallsvariablen
zurück
Gibt Wahrscheinlichkeiten einer
standardnormalverteilten
Zufallsvariablen zurück
Gibt Wahrscheinlichkeiten einer
Poisson-verteilten Zufallsvariablen
zurück
Übersicht über die Excel-Funktionen
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
BESCHREIBUNG
VARIANZEN
VARP
Berechnet die Varianz auf der
Grundlage der Grundgesamtheit
VARIANZ
VAR
Schätzt die Varianz auf der
Grundlage einer Stichprobe
WEIBULL
WEIBULL
Gibt Wahrscheinlichkeiten einer
Weibull-verteilten Zufallsvariablen
zurück
Tabelle: Kompatibilitätsfunktionen
C.13 Add-ins und Automatisierung
FUNKTION
FUNCTION
(DEUTSCH)
(ENGL.)
AUFRUFEN
CALL
EUROCONVERT
EUROCONVERT
REGISTER
REGISTER
REGISTER.KENNUMM
ER
REGISTER.ID
SQL.REQUEST
SQL.REQUEST
BESCHREIBUNG
Eine Prozedur in einer DLL
(Dynamic Link Library) oder CodeRessource wird aufgerufen
Wandelt eine Zahl in Euro oder
von Euro in die Währung eines
Mitgliedsstaats oder von der
Währung eines EuroMitgliedsstaats in die Währung
eines anderen Mitgliedsstaats um,
indem der Euro als Zwischenwert
verwendet wird (Triangulieren)
Die REGISTER() XLM Funktion
erzeugt einen definierten Namen
und verweist darauf über eine
externe dll basierte Funktion
Gibt die Registrierkennung der
angegebenen DLL bzw. der vorher
registrierten Code-Ressource
zurück
Stellt Verbindung mit einer
externen Datenquelle her und führt
Abfrage aus, die sich auf einem
Tabellenblatt befindet. Gibt das
Ergebnis dann als Matrix zurück,
ohne Makro Programmierung.
Tabelle: Add-ins und Automatisierung
131
Modellbasiertes Logistikmanagement
D Übersicht über die wichtigsten Excel-Objekte
D.1
Die
Das Application-Objekt
detaillierte
Syntax
nebst
Beispielen
findet
Objektmodellreferenz in der Excel-Hilfe für Entwickler
D.1.1
man
unter
der
Excel-
Application-Object.
Eigenschaften
Es folgt eine Liste der wichtigsten Eigenschaften eines Application-Objekts:
EIGENSCHAFT
BESCHREIBUNG
ActiveCell
Gibt das Range-Objekt zurück, das die aktive Zelle darstellt.
ActivePrinter
Gibt den Namen des aktiven Druckers zurück oder legt ihn
fest.
ActiveSheet
Gibt das aktuelle Sheet-Objekt zurück
ActiveWindow
Gibt ein Window-Objekt zurück, welches das aktive Fenster
darstellt.
ActiveWorkbook
Gibt ein Workbook-Objekt zurück, das die Arbeitsmappe im
aktiven Fenster darstellt.
Cells
Gibt ein Range-Objekt zurück, das alle Zellen des aktiven
Arbeitsblattes darstellt.
Dialogs
Gibt eine Dialogs-Auflistung aller internen Dialogfelder zurück,
z.B. Datei-öffnen, -speicher, -drucken.
Name
Gibt den Namen der Anwendung zurück.
Names
Gibt eine Names-Auflistung aller Namen (z.B. der benannten
Zellen) der aktiven Arbeitsmappe zurück.
Parent
Gibt das übergeordnete Objekt zurück.
132
Übersicht über die wichtigsten Excel-Objekte
EIGENSCHAFT
BESCHREIBUNG
Path
Gibt den vollständigen Pfad der Anwendung zurück ohne das
abschließende Trennzeichen und den Namen der
Anwendung.
Range
Gibt ein Range-Objekt zurück, das eine Zelle oder einen
Zellbereich des aktiven Arbeitsblatts darstellt.
Sheets
Gibt eine Sheets-Auflistung zurück, die alle Blätter in der
aktiven Arbeitsmappe darstellt.
Windows
Gibt eine Windows-Auflistung aller Fenster zurück.
Workbooks
Gibt eine Workbooks-Auflistung zurück, die alle geöffneten
Arbeitsmappen darstellt.
Worksheets
Gibt eine Worksheets-Auflistung zurück, die alle Arbeitsblätter
der aktiven Arbeitsmappe darstellt.
Tabelle: Eigenschaften des Application-Objekts
D.1.2
Methoden
Die wichtigsten Methoden eines Application-Objekts sind nachfolgend aufgelistet:
METHODE
BESCHREIBUNG
Calculate
Neue Berechnung aller geöffneten Arbeitsmappen, ein
bestimmtes Arbeitsblatt oder einen bestimmten Zellbereich.
CalculateFull
Erzwingt eine vollständige Berechnung der Daten in allen
geöffneten Arbeitsmappen.
Tabelle: Methoden des Application-Objekts
D.1.3
Ereignisse
Die Ereignisse des Application-Objekts sind wie folgt:
133
Modellbasiertes Logistikmanagement
EREIGNIS
BESCHREIBUNG
AfterCalculate
Das AfterCalculate-Ereignis tritt auf, wenn alle
ausstehenden Aktualisierungsvorgänge (synchron und
asynchron) und alle sich daraus ergebenden
Berechnungen abgeschlossen wurden.
NewWorkbook
Tritt auf, wenn eine neue Arbeitsmappe erstellt wird.
ProtectedViewWindow
Activate
Tritt auf, wenn ein Fenster Geschützte Ansicht aktiviert
wird.
ProtectedViewWindow
BeforeClose
ProtectedViewWindow
BeforeEdit
Tritt unmittelbar vor dem Schließen eines Fensters
Geschützte Ansicht oder einer Arbeitsmappe in einer
geschützten Ansicht auf.
Tritt unmittelbar vor dem Aktivieren der Bearbeitung für
die Arbeitsmappe im angegebenen Fenster Geschützte
Ansicht auf.
ProtectedViewWindow
Deactivate
Tritt auf, wenn ein Fenster Geschützte Ansicht deaktiviert
wird.
ProtectedViewWindow
Open
Tritt auf, wenn eine Arbeitsmappe in einem Fenster
Geschützte Ansicht geöffnet wird.
ProtectedViewWindow
Resize
Tritt auf, wenn die Größe eines Fensters Geschützte
Ansicht geändert wird.
SheetActivate
Tritt auf, wenn ein beliebiges Blatt aktiviert wird.
SheetBefore
DoubleClick
Tritt auf, wenn vor der Standarddoppelklick-Aktion auf ein
beliebiges Arbeitsblatt doppelgeklickt wird.
SheetBefore
RightClick
SheetCalculate
SheetChange
Tritt auf, wenn vor der Standardrechtsklick-Aktion mit der
rechten Maustaste auf ein beliebiges Arbeitsblatt geklickt
wird.
Tritt nach Neuberechnung jedes Arbeitsblatts auf oder
wenn beliebige geänderte Daten in einem Diagramm
gezeichnet werden.
Tritt auf, wenn Zellen auf einem beliebigen Arbeitsblatt
durch den Benutzer oder durch eine externe Verknüpfung
geändert werden.
SheetDeactivate
Tritt auf, wenn ein beliebiges Blatt deaktiviert wird.
SheetFollowHyperlink
Tritt auf, wenn Sie in Microsoft Excel auf einen beliebigen
Hyperlink klicken. Weitere Informationen zu Ereignissen
auf Arbeitsblattebene finden Sie im Hilfethema zum
Worksheet.FollowHyperlink-Ereignis.
134
Übersicht über die wichtigsten Excel-Objekte
EREIGNIS
BESCHREIBUNG
SheetPivotTable
AfterValueChange
Tritt nach der Bearbeitung oder Neuberechnung (bei
Zellen, die Formeln enthalten) einer Zelle oder eines
Zellbereichs in einer PivotTable auf.
SheetPivotTable
BeforeAllocateChanges
Tritt auf, bevor Änderungen auf eine PivotTable
angewendet werden.
SheetPivotTable
BeforeCommitChanges
Tritt auf, bevor für Änderungen an der OLAP-Datenquelle
für eine PivotTable ein Commit ausgeführt wird.
SheetPivotTable
BeforeDiscardChanges
Tritt auf, bevor Änderungen an einer PivotTable
verworfen werden.
SheetPivotTableUpdate
Tritt auf, nachdem das Blatt des PivotTable-Berichts
aktualisiert wurde.
SheetSelectionChange
Tritt auf, wenn sich die Markierung auf einem Arbeitsblatt
ändert (tritt nicht auf, wenn sich die Markierung auf einem
Diagrammblatt befindet).
WindowActivate
Tritt auf, wenn ein Arbeitsmappen-Fenster aktiviert wird.
WindowDeactivate
Tritt auf, wenn ein Arbeitsmappen-Fenster deaktiviert
wird.
WindowResize
Tritt auf, wenn die Größe eines Arbeitsmappen-Fensters
angepasst wird.
WorkbookActivate
Tritt auf, wenn eine Arbeitsmappe aktiviert wird.
WorkbookAddinInstall
Tritt auf, wenn eine Arbeitsmappe als Add-In installiert
wird.
WorkbookAddinUninstall
Tritt auf, wenn eine Add-In-Arbeitsmappe deinstalliert
wird.
WorkbookAfterSave
Tritt auf, nachdem die Arbeitsmappe gespeichert wurde.
WorkbookAfterXmlExport
WorkbookAfterXmlImport
Tritt auf, nachdem von Microsoft Excel XML-Daten aus
der angegebenen Arbeitsmappe gespeichert oder
exportiert wurden.
Tritt auf, nachdem eine bestehende XMLDatenverbindung aktualisiert wurde oder neue XMLDaten in eine geöffnete Microsoft Excel-Arbeitsmappe
importiert wurden.
135
Modellbasiertes Logistikmanagement
EREIGNIS
BESCHREIBUNG
WorkbookBeforeClose
Tritt direkt vor dem Schließen einer geöffneten
Arbeitsmappe auf.
WorkbookBeforePrint
Tritt auf, bevor eine Arbeitsmappe gedruckt wird.
WorkbookBeforeSave
Tritt auf, bevor eine geöffnete Arbeitsmappe gespeichert
wird.
Workbook
BeforeXmlExport
Workbook
BeforeXmlImport
Tritt auf, bevor XML-Daten aus der angegebenen
Arbeitsmappe von Microsoft Excel gespeichert oder
exportiert werden.
Tritt auf, bevor eine bestehende XML-Datenverbindung
aktualisiert wird oder neue XML-Daten in eine geöffnete
Microsoft Excel-Arbeitsmappe importiert werden.
WorkbookDeactivate
Tritt auf, wenn eine geöffnete Arbeitsmappe deaktiviert
wird.
WorkbookNewChart
Tritt auf, wenn in einer geöffneten Arbeitsmappe ein
neues Diagramm erstellt wird.
WorkbookNewSheet
Tritt auf, wenn in einer geöffneten Arbeitsmappe ein
neues Blatt erstellt wird.
WorkbookOpen
Tritt auf, wenn eine Arbeitsmappe geöffnet wird.
WorkbookPivotTable
CloseConnection
Tritt auf, nachdem die Verbindung zu einem PivotTableBericht geschlossen wurde.
WorkbookPivotTable
OpenConnection
Tritt auf, nachdem eine Verbindung eines PivotTableBerichts geöffnet wurde.
WorkbookRowset
Complete
WorkbookSync
Das WorkbookRowsetComplete-Ereignis tritt auf, wenn
der Benutzer einen Drillthrough durch das Recordset
ausführt oder die Rowset-Aktion für eine OLAPPivotTable aufruft.
Tritt auf, wenn die lokale Kopie einer Arbeitsmappe, die
Teil eines Dokumentarbeitsbereichs ist, mit der Kopie auf
dem Server synchronisiert wird.
Tabelle: Ereignisse des Application-Objekts
136
Übersicht über die wichtigsten Excel-Objekte
D.2
Das Workbook-Objekt
Die
detaillierte
Syntax
nebst
Beispielen
findet
Objektmodellreferenz in der Excel-Hilfe für Entwickler
D.2.1
man
unter
der
Excel-
Workbook-Object.
Eigenschaften
Die wichtigsten Eigenschaften eines Workbook-Objekts sind wie folgt:
EIGENSCHAFT
BESCHREIBUNG
ActiveSheet
Gibt das aktuelle (aktive) Arbeitsblatt zurück.
Name
Gibt den Namen der Arbeitsmappe zurück oder legt ihn fest.
Names
Gibt eine Names-Auflistung aller Namen der Arbeitsmappe
zurück, z. B. benannte Zellen.
Parent
Gibt das übergeordnete Objekt zurück (Application-Objekt).
Path
Gibt den vollständigen Pfad der Arbeitsmappe/ Datei zurück.
Saved
Hat den Zustand True, wenn die Arbeitsmappe seit dem letzten
Speichern nicht geändert wurde.
Sheets
Gibt eine Sheets-Auflistung zurück, die alle Blätter der
Arbeitsmappe darstellt (Tabellen und Diagramme).
ThisWorkbook
Gibt ein Workbook-Objekt zurück, das die aktuelle Arbeitsmappe
darstellt.
Worksheets
Gibt eine Sheets-Auflistung zurück, die alle Blätter der
Arbeitsmappe darstellt (Tabellen).
Tabelle: Eigenschaften des Workbook-Objekts
D.2.2
Methoden
Die wichtigsten Methoden eines Workbook-Objekts sind wie folgt:
137
Modellbasiertes Logistikmanagement
METHODE
BESCHREIBUNG
Activate
Aktiviert eine einzelne Arbeitsmappe.
Close
Schließt eine einzelne Arbeitsmappe.
PrintOut
Druckt die Arbeitsmappe.
Save
Speichert die Änderungen der Arbeitsmappe.
Tabelle: Methoden des Workbook-Objekts
D.2.3
Ereignisse
Die Ereignisse des Workbook-Objekts sind wie folgt:
EREIGNIS
BESCHREIBUNG
Activate
Tritt auf, wenn eine Arbeitsmappe, ein Arbeitsblatt, ein
Diagrammblatt oder ein eingebettetes Diagramm aktiviert
wird.
AddinInstall
Tritt auf, wenn die Arbeitsmappe als Add-In installiert wird.
AddinUninstall
Tritt auf, wenn die Arbeitsmappe als Add-In deinstalliert wird.
AfterSave
Tritt auf, nachdem die Arbeitsmappe gespeichert wurde.
AfterXmlExport
AfterXmlImport
BeforeClose
138
Tritt auf, nachdem von Microsoft Excel XML-Daten aus der
angegebenen Arbeitsmappe gespeichert oder exportiert
wurden.
Tritt auf, nachdem eine bestehende XML-Datenverbindung
aktualisiert wurde oder neue XML-Daten in eine geöffnete
Microsoft Excel-Arbeitsmappe importiert wurden.
Tritt auf, bevor die Arbeitsmappe geschlossen wird. Wurde
die Arbeitsmappe geändert, tritt dieses Ereignis ein, bevor
der Benutzer gefragt wird, ob die Änderungen gespeichert
werden sollen.
Übersicht über die wichtigsten Excel-Objekte
EREIGNIS
BESCHREIBUNG
BeforePrint
Tritt auf, bevor die Arbeitsmappe (oder darin enthaltene
Teile) gedruckt wird.
BeforeSave
Tritt auf, bevor die Arbeitsmappe gespeichert wird.
BeforeXmlExport
BeforeXmlImport
Tritt auf, bevor XML-Daten aus der angegebenen
Arbeitsmappe von Microsoft Excel gespeichert oder exportiert
werden.
Tritt auf, bevor eine bestehende XML-Datenverbindung
aktualisiert wird oder neue XML-Daten in eine geöffnete
Microsoft Excel-Arbeitsmappe importiert werden.
Deactivate
Tritt auf, wenn das Diagramm, das Arbeitsblatt oder die
Arbeitsmappe deaktiviert wird.
NewChart
Tritt auf, wenn in einer Arbeitsmappe ein neues Diagramm
erstellt wird.
NewSheet
Tritt auf, wenn in einer Arbeitsmappe ein neues Blatt erstellt
wird.
Open
Tritt auf, wenn die Arbeitsmappe geöffnet wird.
PivotTable
CloseConnection
Tritt auf, nachdem eine PivotTable ihre Verbindung zur
Datenquelle geschlossen hat.
PivotTable
OpenConnection
Tritt auf, nachdem eine PivotTable ihre Verbindung zur
Datenquelle geöffnet hat.
RowsetComplete
Das Ereignis wird ausgelöst, wenn der Benutzer einen
Drillthrough durch das Recordset ausführt oder die RowsetAktion für eine OLAP-PivotTable aufruft.
SheetActivate
Tritt auf, wenn ein beliebiges Blatt aktiviert wird.
SheetBefore
DoubleClick
Tritt auf, wenn vor der Standarddoppelklick-Aktion auf ein
beliebiges Arbeitsblatt doppelgeklickt wird.
SheetBefore
RightClick
SheetCalculate
Tritt auf, wenn vor der Standardrechtsklick-Aktion mit der
rechten Maustaste auf ein beliebiges Arbeitsblatt geklickt
wird.
Tritt nach Neuberechnung jedes Arbeitsblatts auf oder wenn
beliebige geänderte Daten in einem Diagramm gezeichnet
werden.
139
Modellbasiertes Logistikmanagement
EREIGNIS
BESCHREIBUNG
SheetChange
Tritt auf, wenn Zellen auf einem beliebigen Arbeitsblatt durch
den Benutzer oder durch eine externe Verknüpfung geändert
werden.
SheetDeactivate
Tritt auf, wenn ein beliebiges Blatt deaktiviert wird.
SheetFollow
Hyperlink
SheetPivotTable
AfterValueChange
SheetPivotTable
Before
AllocateChanges
SheetPivotTable
Before
CommitChanges
SheetPivotTable
Before
DiscardChanges
Tritt auf, wenn Sie in Microsoft Excel auf einen beliebigen
Hyperlink klicken. Weitere Informationen zu Ereignissen auf
Arbeitsmappenebene finden Sie im Hilfethema zum
Worksheet.FollowHyperlink-Ereignis.
Tritt nach der Bearbeitung oder Neuberechnung (bei Zellen,
die Formeln enthalten) einer Zelle oder eines Zellbereichs in
einer PivotTable auf.
Tritt auf, bevor Änderungen auf eine PivotTable angewendet
werden.
Tritt auf, bevor für Änderungen an der OLAP-Datenquelle für
eine PivotTable ein Commit ausgeführt wird.
Tritt auf, bevor Änderungen an einer PivotTable verworfen
werden.
SheetPivotTable
ChangeSync
Tritt nach Änderungen an einer PivotTable auf.
SheetPivotTable
Update
Tritt auf, nachdem das Blatt des PivotTable-Berichts
aktualisiert wurde.
SheetSelection
Change
Tritt auf, wenn sich die Markierung auf einem Arbeitsblatt
ändert (tritt nicht auf, wenn sich die Markierung auf einem
Diagrammblatt befindet).
Sync
(veraltet)
WindowActivate
Tritt auf, wenn ein Arbeitsmappen-Fenster aktiviert wird.
WindowDeactivate
Tritt auf, wenn ein Arbeitsmappen-Fenster deaktiviert wird.
WindowResize
Tritt auf, wenn die Größe eines Arbeitsmappen-Fensters
angepasst wird.
Tabelle: Ereignisse des Workbook-Objekts
140
Übersicht über die wichtigsten Excel-Objekte
D.3
Das Worksheet-Objekt
Die
detaillierte
Syntax
nebst
Beispielen
findet
Objektmodellreferenz in der Excel-Hilfe für Entwickler
D.3.1
man
unter
der
Excel-
Worksheet-Object.
Eigenschaften
Die wichtigsten Eigenschaften eines Worksheet-Objekts sind wie folgt:
EIGENSCHAFT
BESCHREIBUNG
Application
Wird der Objektkennzeichner nicht verwendet, gibt diese
Eigenschaft ein Application-Objekt zurück, das die Anwendung
Excel darstellt.
Wird der Objektkennzeichner verwendet, wird ein ApplicationObjekt zurückgegeben, das den Ersteller des angegebenen
Objekts darstellt. Dies kann z. B. beim Einsatz von OLEAutomatisierungsobjekten von Interesse sein.
Cells
Gibt ein Range-Objekt zurück, das alle Zellen auf dem
Arbeitsblatt darstellt (nicht nur die derzeit verwendeten Zellen).
Columns
Gibt ein Range-Objekt zurück, das alle Spalten des aktiven
Arbeitsblatts darstellt.
Name
Gibt den Namen der Tabelle zurück oder legt ihn fest.
Names
Gibt eine Names-Auflistung aller arbeitsblattspezifischen
Namen (Namen mit dem Präfix "ArbeitsblattName!") zurück.
Parent
Gibt das übergeordnete Objekt zurück (Workbook-Objekt).
Range
Gibt ein Range-Objekt zurück, das eine Zelle oder einen
Zellbereich darstellt (Zellenbereich innerhalb des
Tabellenblatts).
Rows
Gibt ein Range-Objekt zurück, das alle Zeilen im aktiven
Arbeitsblatt darstellt.
UsedRange
Gibt ein Range-Objekt zurück, das den verwendeten Bereich
im aktiven Arbeitsblatt darstellt (benutzte Zellen).
Tabelle: Eigenschaften des Worksheet-Objekts
141
Modellbasiertes Logistikmanagement
D.3.2
Methoden
Die wichtigsten Methoden eines Worksheet-Objekts sind wie folgt:
METHODE
BESCHREIBUNG
Activate
Aktiviert ein einzelnes Arbeitsblatt.
Calculate
Berechnet alle geöffneten Arbeitsmappen, ein bestimmtes
Arbeitsblatt oder einen bestimmten Zellbereich neu.
Select
Markiert ein einzelnes Tabellenblatt.
PrintOut
Druckt das Tabellenblatt.
Delete
Löscht das Tabellenblatt aus der Arbeitsmappe
Tabelle: Methoden des Worksheet-Objekts
D.3.3
Ereignisse
Die Ereignisse des Worksheet-Objekts sind wie folgt:
EREIGNIS
BESCHREIBUNG
Activate
Tritt auf, wenn eine Arbeitsmappe, ein Arbeitsblatt, ein
Diagrammblatt oder ein eingebettetes Diagramm aktiviert
wird.
BeforeDoubleClick
Tritt auf, wenn vor der Standarddoppelklick-Aktion auf ein
Arbeitsblatt doppelgeklickt wird.
BeforeRightClick
Tritt auf, wenn vor Ausführung des Standardrechtsklicks
mit der rechten Maustaste auf ein Arbeitsblatt geklickt
wird.
Calculate
Tritt für das Worksheet-Objekt auf, nachdem das
Arbeitsblatt neu berechnet wurde.
Change
Tritt auf, wenn Zellen des Arbeitsblatts durch den Benutzer
oder durch eine externe Verknüpfung geändert werden.
142
Übersicht über die wichtigsten Excel-Objekte
EREIGNIS
Deactivate
FollowHyperlink
PivotTable
AfterValueChange
BESCHREIBUNG
Tritt auf, wenn das Diagramm, das Arbeitsblatt oder die
Arbeitsmappe deaktiviert wird.
Tritt auf, wenn Sie auf einen beliebigen Hyperlink in einem
Arbeitsblatt klicken. Weitere Informationen zu Ereignissen
auf Anwendungs- und Arbeitsmappenebene finden Sie
unter dem SheetFollowHyperlink-Ereignis und dem
SheetFollowHyperlink Event-Ereignis.
Tritt nach der Bearbeitung oder Neuberechnung (bei
Zellen, die Formeln enthalten) einer Zelle oder eines
Zellbereichs in einer PivotTable auf.
PivotTable
BeforeAllocateChanges
Tritt auf, bevor Änderungen auf eine PivotTable
angewendet werden.
PivotTableBefore
CommitChanges
Tritt auf, bevor für Änderungen an der OLAP-Datenquelle
für eine PivotTable ein Commit ausgeführt wird.
PivotTableBefore
DiscardChanges
Tritt auf, bevor Änderungen an einer PivotTable verworfen
werden.
PivotTable
ChangeSync
Tritt nach Änderungen an einer PivotTable auf.
PivotTableUpdate
Tritt auf, nachdem ein PivotTable-Bericht für ein
Arbeitsblatt aktualisiert wurde.
SelectionChange
Tritt auf, wenn sich die Markierung in einem Arbeitsblatt
ändert.
Tabelle: Ereignisse des Worksheet-Objekts
143
Modellbasiertes Logistikmanagement
D.4
Das Range-Objekt
Die
detaillierte
Syntax
nebst
Beispielen
findet
Objektmodellreferenz in der Excel-Hilfe für Entwickler
D.4.1
man
unter
der
Excel-
Range-Object.
Eigenschaften
Die wichtigsten Eigenschaften eines Range-Objekts sind wie folgt:
EIGENSCHAFT
BESCHREIBUNG
Address
Gibt den Bezug eines Zellenbereichs zurück.
Application
Wird der Objektkennzeichner nicht verwendet, gibt diese
Eigenschaft ein Application-Objekt zurück, das die Anwendung
Excel darstellt. Wird der Objektkennzeichner verwendet, wird ein
Application-Objekt zurückgegeben, das den Ersteller des
angegebenen Objekts darstellt. Dies kann z. B. beim Einsatz von
OLE-Automatisierungsobjekten von Interesse sein.
Cells
Gibt ein Range-Objekt zurück, relativ zum gewählten RangeObjekt.
Column
Gibt die erste Spalte am Anfang des angegebenen Bereichs als
Zahl zurück.
Count
Gibt die Anzahl an Zellen im Range-Objekt zurück.
Font
Gibt ein Font-Objekt zurück, das die Schriftart des Range-Objekts
darstellt.
Formula
Gibt die Formel des Range-Objekts zurück oder legt sie fest.
Parent
Gibt das übergeordnete Objekt zurück (Worksheet-Objekt).
Row
Gibt die erste Zeile am Anfang des angegebenen Bereichs
zurück.
Tabelle: Eigenschaften des Worksheet-Objekts
144
Übersicht über die wichtigsten Excel-Objekte
D.4.2
Methoden
Die wichtigsten Methoden eines Range-Objekts sind wie folgt:
METHODE
BESCHREIBUNG
Activate
Aktiviert eine einzelne Zelle, die sich innerhalb der aktuellen
Markierung befindet.
Calculate
Berechnet alle geöffneten Arbeitsmappen, ein bestimmtes
Arbeitsblatt oder einen bestimmten Zellbereich neu.
Select
Markiert eine Zelle oder einen Zellbereich.
Tabelle: Methoden des Worksheet-Objekts
D.4.3
Ereignisse
Das Range-Objekt enthält keine Ereignisse.
145
Modellbasiertes Logistikmanagement
Literaturverzeichnis
Billo, Joseph E. (2007): Excel for Scientists and Engineers: Numerical Methods, John
Wiley & 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 unter
Verwendung des Excel-Solvers, Diplomarbeit FB Wirtschaftsinformatik,
Fachhochschule Dortmund.
Brokamp, Oliver (2011): Heuristische Verfahren zur Tourenplanung mit Zeitfenstern
unter
Verwendung
der
Tabellenkalkulation,
Bachelor
Thesis,
FB
Wirtschaftsinformatik, 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-6
Deininghaus, Julia; Holtkötter, Tobias; Paulsen, Björn (2012): Ein Crash Kurs in
Excel VBA, Projektarbeit, Fachbereich Wirtschaftsinformatik, Fachhochschule
Dortmund.
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. Oldenbourg
Verlag, München, Wien, 4. Auflage.
Domschke, Wolfgang ; Drexl, Andreas (1996): Logistik: Standorte, R. Oldenbourg
Verlag, München, Wien, 4. Auflage.
146
Übersicht über die wichtigsten Excel-Objekte
Domschke, Wolfgang und Drexl, Andreas (2006): Einführung in Operations
Research, 7. Auflage, Springer-Verlag, Berlin Heidelberg; ISBN 978-3-54070948-0.
Domschke, W.; Drexl, A.; Klein, R.; Scholl, A. und Voß, S. (2002): Übungen und
Fallbeispiele zum Operations Research, 4. Auflage, Springer-Verlag, Berlin
Heidelberg; ISBN 3-540-43334-1.
Feige, Dieter; Klaus, Peter (2008): Modellbasierte Entscheidungsunterstützung in der
Logistik, Deutscher Verkehrs-Verlag, Hamburg.
Gillett, B.E.; Miller, L.R. (1974): A Heuristic Algorithm for the Vehicle-Dispatch
Problem, 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 + Teubner
Verlag, 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
Modellbasiertes Logistikmanagement
Powell, Stephen G. / Baker, Kenneth R. (2007): The Art of Modeling with
Spreadsheets: Management Science, Spreadsheet Engineering, and Modeling
Craft, 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, Heinz-Michael (2012): Modellbasiertes Logistikmanagement 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 Science
Spreadsheets Modeling and Applications, Duxberry Press, 3rd Edition.
Die in dieser Arbeit verwendeten Landkarten sind unter Zuhilfenahme von „Google
Maps“ entstanden.
148
Übersicht über die wichtigsten Excel-Objekte
Stichwortverzeichnis
A
Anspruchsniveau ........................................................ 43
Arbeitsblatt ................................................................ 19
B
Barrieren.................................................................... 73
Baum
minimaler spannender Baum ............................... 488
spannender Baum ............................................... 488
Baustoffhandel ........................................................... 16
Beschränkung............................................................. 35
Bewertungsmatrix ...................................................... 33
Big-M ......................................................................... 48
Binärbedingung .......................................................... 40
binäre Optimierung .................................................... 42
Blockabstand.............................................................. 72
Bottleneck Transportmodell ..................................... 205
Bottleneck Zuordnungsmodell .................................. 305
Bound Bedingung ....................................................... 40
Breitengrad ................................................................ 64
Briefträgerproblem................................................... 588
gerichter Graph ................................................... 593
ungerichteter Graph ............................................ 593
Briefträgertour ......................................................... 594
C
CALC/ OpenOffice..................................................... 658
Capacitated Chinese Postman Problem ..................... 587
Capacitated Vehicle Routing Problem ....................... 514
Capacitated Vehicle Routing Problem with Time
Windows ............................................................. 567
Center
1-Center im Netzwerk.......................................... 381
1-Center-Problem der Ebene ............................... 426
Center im Netzwerk............................................. 381
p-Center in Netzwerken....................................... 396
p-Center-Problem im Koordinatensystem ............ 432
chemische Industrie ................................................... 16
Christofides .............................................................. 488
Covering Location Problem ....................................... 363
CVRP ........................................................................ 514
CVRPTW ................................................................... 568
D
Decision Support System ............................................ 12
Dezimalgrad ............................................................... 64
Dijkstra-Algorithmus .................................. 187, 189, 562
direkte Entfernungsbestimmung ................................. 58
disjunktive Variablen .................................................. 49
Distanzmatrix ............................................................. 33
Dreiecksungleichung................................................... 72
Durchfahrtprobleme................................................. 445
E
Entfernungen ............................................................. 58
Entscheidungsfindung .................................................. 1
Entscheidungshilfe ....................................................... 1
Entscheidungsvariable ................................................ 35
EULER-Weg .............................................................. 490
Evolutionsalgorithmus ................ 418, 419, 427, 434, 435
Extremwertaufgabe.................................................... 37
F
Fixkosten-Transportmodell ....................................... 225
G
GAMS......................................................................... 13
ganzzahlige Optimierung ............................................ 42
Ganzzahligkeitsbedingung .......................................... 40
General Routing-Problem ......................................... 618
Ges2Yyy ..................................................................... 21
Ges4Xxx ..................................................................... 20
Globalisierung .............................................................. 2
Google Earth .............................................................. 65
Google Maps .............................................................. 66
Graph......................................................................... 31
bewerteter Graph.................................................. 31
gemischter Graph .................................................. 31
gerichteter Graph .................................................. 31
H
Heterogener Fuhrpark .............................................. 587
I
Indikator .................................................................... 47
Innerbetriebliche Standortzuordnung ....................... 312
Intervallvariablen ....................................................... 51
K
Kante ......................................................................... 31
kartesische Koordinatensysteme................................. 59
Knoten ....................................................................... 31
isolierter Knoten.................................................... 32
kombinatorische Optimierung .................................... 42
Kopfspalte.................................................................. 19
Kopfzeile .................................................................... 19
k-opt Verfahren
2-opt ................................................................... 505
3-opt ................................................................... 505
k-opt ................................................................... 505
Korrekturfaktoren ...................................................... 73
Kostenmatrix.............................................................. 33
Kreisverkehr ............................................................... 34
Kugeloberfläche ......................................................... 64
Kurier- Express- und Paketdienst............................... 134
Kurswinkel ............................................................... 470
kürzester Weg .......................................................... 172
von einem Knoten zu allen anderen ..................... 180
zwischen allen Knoten .................................. 187, 189
zwischen zwei Knoten................................... 173, 180
149
Modellbasiertes Logistikmanagement
L
O
Lagerkosten................................................................ 56
Längengrad ................................................................ 64
Latitude...................................................................... 64
LE 56
Lebensmittelindustrie................................................. 15
lineare Optimierung ................................................... 39
logische Bedingungen ................................................. 46
Logistikeinheiten ........................................................ 56
Logistikkosten ............................................................ 56
logistische Versorgungskette ........................................ 2
Longitude ................................................................... 64
Lösungsgenerator....................................................... 12
Open Office .............................................................. 658
Optimierungskriterium ......................................... 35, 54
Optimum.................................................................... 35
M
Matching.................................................................. 489
minimales Kosten Matching ................................. 489
mathematische Optimierung ...................................... 35
mathematisches Modell ............................................... 1
Matrixbezeichnung ..................................................... 20
Matrixminimum-Verfahren ....................................... 110
maximaler Fluss........................................................ 164
Maximum................................................................... 36
Maximum-Benefit-Briefträgerproblem ...................... 618
Maximum-Covering-Location-Problem ...................... 374
m-Briefträgerproblem .............................................. 618
Median
1.Median in der Ebene......................................... 403
1-Median im Netzwerk ........................................ 381
p-Median im Netzwerk ........................................ 383
p-Median-Problem im Koordinatensystem ........... 415
Mediane
Mediane im Netzwerk ......................................... 381
Mehrdepotproblem.................................................. 586
Mehrperiodenproblem ............................................. 587
Miller-Tucker-Zemlin ................................................ 444
Mineralölindustrie ........................................................ 4
Minimum ................................................................... 36
MINV(A) ..................................................................... 29
MKM........................................................................ 489
MMULT(A,B) .............................................................. 28
Modellgenerator ........................................................ 12
MODI-Verfahren......................................................... 78
Monitoring ................................................................. 17
MS Excel 2003 .......................................................... 619
MS Excel 2010 .......................................................... 637
MSB ......................................................................... 489
MTRANS(A) ................................................................ 22
MTZ-Bedingung ........................................................ 444
verallgemeinert ................................................... 517
N
Nachfolger ................................................................. 32
Nebenbedingung ........................................................ 35
Netz ........................................................................... 31
Netzflussmodell........................................................ 143
Netzwerk ................................................................... 31
nichtlineare Optimierung............................................ 42
Nicht-Negativitätsbedingung ...................................... 40
Nordwestecken-Regel............................................... 109
150
P
Petal-Algorithmen .................................................... 555
Pfad ........................................................................... 32
Pfeil ........................................................................... 31
Polarwinkel .............................................................. 466
Premium-Solver........................................................ 649
MS-Excel 2003..................................................... 630
Prim-Algorithmus ..................................................... 489
Q
Quadratischer Abstand ............................................... 72
Quelle ........................................................................ 32
R
Reflexivität ................................................................. 72
Reportgenerator......................................................... 12
Repsol Butano ........................................................ 4, 18
Restriktion ................................................................. 35
Rural Postman Problem ............................................ 618
S
Satz des Pythagoras .................................................... 67
Savings-Verfahren .................................................... 535
Senke ......................................................................... 32
Set-Covering-Location-Problem ................................ 363
Single-Source-Transportmodell ................................. 218
Small-L ....................................................................... 49
SOL .............................................................................. 7
Spaltenbezeichnung ................................................... 20
Spaltenindex .............................................................. 19
Spaltenminimum-Verfahren ..................................... 109
sphärische Trigonometrie ........................................... 68
Standard-Solver
MS-Excel 2003..................................................... 625
MS-Excel 2010..................................................... 643
Standortoptimierung ................................................ 330
Standortplanung
diskret................................................................. 330
kontinuierlich ...................................................... 330
Steiner-Weber-Modell .............................................. 403
Supply Chain ................................................................ 2
Sweep-Verfahren ..................................................... 549
Symmetrie ................................................................. 72
T
T_XxxYyy .................................................................... 20
Tabelle ....................................................................... 19
Tourenplanung
kapazitätsbeschränkt ........................................... 514
kapazitätsbeschränkt mit Zeitfenster ................... 567
Tourenplanungsprobleme
Heuristiken.......................................................... 535
Transportkosten ......................................................... 56
Übersicht über die wichtigsten Excel-Objekte
Transportmodell
einstufig ................................................................ 76
Heuristiken.......................................................... 107
klassisches Transportmodell .................................. 76
kombiniert 1- oder 2-stufig .................................. 134
mehrstufig .......................................................... 143
zweistufig ............................................................ 124
Transportmodelle mit mehreren Gütern ................... 233
Transportoptimierung ................................................ 54
Travelling-Salesman-Problem.................................... 441
Heuristiken.......................................................... 466
Tripel-Algorithmus............................................. 187, 188
TSP........................................................................... 442
geschlossen......................................................... 445
offen ................................................................... 445
Warehouse Location Problem
einstufig kapazitiert ............................................. 333
mehrstufig kapazitiert ......................................... 355
zweistufig kapazitiert ........................................... 340
Warehouse-Location-Probleme ................................ 333
Weg ........................................................................... 32
Windy Postman Problem .......................................... 618
Wirkkoeffizienten ..................................................... 198
WLP ......................................................................... 333
U
Z
Umschlagsmodell ..................................................... 124
Unimodularität ........................................................... 45
unproduktive Strecke ............................................... 589
Zeilenbezeichnung...................................................... 20
Zeilenindex................................................................. 19
Zeilenminimum-Verfahren........................................ 110
Zielfunktion ................................................................ 35
zulässiger Bereich ....................................................... 37
Zuordnungsmodell
klassisch .............................................................. 278
quadratisch ......................................................... 312
symmetrisch........................................................ 296
verallgemeinert ................................................... 288
Zuordnungsoptimierung ........................................... 278
Zuordnungsproblem
Heuristiken.......................................................... 324
V
VARIGNONscher Apparat .......................................... 406
Vektor ........................................................................ 19
Spaltenvektor ........................................................ 19
Zeilenvektor .......................................................... 19
Vektoroptimierung ..................................................... 43
verbundene Variablen ................................................ 50
Verfahren der sukzessiven Einbeziehung ................... 480
Verfahren des besten Nachfolgers ............................ 477
Verfahren von Christofides ....................................... 488
VOGELsches Approximationsverfahren ..................... 111
Vorgänger .................................................................. 32
W
151

Documentos relacionados