logistikmanagement mit heuristiken - fhdo- · pdf filelogistikmanagement mit heuristiken ....
TRANSCRIPT
Logistikmanagement
mit Heuristiken
Logistische Problemstellungen
unter Verwendung von Excel VBA lösen
Prof. Dr. Heinz-Michael Winkels
WS 2013/14
Modellbasiertes Logistikmanagement
II
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
Inhaltsverzeichnis
III
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
Modellbasiertes Logistikmanagement
IV
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
Inhaltsverzeichnis
V
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
Modellbasiertes Logistikmanagement
6
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/
Crash-Kurs in Excel VBA
7
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 Die Entwicklungsumgebung von Excel VBA
A.1.1 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
Modellbasiertes Logistikmanagement
8
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).
Crash-Kurs in Excel VBA
9
Man spricht auch von einem Container für die unterschiedlichen Arten von
Programm-Code und nennt die Arten allgemein Module. Dazu gehören1:
• 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.
Modellbasiertes Logistikmanagement
10
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.
Crash-Kurs in Excel VBA
11
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:
• Taste F4 drücken,
• Registerkarte Ansicht Eigenschaftenfenster wählen,
1 Personal.xlsb wird seit Excel 2007 für die persönliche Makrosammlung benutzt, vorher war das die
Datei personl.xls
Modellbasiertes Logistikmanagement
12
• 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 F1-Taste.
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.
Crash-Kurs in Excel VBA
13
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
Modellbasiertes Logistikmanagement
14
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
Crash-Kurs in Excel VBA
15
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
Modellbasiertes Logistikmanagement
16
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 im
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
Crash-Kurs in Excel VBA
17
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.
Modellbasiertes Logistikmanagement
18
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
Crash-Kurs in Excel VBA
19
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
Modellbasiertes Logistikmanagement
20
Ü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 (1) angezeigt und an der
Crash-Kurs in Excel VBA
21
gleichen Stelle auch wieder ausgeblendet. Für die Suchanfragen wird das
Eingabefeld (2) genutzt. Darüber hinaus besteht die Möglichkeit, über den Drop-
down-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.
Modellbasiertes Logistikmanagement
22
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
Crash-Kurs in Excel VBA
23
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
Modellbasiertes Logistikmanagement
24
A.2 Die Eingabe von Programm-Code
Die 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 Code-Fenster 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.
Crash-Kurs in Excel VBA
25
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
Modellbasiertes Logistikmanagement
26
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.
Crash-Kurs in Excel VBA
27
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
Modellbasiertes Logistikmanagement
28
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
Crash-Kurs in Excel VBA
29
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
Modellbasiertes Logistikmanagement
30
• 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 Symbolleiste1
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“
Crash-Kurs in Excel VBA
31
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
Modellbasiertes Logistikmanagement
32
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 Formular-Designers 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 Projekt-
Explorer doppelt auf den Namen des Modules, das diesen Text enthält oder wählt –
wie oben erwähnt - das gewünschte Makro über die Registerkarte Entwicklertools
mit Klick auf das Symbol Makros.
Crash-Kurs in Excel VBA
33
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 Prozedur-
Typen (SUB, FUNCTION, PROPERTY) sowie der Gültigkeitsbereich der Prozedur
festgelegt werden.
Modellbasiertes Logistikmanagement
34
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 Möglichkeit besteht darin, den Lauf des Makros mit Hilfe der
Crash-Kurs in Excel VBA
35
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.
Modellbasiertes Logistikmanagement
36
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.
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
MsgBox(Prompt[, Buttons] [, Title] [, Helpfile, HelpContextId])
Crash-Kurs in Excel VBA
37
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.
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
InputBox(prompt [, Title] [, Default] [, Left] [, Top] _ [, Helpfile, HelpContextId])
Modellbasiertes Logistikmanagement
38
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.
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:
Objekt.InputBox(Prompt [, Title] [, Default] [, Left] [, Top] _ [, HelpFile, HelpContextId][, Type])
Crash-Kurs in Excel VBA
39
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
Modellbasiertes Logistikmanagement
40
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.
Crash-Kurs in Excel VBA
41
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
Modellbasiertes Logistikmanagement
42
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_Activate-Ereignisprozedur 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:
Crash-Kurs in Excel VBA
43
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.
Modellbasiertes Logistikmanagement
44
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-Anweisung
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 Steuerelemente-
Eigenschaften 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
Load UserFormName
UserFormName.Show
Crash-Kurs in Excel VBA
45
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
Modellbasiertes Logistikmanagement
46
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/de-de/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
Crash-Kurs in Excel VBA
47
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.
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.
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
Modellbasiertes Logistikmanagement
48
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
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:
[Private | Public] [Static] Sub Name [(ArgListe)]
[Anweisungen]
[Exit Sub]
[Anweisungen]
End Sub
Crash-Kurs in Excel VBA
49
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 Variant-
Elementen 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
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
[Optional][ByVal | ByRef] [ParamArray] VarName[()]
[As Typ][=Standardwert]
Call ProzedurName[(ArgListe)]
bzw.
ProzedurName[ArgListe]
Modellbasiertes Logistikmanagement
50
A.3.3.2 Function-Prozeduren
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.
[Public | Private | Friend] [Static] Function Name [(ArgListe)]
[As Typ]
[Anweisungen]
[Name = Ausdruck]
[Exit Function]
[Anweisungen]
[Name = Ausdruck]
End Function
Crash-Kurs in Excel VBA
51
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 WERTEBEREICH/
SPEICHERBEDARF KÜRZEL DEFTYP
Ganze Zahlen
Byte Wertebereich: 0. . . 255, 1 Byte Speicherbedarf kein DefByte
Integer Integer Wertebereich: -32 768. . . 32 767, 2 Byte Speicherbedarf
% DefInt
Long Wertebereich: -2 147 483 648. . . 2 147 483 647, 4 Byte Speicherbedarf
& DefLng
Reelle Zahlen
Single Fließkommazahl mit 8 Stellen Genauigkeit, 4 Byte Speicherbedarf
! DefSng
Double Fließkommazahl mit 16 Stellen Genauigkeit, 8 Byte Speicherbedarf
# DefDbl
Currency
Festkommazahlen mit 15 Stellen Genauigkeit vor und 4 Stellen hinter dem Komma; Speicherbedarf: 8 Byte
@ DefCur
[Public | Private] [Static] Property {Get | Let | Set}
Eigenschaftsname [(Argumente)] [As Typ]
Anweisungen
End Property
Modellbasiertes Logistikmanagement
52
WERT DATENTYP WERTEBEREICH/
SPEICHERBEDARF KÜRZEL DEFTYP
Zeichenketten String Speicherbedarf: 10 Byte und 2 Byte pro Zeichen; Länge nur durch RAM begrenzt
$ DefStr
Wahrheitswerte Boolean
Datentyp, der nur zwei Werte annehmen kann (True, False); Speicherbedarf: 2 Byte
kein DefBool
Variant-Datentyp Variant
Nimmt je nach Bedarf einen der obigen Datentypen an; Speicherbedarf: mindestens 16 Byte, bei Zeichenketten 22 Byte plus 2 Byte pro Zeichen
kein DefVar
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
Crash-Kurs in Excel VBA
53
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.
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
[Private | Public] Enum EnumName
ElementName1 [= Konstantenausdruck] [ElementName2 [= Konstantenausdruck]] ...
End Enum
Modellbasiertes Logistikmanagement
54
gesamte umgebende Modul definiert. Konstanten können an allen Stellen verwendet
werden, an denen auch ein Ausdruck zulässig ist.
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 Konstanten
erläutert.
• 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
[Public | Private] Const Name [ As Datentyp ] = Ausdruck
Crash-Kurs in Excel VBA
55
• 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
Modellbasiertes Logistikmanagement
56
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 EINER VARIABLEN
DEKLARATION
Öffentlich (alle Prozeduren in allen Modulen (des Projektes))
Deklaration vor der Sub-Zeile mit Public-Anweisung z. B.: Public Variable As Datentyp
Privat (nur in den Prozeduren des Moduls)
Deklaration vor Sub-Zeile mit Private-Anweisung z. B.: Private Variable As Datentyp
Lokal vergänglich (Prozedurebene, Wert wird gelöscht)
Deklaration nach der Sub-Zeile mit Dim-Anweisung
Lokal statisch (Prozedurebene, Wert wird beibehalten)
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 Dim-Anweisung 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
Crash-Kurs in Excel VBA
57
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:
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 11x21-
Matrix.
Festlegen der Startindizes:
Die Dim-Anweisung kann auch in Kombination mit einem leeren Klammernpaar zur
Deklaration eines dynamischen Datenfelds verwendet werden. Nach einer solchen
Dim Name1 As Datentyp1[, Name2 As Datentyp2[, …]]
Dim Name1DatentypKürzel1[, Name2DatentypKürzel2[, …]]
DefTyp Buchstabenbereich1[, Buchstabenbereich2[, …]]
Dim Name (Dimension1[, Dimension2[,…]]) As Datentyp
Option Base {0 | 1}
Modellbasiertes Logistikmanagement
58
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:
Neudimensionierung von Datenfeldern:
Das Preserve rettet dabei – soweit möglich – vorhandene Daten, während die
nachfolgende Anweisung das Datenfeld neu initialisiert:
Neuinitialisierung von Datenfeldern:
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:
Beispiel: Dim LuftDistanz(5 To 10,10 To 20, 30) As Double
Wenn keine Untergrenze angegeben ist, wird die Vorgabe durch Option Base
vorausgesetzt.
Dim Name()
Redim [Preserve] Name (Dimension1 [, Dimension2 [,…]]) As Datentyp
Erase Name
Dim Name (Indizes1[, Indizes2[,…]]) As Datentyp
Crash-Kurs in Excel VBA
59
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
Modellbasiertes Logistikmanagement
60
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:
Block Syntax:
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 IIF-Verzweigung
If Bedingung Then Aktion1 Else Aktion2
‘ Version 1 If Bedingung Then
Anweisungsblock1 Else
Anweisungsblock2 End If ‘ Version 2 If Bedingung1 Then
Anweisungsblock1 ElseIf Bedingung2
Anweisungsblock2 Else
Anweisungsblock3 End If
Crash-Kurs in Excel VBA
61
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-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…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).
IIf(Ausdruck, korrekt, falsch)
For Zähler = Anfang To Ende
Anweisung [Exit For] [Anweisung]
Next [Zähler]
For Each Element In Gruppe
[Anweisung] [Exit For] [Anweisung]
Next [Element]
Modellbasiertes Logistikmanagement
62
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…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…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.
Do Until Bedingung
Anweisung [Exit Do] [Anweisung]
Loop
Do While Bedingung
Anweisung [Exit Do] [Anweisung]
Loop
Crash-Kurs in Excel VBA
63
Select Case-Anweisung
Select Case Ausdruck
Case Auswahlwert1 [Anweisungsblock1]
Case Auswahlwert2 [Anweisungsblock2]
… [Case Else
Anweisungsblock x] End Select
Modellbasiertes Logistikmanagement
64
A.4 Verwendung der verschiedenen Funktions-Arten in Excel-VBA1
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 Benutzerdefinierte VBA-Funktionen
A.4.2.1 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.
Man beachte im Beispiel, dass die Parameter der Funktion in der Function-
Anweisung per Kommata getrennt werden.
Im Sinne eines guten Programmierstils ist übrigens immer auf eine 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).
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
Crash-Kurs in Excel VBA
65
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.
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!
Function Mult7(x As Integer) As Integer Mult7 = 7 * x End Function
Modellbasiertes Logistikmanagement
66
Abbildung: Aufruf einer benutzerdefinierten Funktion mit mehreren Parametern
A.4.3 Vorinstallierte VBA-Funktionen
A.4.3.1 Verwendung in VBA-Prozeduren
Vorinstallierte Funktionen lassen sich - ob mit oder ohne Parameter – direkt in
Prozeduren aufrufen.
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 VBA-
Funktionen nicht direkt in Arbeitsblättern aufrufen. Schreibt man beispielsweise
‘ ‘ ohne Parameter ‘ Sub PathAct() MsgBox CurDir End Sub ‘ ‘ mit Parameter ‘ Sub TypeAct() MsgBox TypeName(ActiveSheet) End Sub
Crash-Kurs in Excel VBA
67
= 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.
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 VBA-
Funktionen 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.excel-
translator.de.
Absolute oder relative Bezugsart
1 Hier wird grundsätzlich von einer deutschsprachigen Excel-Version ausgegangen.
Function UmgebungsVariable() UmgebungsVariable = Environ("Path") End Function
Modellbasiertes Logistikmanagement
68
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 (DEUTSCH)
REFERENZ (ENGL.)
BEDEUTUNG
Z(-10)S R[-10]C Ein relativer Bezug auf die Zelle, die sich in derselben Spalte zehn Zeilen über der aktiven Zelle befindet.
Z(10)S(5) R[10]C[5] Ein relativer Bezug auf die Zelle, die sich zehn Zeilen unter und fünf Spalten rechts von der aktiven Zelle befindet.
Z10S5 R10C5 Ein absoluter Bezug auf die Zelle, die sich in der zehnten Zeile und in der fünften Spalte befindet.
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.
Crash-Kurs in Excel VBA
69
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 Excel-
Versionen und für die Rückgabe von Fehlerwerten.
A.4.4.3 VBA-Befehle für die Zellenbelegung in Arbeitsblättern
Value: Eintrag eines absoluten Wertes
Formula: Eintrag einer Formel mit absolutem Zellbezug
‘ 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
‘ 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
‘ 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
Modellbasiertes Logistikmanagement
70
FormulaR1C1: Eintrag einer Formel mit relativem Zellbezug
Der relative Bezug wird in eckigen Klammern bei den Rows und Columns
angegeben. Im folgenden Beispiel treten relativer und absoluter Zellbezug auf.
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.
FormulaLocalR1C1: Eintrag einer Formel in deutscher Syntax 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
‘ 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
‘ 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
Crash-Kurs in Excel VBA
71
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:
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.
‘ 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
‘ 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
Modellbasiertes Logistikmanagement
72
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
Instanzierung1.
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.
Crash-Kurs in Excel VBA
73
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:
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
Oft kommt es in Prozeduren vor, dass mehrere Elemente eines Objektes
hintereinander verarbeitet werden. Dann kann man folgende Schreibweise benutzen:
Objekt[.Unterobjekt…][.Methode | .Eigenschaft | .Ereignis ]
UserForm1.TextBox1.Text = „Das ist ein Eingabefeld!“ TextBox1.Text = „Das ist ein Eingabefeld!“ TextBox1 = „Das ist ein Eingabefeld!“
Modellbasiertes Logistikmanagement
74
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.
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.
With Objektname .Eigenschaft1 = Wert .Eigenschaft2 = Wert .Eigenschaft3 = Wert … .Methode1([Parameterliste1] .Methode2([Parameterliste2] .Methode3([Parameterliste3] … End With
ActiveWorkbook.Windows(1).Caption = "Tourenplan" ActiveWorkbook.Windows("Tourenplan").ActiveSheet.Calculate
Crash-Kurs in Excel VBA
75
Die Zuweisung von Objekten an Variable geschieht nicht über „=“ sondern über die
Set-Anweisung:
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.
A.5.5 Das Excel Objektmodell
Programmierobjekte werden in der Hierarchie des Objektmodells der Anwendung
organisiert und spiegeln so grob die Programmoberfläche wider.
Abbildung: Excel Objektmodell
Dabei bedeutet:
Application
Workbook
Worksheet
Range
[...]
[...] [...]
[...] [...]
[...]
Dim Objektvariable As Objekt
Set Objektvariable = Objektausdruck
Set myObject = ActiveWorkbook MsgBox myObject.Sheets(2).Name
Modellbasiertes Logistikmanagement
76
• 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:
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
Application.Windows("VBATest.xlsx").Activate 'oder Application.Workbooks("VBATest.xlsx ").Activate
Crash-Kurs in Excel VBA
77
ausgewählt werden, so geschieht das in der Regel durch die Angabe des
Dateinamens.
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:
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
Workbooks(“VBATest.xlsx”).Activate
Worksheets("Tabelle1").Activate ‘oder Worksheets(1).Activate
Modellbasiertes Logistikmanagement
78
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 Syntax-
Versionen:
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.
Objekt.Range(Zellbereich) Objekt.Range(Zellbereich1, Zellbereich2)
Crash-Kurs in Excel VBA
79
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 Syntax-
Varianten:
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
Worksheets(“Tabelle1“.Range(“B1“,“D3“) Worksheets(“Tabelle1“.Range(“B1:C3“,“C1:E5“)
Objekt.(Cells(Row1,Column1), Cells(Row2,Column2)) Objekt.Cells(Row,Column) Objekt.Cells
Modellbasiertes Logistikmanagement
80
• 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.
Beispiele:
A.5.6.5 Relatives Versetzen von Bereichen und Cursor
Range(Zellbereich).Select Cells(RowIndex,ColumnIndex).Select Rows(RowIndex).Select Columns(ColumnIndex).Select
Worksheets(“Tabelle1”).Activate Range(“C2:F14”).Select Range(“B2”).Activate Rows(17).Select Columns(19).Select
Crash-Kurs in Excel VBA
81
Offset ist eine Eigenschaft des Range-Objektes, das einen Bereich darstellt, der
gegenüber dem angegebenen Bereich versetzt ist.
Beispiel
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.
Rangeobjekt.Offset(rowOffset,columnOffset) rowOffset (optional): Anzahl der Versatzzeilen nach unten (positiv), 0, oder bei negative Werten nach oben. columnOffset (optional): Anzahl der Versatzspalten nach rechts (positiv), 0, oder bei negative Werten nach links.
‘ 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)
‘ 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
Modellbasiertes Logistikmanagement
82
A.5.6.7 Wertzuweisungen mit Value-Eigenschaft
Als Default-Wert kann die Angabe „Value“ zu einem Range-Objekt entfallen.
A.5.6.8 Formeln eintragen mit der Formula-Eigenschaft
A.5.6.9 Formatierung von Zellbereichen
Hinsichtlich der Zellformatierung können Schrifttypen, Rahmen und Farben vergeben
werden.
Die allgemeine Syntax lautet:
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
Range(”A1”).Formula = “= A2 + A3” ‘ Sheets(“Tabelle1”).Cells(1,1)).Formula = “= A2 + A3” ‘ auch: ActiveCell.Formula = “= A2 + A3”
‘Schrifttypen Range.Font.Eigenschaft = Wert
'Rahmen Objekt.Borders Objekt.Borders(Index)
Crash-Kurs in Excel VBA
83
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:
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
‘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)
Range(Zellbereich).Clear
Modellbasiertes Logistikmanagement
84
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.
Um Eigenschaftswerte nur auslesen aber nicht verändern zu können, kann man
Public Functions benutzen:
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:
• 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 Get-
Prozedur deklariert, so ist die Eigenschaft schreibgeschützt.
Public Bereich As String
Public Function Bereich() As String Bereich = “A1:B10” End Function
[Public | Private] [Static] Property {Get | Let | Set}
Eigenschaftsname [(Argumente)] [As Typ]
Anweisungen
End Property
Crash-Kurs in Excel VBA
85
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
Modellbasiertes Logistikmanagement
86
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:
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:
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.
Dim Objektvariable As New Klassenname
Dim Objektvariable As KlassenName Set Objektvariable As New KlassenName
Crash-Kurs in Excel VBA
87
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:
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.
A.5.10 Erstellung von Ereignisprozeduren
A.5.10.1 Allgemeine Ereignisprozeduren
Dim Objektvariable As Object … … Set Objektvariable As New KlassenName
Dim Objektvariable As Object … Set Objektvariable As New KlassenName1 … Set Objektvariable As New KlassenName2 Set Objektvariable = Nothing
Modellbasiertes Logistikmanagement
88
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 Objekt mit WithEvents erstellen
Crash-Kurs in Excel VBA
89
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:
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:
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.
[Dim | Public | Private] WithEvents Objektvariable As Klassenname
Public WithEvents App As Application
Modellbasiertes Logistikmanagement
90
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
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:
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.
Application.EnableEvents = False ActiveWorkbook.Save Application.EnableEvents = True
Dim X As New EventClassModule Sub InitializeApp()
Set X.App = Application End Sub
Übersicht über die vorinstallierten VBA-Funktionen
91
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.
B.1 Datums- und Zeitfunktionen1
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.
Modellbasiertes Logistikmanagement
92
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 Textfunktionen1
1 Siehe Held(2004), Seite 122.
Übersicht über die vorinstallierten VBA-Funktionen
93
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 Gibt einen Wert zurück, der eine bestimmte Anzahl von Zeichen ab dem ersten linken Zeichen einer Zeichenfolge enthält
Len Gibt einen Wert vom Typ Long zurück, der die Anzahl der Zeichen in einer Zeichenfolge oder die zum Speichern erforderlichen Bytes enthält
Mid Gibt einen Wert vom Typ Variant zurück, der eine bestimmte Anzahl von Zeichen aus einer Zeichenfolge enthält
Replace Liefert Zeichenfolge, in der eine festgelegte, untergeordnete Zeichenfolge mit einer festgelegten Häufigkeit durch eine andere untergeordnete Zeichenfolge ersetzt wurde
Right 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
Modellbasiertes Logistikmanagement
94
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
Übersicht über die vorinstallierten VBA-Funktionen
95
B.3 Dateifunktionen und Anweisungen1
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.
Modellbasiertes Logistikmanagement
96
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 Regelt die Zugriffsmöglichkeiten anderer Prozesse auf eine Datei (oder auf Teile einer Datei), die mit der Open-Anweisung geöffnet wurde.
LSet
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.
Übersicht über die vorinstallierten VBA-Funktionen
97
FUNKTION BESCHREIBUNG
Write Schreibt Daten in eine sequentielle Datei.
Tabelle: Dateifunktionen und Anweisungen
B.4 Mathematische Funktionen1
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
Modellbasiertes Logistikmanagement
98
FUNKTION BESCHREIBUNG
IRR Gibt einen Wert vom Typ Double zurück, der den internen Ertragssatz für eine Folge regelmäßiger Cash Flows (Aus- und Einzahlungen) angibt.
Log Gibt einen Wert vom Typ Double zurück, der den natürlichen Logarithmus einer Zahl angibt.
NPer 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.
NPV Gibt einen Wert vom Typ Double zurück, der den Netto-Barwert einer Investition bei regelmäßigen Cash Flows (Aus- und Einzahlungen) und einem Diskontsatz angibt.
Pmt 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.
PPmt
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.
PV
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.
Übersicht über die vorinstallierten VBA-Funktionen
99
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
Modellbasiertes Logistikmanagement
100
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 Funktionen1 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 (DEUTSCH)
FUNCTION (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 Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers zurück, die bei Fälligkeit ausgezahlt werden
AUFGELZINS ACCRINT Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers mit periodischen Zinszahlungen zurück
AUSZAHLUNG RECEIVED Gibt den Auszahlungsbetrag eines voll investierten Wertpapiers am Fälligkeitstermin zurück
BW PV Gibt den Barwert einer Investition zurück
DIA SYD Gibt die arithmetisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück
DISAGIO DISC Gibt den in Prozent ausgedrückten Abzinsungssatz eines Wertpapiers zurück
1 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
Übersicht über die Excel-Funktionen
101
FUNKTION (DEUTSCH)
FUNCTION (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 Gibt die geometrisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück
GDA DDB
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
IKV IRR Gibt den internen Zinsfuß einer Investition ohne Finanzierungskosten oder Reinvestitionsgewinne zurück
ISPMT ISPMT Berechnet die während eines bestimmten Zeitraums für eine Investition gezahlten Zinsen
KAPZ PPMT Gibt die Kapitalrückzahlung einer Investition für eine angegebene Periode zurück
KUMKAPITAL CUMPRINC Berechnet die aufgelaufene Tilgung eines Darlehens, die zwischen zwei Perioden zu zahlen ist
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
KURSFÄLLIG PRICEMAT Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt
KURS PRICE Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das periodisch Zinsen auszahlt
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
Modellbasiertes Logistikmanagement
102
FUNKTION (DEUTSCH)
FUNCTION (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
NOTIERUNGBRU DOLLARFR Wandelt eine Notierung, die als Dezimalzahl ausgedrückt wurde, in einen Dezimalbruch um
NOTIERUNGDEZ DOLLARDE Wandelt eine Notierung, die als Dezimalbruch ausgedrückt wurde, in eine Dezimalzahl um
QIKV MIRR
Gibt den internen Zinsfuß zurück, wobei positive und negative Zahlungen zu unterschiedlichen Sätzen finanziert werden
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 Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück
UNREGER.REND ODDFYIELD Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück
Übersicht über die Excel-Funktionen
103
FUNKTION (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
UNREGLE.KURS ODDLPRICE Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück
UNREGLE.REND ODDLYIELD Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück
VDB VDB Gibt die degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode oder Teilperiode zurück
XINTZINSFUSS XIRR Gibt den internen Zinsfuß einer Reihe nicht periodisch anfallender Zahlungen zurück
XKAPITALWERT XNPV Gibt den Nettobarwert (Kapitalwert) einer Reihe nicht periodisch anfallender Zahlungen zurück
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 Gibt die Anzahl der Tage der Zinsperiode zurück, die den Abrechnungstermin einschließt
ZINSTERMTAGNZ COUPDAYSNC Gibt die Anzahl der Tage vom Abrechnungstermin bis zum nächsten Zinstermin zurück
ZINSTERMTAGVA COUPDAYBS Gibt die Anzahl der Tage vom Anfang des Zinstermins bis zum Abrechnungstermin zurück
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
ZW2 FVSCHEDULE Gibt den aufgezinsten Wert des Anfangskapitals für eine Reihe periodisch unterschiedlicher Zinssätze zurück
Modellbasiertes Logistikmanagement
104
FUNKTION (DEUTSCH)
FUNCTION (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 (DEUTSCH)
FUNCTION (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
WENNFEHLER IFERROR
Wenn eine Formel mit einem Fehler ausgewertet wird, wird ein angegebener Wert zurückgegeben; anderenfalls wird das Ergebnis der Formel zurückgegeben.
Tabelle: Logische Funktionen
C.3 Textfunktionen
Übersicht über die Excel-Funktionen
105
FUNKTION (DEUTSCH)
FUNCTION (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
Modellbasiertes Logistikmanagement
106
FUNKTION (DEUTSCH)
FUNCTION (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
Sucht einen in einem anderen Textwert enthaltenen Textwert (Groß-/Kleinschreibung wird nicht beachtet)
TEIL, TEILB MID, MIDB Gibt eine bestimmte Anzahl Zeichen aus einer Textzeichenfolge zurück, die an der angegebenen Stelle beginnt
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
Tabelle: Textfunktionen
C.4 Datums- und Uhrzeitfunktionen
Übersicht über die Excel-Funktionen
107
FUNKTION (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
ARBEITSTAG. INTL
WORKDAY.INTL
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.
ARBEITSTAG WORKDAY Gibt die fortlaufende Zahl des Datums vor oder nach einer bestimmten Anzahl von Arbeitstagen zurück
BRTEILJAHRE YEARFRAC Gibt die Anzahl der ganzen Tage zwischen Ausgangsdatum und Enddatum in Bruchteilen von Jahren zurück
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
Modellbasiertes Logistikmanagement
108
FUNKTION (DEUTSCH)
FUNCTION (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 (DEUTSCH)
FUNCTION (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
Übersicht über die Excel-Funktionen
109
FUNKTION (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
BEREICHE AREAS Gibt die Anzahl der innerhalb eines Bezugs aufgeführten Bereiche zurück
HYPERLINK HYPERLINK
Erstellt eine Verknüpfung oder einen Sprung, über die ein auf einem Netzwerkserver, in einem Intranet oder im Internet gespeichertes Dokument geöffnet wird
INDEX INDEX Verwendet einen Index, um einen Wert aus einem Bezug oder einem Array auszuwählen
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
Modellbasiertes Logistikmanagement
110
FUNKTION (DEUTSCH)
FUNCTION (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 (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
ABRUNDEN
ROUNDDOWN Rundet einer Zahl in Richtung Null ab
ABS ABS Gibt den Absolutwert einer Zahl zurück
AGGREGAT
AGGREGATE
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 y-Koordinaten zurück
ARCTAN ATAN Gibt den Arcustangens einer Zahl zurück
Übersicht über die Excel-Funktionen
111
FUNKTION (DEUTSCH)
FUNCTION (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
KÜRZEN TRUNC Schneidet die Kommastellen der Zahl ab und gibt als Ergebnis eine ganze Zahl zurück
Modellbasiertes Logistikmanagement
112
FUNKTION (DEUTSCH)
FUNCTION (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
MULTINOMIAL
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
Übersicht über die Excel-Funktionen
113
FUNKTION (DEUTSCH)
FUNCTION (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
SUMPRODUCT
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
SUMMEX2MY2 SUMX2MY2 Gibt die Summe der Differenz von Quadraten entsprechender Werte in zwei Matrizen zurück
SUMMEX2PY2 SUMX2PY2 Gibt die Summe der Summe von Quadraten entsprechender Werte in zwei Matrizen zurück
SUMMEXMY2 SUMXMY2 Gibt die Summe der Quadrate von Differenzen entsprechender Werte in zwei Matrizen zurück
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
Modellbasiertes Logistikmanagement
114
FUNKTION (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
UNGERADE ODD Rundet eine Zahl auf die nächste ungerade ganze Zahl auf
UNTERGRENZE.GENAU
FLOOR.PRECISE
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
RANDBETWEEN
Gibt eine ganze Zufallszahl aus dem festgelegten Bereich zurück
ZUFALLSZAHL RAND Gibt eine Zufallszahl zwischen 0 und 1 zurück
ZWEIFAKULTÄT
FACTDOUBLE
Gibt die Fakultät zu Zahl mit Schrittlänge 2 zurück
Tabelle: Mathematische und trigonometrische Funktionen
C.7 Statistische Funktionen
FUNKTION (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
ACHSEN ABSCHNITT
INTERCEPT Gibt den Schnittpunkt der linearen Regressionsgeraden zurück
Übersicht über die Excel-Funktionen
115
FUNKTION (DEUTSCH)
FUNCTION (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 Gibt das Quadrat des PEARSONschen Korrelationskoeffizienten zurück
BETA.INV BETA.INV Gibt Quantile der kumulierten Verteilungsfunktion für eine bestimmte Betaverteilung zurück
BETA.VERT BETA.DIST Gibt die Werte der kumulierten Betaverteilungsfunktion zurück
BINOM.INV BINOM.INV
Gibt den kleinsten Wert zurück, für den die kumulierten Wahrscheinlichkeiten der Binomialverteilung kleiner oder gleich einer Grenzwahrscheinlichkeit sind
BINOM.VERT BINOM.DIST Gibt Wahrscheinlichkeiten einer binominalverteilten Zufallsvariablen zurück
CHI-QHI.VERT.RE CHI-QHI.VERT.RE Gibt die kumulative Beta-Wahrscheinlichkeitsdichtefunktion zurück
CHIQU.INV.RE CHISQ.INV.RT Gibt Quantile der Verteilungsfunktion (1-Alpha) der Chi-Quadrat-Verteilung zurück
CHIQU.INV CHISQ.INV Gibt die kumulative Beta-Wahrscheinlichkeitsdichtefunktion zurück
CHIQU.TEST CHISQ.TEST Gibt die Teststatistik eines Unabhängigkeitstests zurück
CHIQU.VERT.RE CHISQ.DIST.RT Gibt Werte der Verteilungsfunktion (1-Alpha) einer Chi-Quadrat-verteilten Zufallsgröße zurück
EXPON.VERT EXPON.DIST Gibt Wahrscheinlichkeiten einer exponentialverteilten Zufallsvariablen zurück
Modellbasiertes Logistikmanagement
116
FUNKTION (DEUTSCH)
FUNCTION (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
F.VERT.RE F.DIST.RT Gibt Werte der Verteilungsfunktion (1-Alpha) einer F-verteilten Zufallsvariablen zurück
F.VERT F.DIST Gibt Werte der Verteilungsfunktion (1-Alpha) einer F-verteilten Zufallsvariablen zurück
FISHER FISHER Gibt die Fisher-Transformation zurück
FISHERINV FISHERINV Gibt die Umkehrung der Fisher-Transformation 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 Gibt den Mittelwert einer Datengruppe zurück, ohne die Randwerte zu berücksichtigen
GTEST ZTEST
Gibt den einseitigen Wahrscheinlichkeitswert für einen Gaußtest (Normalverteilung) zurück
HARMITTEL HARMEAN Gibt das harmonische Mittel zurück
Übersicht über die Excel-Funktionen
117
FUNKTION (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
HÄUFIGKEIT 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.NORM
Gibt das 1-Alpha Konfidenzintervall für den Erwartungswert einer Zufallsvariablen zurück
KONFIDENZ.T CONFIDENCE.T
Gibt das Konfidenzintervall für den Erwartungswert einer Zufallsvariablen zurück, wobei der Studentsche T-Test verwendet wird
KORREL CORREL Gibt den Korrelationskoeffizienten zweier Reihen von Merkmalsausprägungen zurück
KOVARIANZ.P COVARIANCE.P
Gibt die Kovarianz zurück, den Mittelwert der für alle Datenpunktpaare gebildeten Produkte der Abweichungen
KOVARIANZ.S COVARIANCE.S
Gibt die Kovarianz einer Stichprobe zurück, d. h. den Mittelwert der für alle Datenpunktpaare gebildeten Produkte der Abweichungen
KURT KURT Gibt die Kurtosis (Exzess) einer Datengruppe zurück
LOGNORM.INV LOGNORM.INV Gibt Perzentile der Lognormalverteilung zurück
LOGNORM.VERT LOGNORM.DIST Gibt Werte der Verteilungsfunktion einer lognormalverteilten Zufallsvariablen zurück
MAXA MAXA
Gibt den größten Wert in einer Liste mit Argumenten zurück. Dazu zählen Zahlen, Text und Wahrheitswerte
Modellbasiertes Logistikmanagement
118
FUNKTION (DEUTSCH)
FUNCTION (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 Gibt die durchschnittliche absolute Abweichung von Datenpunkten von ihrem Mittelwert zurück
MITTELWERTA AVERAGEA
Gibt den Mittelwert der zugehörigen Argumente zurück. Dazu gehören Zahlen, Text und Wahrheitswerte
MITTELWERT AVERAGE Gibt den Mittelwert der zugehörigen Argumente zurück
MITTELWERT WENN
AVERAGEIF
Gibt den Durchschnittswert (arithmetisches Mittel) für alle Zellen in einem Bereich, die einem angegebenen Kriterium entsprechen, zurück
MITTELWERT WENNS
AVERAGEIFS
Gibt den Durchschnittswert (arithmetisches Mittel) aller Zellen zurück, die mehreren Kriterien entsprechen
MODUS.EINF MODE.SNGL Gibt den am häufigsten vorkommenden Wert in einer Datengruppe zurück
MODUS.VIELF MODE.MULT
Gibt ein vertikales Array der am häufigsten vorkommenden oder wiederholten Werte in einem Array oder Datenbereich zurück
NEGBINOM.VERT NEGBINOM.DIST Gibt Wahrscheinlichkeiten einer negativbinomialverteilten Zufallsvariablen zurück
NORM.INV NORM.INV Gibt Quantile der Normalverteilung zurück
Übersicht über die Excel-Funktionen
119
FUNKTION (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
NORM.S.INV NORM.S.INV Gibt Quantile der Standardnormalverteilung zurück
NORM.S.VERT NORM.S.DIST Gibt Wahrscheinlichkeiten einer standardnormalverteilten Zufallsvariablen zurück
NORM.VERT NORM.DIST Gibt Wahrscheinlichkeiten einer normalverteilten Zufallsvariablen zurück
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
Gibt den prozentualen (0..1 ausschließlich) Rang (Alpha) eines Werts in einem Datenset zurück
QUANTILSRANG. INKL
QUANTILSRANG. INKL
Gibt den prozentualen Rang (Alpha) eines Werts in einer Gruppe von Daten zurück
QUARTILE.EXKL QUARTILE.EXC
Gibt die Quartile eines Datensets zurück, basierend auf Perzentilwerten von 0..1 ausschließlich
QUARTILE.INKL QUARTILE.INC Gibt die Quartile einer Datengruppe zurück
RANG.GLEICH RANK.EQ Gibt den Rang zurück, den eine Zahl innerhalb einer Liste von Zahlen einnimmt
RANG.MITTELW RANK.AVG
Gibt die durchschnittliche Rangzahl zurück, den eine Zahl innerhalb einer Liste von Zahlen einnimmt
Modellbasiertes Logistikmanagement
120
FUNKTION (DEUTSCH)
FUNCTION (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
STABWA STDEVA
Schätzt die Standardabweichung ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält
STABWNA STDEVPA
Berechnet die Standardabweichung auf der Grundlage der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält
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 x-Werte 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-T-Verteilung als Funktion der Wahrscheinlichkeit und der Freiheitsgrade zurück
T.TEST T.TEST Gibt die Teststatistik eines Student'schen t-Tests zurück
Übersicht über die Excel-Funktionen
121
FUNKTION (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
T.VERT.2S T.DIST.2T
Gibt die Prozentpunkte (Wahrscheinlichkeit) für die (Student) t-Verteilung für zwei Endflächen zurück
T.VERT.RE T.DIST.RT Gibt Werte der Verteilungsfunktion (1-Alpha) einer (Student) t-verteilten Zufallsvariablen zurück
T.VERT T.DIST Gibt die Prozentpunkte (Wahrscheinlichkeit) für die (Student) t-Verteilung zurück
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 Schätzt die Varianz ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält
VARIANZENA VARPA
Berechnet die Varianz auf der Grundlage einer Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält
VARIATIONEN PERMUT Gibt die Anzahl der Permutationen für eine bestimmte Anzahl von Objekten zurück
VARIATION GROWTH Gibt Werte zurück, die sich aus einem exponentiellen Trend ergeben
WAHRSCHBEREICH PROB Gibt die Wahrscheinlichkeit für ein von zwei Werten eingeschlossenes Intervall zurück
WEIBULL.VERT WEIBULL.DIST Gibt Wahrscheinlichkeiten einer Weibull-verteilten Zufallsvariablen zurück
ZÄHLENWENN COUNTIF Die Zellen eines Bereichs, deren Inhalte mit den Suchkriterien übereinstimmen, werden gezählt
ZÄHLENWENNS COUNTIFS Die Zellen eines Bereichs, deren Inhalte mit mehreren Kriterien übereinstimmen, werden gezählt
Tabelle: Statistische Funktionen
Modellbasiertes Logistikmanagement
122
C.8 Konstruktionsfunktionen
FUNKTION (DEUTSCH)
FUNCTION (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
BININDEZ BIN2DEC Wandelt eine binäre Zahl (Dualzahl) in eine dezimale Zahl um
BININHEX BIN2HEX Wandelt eine binäre Zahl (Dualzahl) in eine hexadezimale Zahl um
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.GENAU
ERFC.PRECISE
Gibt das Komplement zur GAUSZschen Fehlerfunktion integriert zwischen x und Unendlichkeit zurück
Übersicht über die Excel-Funktionen
123
FUNKTION (DEUTSCH)
FUNCTION (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
Modellbasiertes Logistikmanagement
124
FUNKTION (DEUTSCH)
FUNCTION (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 Cubefunktionen
Übersicht über die Excel-Funktionen
125
FUNKTION (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
CUBEELEMENT EIGENSCHAFT
CUBEMEMBER PROPERTY
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.
CUBEELEMENT CUBEMEMBER
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.
CUBEKPI ELEMENT
CUBEKPIMEMBER
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.
CUBEMENGE CUBESET
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
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
Modellbasiertes Logistikmanagement
126
C.10 Informationsfunktionen
FUNKTION (DEUTSCH)
FUNCTION (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
Übersicht über die Excel-Funktionen
127
FUNKTION (DEUTSCH)
FUNCTION (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 (DEUTSCH)
FUNCTION (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 Multipliziert die Werte in einem bestimmten Feld mit Datensätzen, die den Kriterien in einer Datenbank entsprechen
DBSTDABW DSTDEV Schätzt die Standardabweichung auf der Grundlage einer Stichprobe aus ausgewählten Datenbankeinträgen
Modellbasiertes Logistikmanagement
128
DBSTDABWN DSTDEVP Berechnet die Standardabweichung auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge
DBSUMME DSUM Addiert die Zahlen in der Feldspalte mit Datensätzen in der Datenbank, die den Kriterien entsprechen
DBVARIANZEN DVARP Berechnet die Varianz auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge
DBVARIANZ DVAR 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 (DEUTSCH)
FUNCTION (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 Gibt Wahrscheinlichkeiten einer binominalverteilten Zufallsvariablen zurück
CHIINV CHIINV Gibt Quantile der Verteilungsfunktion (1-Alpha) der Chi-Quadrat-Verteilung zurück
CHITEST CHITEST Gibt die Teststatistik eines Unabhängigkeitstests zurück
CHIVERT CHIDIST Gibt Werte der Verteilungsfunktion (1-Alpha) einer Chi-Quadrat-verteilten Zufallsgröße zurück
EXPONVERT EXPONDIST Gibt Wahrscheinlichkeiten einer exponentialverteilten Zufallsvariablen zurück
Übersicht über die Excel-Funktionen
129
FUNKTION (DEUTSCH)
FUNCTION (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 Gibt Wahrscheinlichkeiten einer gammaverteilten Zufallsvariablen zurück
GTEST ZTEST
Gibt den einseitigen Wahrscheinlichkeitswert für einen GAUSZtest (Normalverteilung) zurück
HYPGEOMVERT HYPGEOMDIST Gibt Wahrscheinlichkeiten einer hypergeometrisch-verteilten Zufallsvariablen zurück
KONFIDENZ CONFIDENCE
Gibt das 1-Alpha Konfidenzintervall für den Erwartungswert einer Zufallsvariablen zurück
KOVAR COVAR
Gibt die Kovarianz zurück, den Mittelwert der für alle Datenpunktpaare gebildeten Produkte der Abweichungen
KRITBINOM CRITBINOM
Gibt den kleinsten Wert zurück, für den die kumulierten Wahrscheinlichkeiten der Binomialverteilung kleiner oder gleich einer Grenzwahrscheinlichkeit sind
LOGINV LOGINV Gibt Perzentile der Lognormalverteilungsfunktion zurück
LOGNORMVERT LOGNORMDIST Gibt Werte der Verteilungsfunktion einer lognormalverteilten Zufallsvariablen zurück
MODALWERT MODE Gibt den am häufigsten vorkommenden Wert in einer Datengruppe zurück
Modellbasiertes Logistikmanagement
130
FUNKTION (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
NEGBINOMVERT NEGBINOMDIST Gibt Wahrscheinlichkeiten einer negativbinomialverteilten Zufallsvariablen zurück
NORMINV NORMINV Gibt Quantile der Normalverteilung zurück
NORMVERT NORMDIST Gibt Wahrscheinlichkeiten einer normalverteilten Zufallsvariablen zurück
NORMSVERT NORMSDIST Gibt Wahrscheinlichkeiten einer standardnormalverteilten Zufallsvariablen zurück
POISSON POISSON Gibt Wahrscheinlichkeiten einer Poisson-verteilten Zufallsvariablen zurück
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) t-Verteilung zurück
TTEST TTEST Gibt die Teststatistik eines Studentschen t-Tests zurück
TVERT TDIST Gibt Werte der Verteilungsfunktion (1-Alpha) einer (Student) t-verteilten Zufallsvariablen zurück
Übersicht über die Excel-Funktionen
131
FUNKTION (DEUTSCH)
FUNCTION (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 (DEUTSCH)
FUNCTION (ENGL.)
BESCHREIBUNG
AUFRUFEN CALL Eine Prozedur in einer DLL (Dynamic Link Library) oder Code-Ressource wird aufgerufen
EUROCONVERT EUROCONVERT
Wandelt eine Zahl in Euro oder von Euro in die Währung eines Mitgliedsstaats oder von der Währung eines Euro-Mitgliedsstaats in die Währung eines anderen Mitgliedsstaats um, indem der Euro als Zwischenwert verwendet wird (Triangulieren)
REGISTER REGISTER
Die REGISTER() XLM Funktion erzeugt einen definierten Namen und verweist darauf über eine externe dll basierte Funktion
REGISTER.KENNUMMER
REGISTER.ID
Gibt die Registrierkennung der angegebenen DLL bzw. der vorher registrierten Code-Ressource zurück
SQL.REQUEST SQL.REQUEST
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
Modellbasiertes Logistikmanagement
132
D Übersicht über die wichtigsten Excel-Objekte
D.1 Das Application-Objekt
Die detaillierte Syntax nebst Beispielen findet man unter der Excel-
Objektmodellreferenz in der Excel-Hilfe für Entwickler Application-Object.
D.1.1 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.
Übersicht über die wichtigsten Excel-Objekte
133
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:
Modellbasiertes Logistikmanagement
134
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
Tritt unmittelbar vor dem Schließen eines Fensters Geschützte Ansicht oder einer Arbeitsmappe in einer geschützten Ansicht auf.
ProtectedViewWindow BeforeEdit
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
Tritt auf, wenn vor der Standardrechtsklick-Aktion mit der rechten Maustaste auf ein beliebiges Arbeitsblatt geklickt wird.
SheetCalculate Tritt nach Neuberechnung jedes Arbeitsblatts auf oder wenn beliebige geänderte Daten in einem Diagramm gezeichnet werden.
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.
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.
Übersicht über die wichtigsten Excel-Objekte
135
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 Tritt auf, nachdem von Microsoft Excel XML-Daten aus der angegebenen Arbeitsmappe gespeichert oder exportiert wurden.
WorkbookAfterXmlImport
Tritt auf, nachdem eine bestehende XML-Datenverbindung aktualisiert wurde oder neue XML-Daten in eine geöffnete Microsoft Excel-Arbeitsmappe importiert wurden.
Modellbasiertes Logistikmanagement
136
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
Tritt auf, bevor XML-Daten aus der angegebenen Arbeitsmappe von Microsoft Excel gespeichert oder exportiert werden.
Workbook BeforeXmlImport
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 PivotTable-Bericht geschlossen wurde.
WorkbookPivotTable OpenConnection
Tritt auf, nachdem eine Verbindung eines PivotTable-Berichts geöffnet wurde.
WorkbookRowset Complete
Das WorkbookRowsetComplete-Ereignis tritt auf, wenn der Benutzer einen Drillthrough durch das Recordset ausführt oder die Rowset-Aktion für eine OLAP-PivotTable aufruft.
WorkbookSync 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
Übersicht über die wichtigsten Excel-Objekte
137
D.2 Das Workbook-Objekt
Die detaillierte Syntax nebst Beispielen findet man unter der Excel-
Objektmodellreferenz in der Excel-Hilfe für Entwickler Workbook-Object.
D.2.1 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:
Modellbasiertes Logistikmanagement
138
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 Tritt auf, nachdem von Microsoft Excel XML-Daten aus der angegebenen Arbeitsmappe gespeichert oder exportiert wurden.
AfterXmlImport Tritt auf, nachdem eine bestehende XML-Datenverbindung aktualisiert wurde oder neue XML-Daten in eine geöffnete Microsoft Excel-Arbeitsmappe importiert wurden.
BeforeClose
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
139
EREIGNIS BESCHREIBUNG
BeforePrint Tritt auf, bevor die Arbeitsmappe (oder darin enthaltene Teile) gedruckt wird.
BeforeSave Tritt auf, bevor die Arbeitsmappe gespeichert wird.
BeforeXmlExport Tritt auf, bevor XML-Daten aus der angegebenen Arbeitsmappe von Microsoft Excel gespeichert oder exportiert werden.
BeforeXmlImport 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 Rowset-Aktion 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
Tritt auf, wenn vor der Standardrechtsklick-Aktion mit der rechten Maustaste auf ein beliebiges Arbeitsblatt geklickt wird.
SheetCalculate Tritt nach Neuberechnung jedes Arbeitsblatts auf oder wenn beliebige geänderte Daten in einem Diagramm gezeichnet werden.
Modellbasiertes Logistikmanagement
140
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
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.
SheetPivotTable AfterValueChange
Tritt nach der Bearbeitung oder Neuberechnung (bei Zellen, die Formeln enthalten) einer Zelle oder eines Zellbereichs in einer PivotTable auf.
SheetPivotTable Before AllocateChanges
Tritt auf, bevor Änderungen auf eine PivotTable angewendet werden.
SheetPivotTable Before CommitChanges
Tritt auf, bevor für Änderungen an der OLAP-Datenquelle für eine PivotTable ein Commit ausgeführt wird.
SheetPivotTable Before DiscardChanges
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
Übersicht über die wichtigsten Excel-Objekte
141
D.3 Das Worksheet-Objekt
Die detaillierte Syntax nebst Beispielen findet man unter der Excel-
Objektmodellreferenz in der Excel-Hilfe für Entwickler Worksheet-Object.
D.3.1 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 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, 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
Modellbasiertes Logistikmanagement
142
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.
Übersicht über die wichtigsten Excel-Objekte
143
EREIGNIS BESCHREIBUNG
Deactivate Tritt auf, wenn das Diagramm, das Arbeitsblatt oder die Arbeitsmappe deaktiviert wird.
FollowHyperlink
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.
PivotTable AfterValueChange
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
Modellbasiertes Logistikmanagement
144
D.4 Das Range-Objekt
Die detaillierte Syntax nebst Beispielen findet man unter der Excel-
Objektmodellreferenz in der Excel-Hilfe für Entwickler Range-Object.
D.4.1 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 Range-Objekt.
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
Übersicht über die wichtigsten Excel-Objekte
145
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.
Modellbasiertes Logistikmanagement
146
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.
Übersicht über die wichtigsten Excel-Objekte
147
Domschke, Wolfgang und Drexl, Andreas (2006): Einführung in Operations
Research, 7. Auflage, Springer-Verlag, Berlin Heidelberg; ISBN 978-3-540-
70948-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.
Modellbasiertes Logistikmanagement
148
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.
Übersicht über die wichtigsten Excel-Objekte
149
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
Modellbasiertes Logistikmanagement
150
L 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
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
O Open Office .............................................................. 658 Optimierungskriterium ......................................... 35, 54 Optimum.................................................................... 35
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
151
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
U Umschlagsmodell ..................................................... 124 Unimodularität ........................................................... 45 unproduktive Strecke ............................................... 589
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 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
Z 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