Inhaltsverzeichnis. 1 Vorwort Wie alles begann Was leistet das Programm Inhalt und Ziele der Ausarbeitung...

Größe: px
Ab Seite anzeigen:

Download "Inhaltsverzeichnis. 1 Vorwort... 3. 1.1 Wie alles begann... 3. 1.2 Was leistet das Programm... 4. 1.3 Inhalt und Ziele der Ausarbeitung..."

Transkript

1

2 Inhaltsverzeichnis 1 Vorwort Wie alles begann Was leistet das Programm Inhalt und Ziele der Ausarbeitung Programm-Umgebung Weitere (persönliche) Anmerkungen Das Programm Grundsätzliches zur Programmierung in VBA Variablendeklarationen Makros Unterprogrammtechnik Objekte, Eigenschaften und Methoden Objekte und ihre Hierarchie Eigenschaften Methoden Die Gäste kommen Die Entwicklungsumgebung von VBA Ereignisse in VBA Der Kern des Programms: die Auslosung Eigene Dialoge entwerfen und programmieren Die neuen Tabellenblätter Das Tabellenblatt "Liste" Pro Durchgang je ein Tabellenblatt Das Tabellenblatt "Ergebnis" Das Mischprogramm: wer kommt in welchem Durchgang an welchem Tisch an welchem Platz? Zusatzfunktionen Ausblick/Nachbetrachtung Neuralgische Punkte Mögliche Weiterentwicklungen Literatur- und Quellenverzeichnis

3 1 Vorwort 1.1 Wie alles begann Jedes Jahr zwischen Weihnachten und Silvester findet bei meinem Schwager ein privates Doppelkopfturnier statt. Seit ca. 20 Jahren erfreut es sich einer immer größeren Beliebtheit; es ist zur Tradition geworden. Die ersten Jahre fand das Turnier noch in einem kleinen Rahmen jeder kannte jeden statt. In der Zwischenzeit hat es sich zu einer Mammutveranstaltung ausgeweitet - das Turnier zählte im letzten Jahr genau 101 Teilnehmer. Da bei einer Tischanzahl von maximal 25 die räumlichen Kapazitäten restlos ausgeschöpft sind, ist damit dann wohl auch das Ende der Fahnenstange erreicht. Die einladende Raumatmosphäre sowie die ausgezeichnete Organisation (als ein Beispiel sei nur die erstklassige Verpflegung mit Speisen und Getränken genannt) haben dafür gesorgt, dass sich der Teilnehmerkreis Jahr für Jahr erweitert hat. Dieser permanente Zuwachs an Teilnehmern hat aber auch dazu geführt, dass der manuelle Aufwand für die anfallenden Tätigkeiten - von der Auslosung über die Erfassung der Punktzahlen bis hin zur Auswertung der Spielergebnisse - immer größer wurde. Das wiederum veranlasste meinen Schwager als Ausrichter des Turniers nach möglichen Alternativen im PC-Bereich Ausschau zu halten, um diese manuellen Tätigkeiten durch Automatismen zu ersetzen. So kam es, dass er vor 10 Jahren auf mich zukam mit der Bitte, mir hierüber mal Gedanken zu machen. Als spontane Idee, per Programm eine Verbesserung zu erzielen, fielen mir - wie konnte es auch anders sein - die Möglichkeiten von Microsoft Excel ein. Das, was mir dabei zunächst vorschwebte, war allerdings noch recht rudimentär. Der einzige Fortschritt, den Excel mir in meinen ersten Überlegungen bot, schien darin zu bestehen, eine Liste mit allen Teilnehmern zu erstellen, diese Liste zu einer Tabelle zu erweitern, indem pro Durchgang eine zusätzliche Spalte genutzt wurde, in der die Punktzahlen der Teilnehmer pro Durchgang eingetragen wurden, um Excel danach diese Punktzahlen für jeden Teilnehmer addieren zu lassen, und die Liste anschließend nach erreichter Gesamtpunktzahl zu sortieren. Nun hätte ich es natürlich auch dabei bewenden lassen können. Die Umsetzung in Excel wäre in wenigen Minuten fertig gewesen. Der größte Aufwand hätte wohl noch darin bestanden, die Teilnehmerliste einzutippen. Das kam mir aber alles ein bisschen "zu mager" vor. Eine deutliche Verbesserung gegenüber Bleistift und Papier hätte das zudem auch nicht bedeutet. Hinweis/Bemerkung 1 Die gute Stimmung der Teilnehmer sorgt für eine hohe Spendenbereitschaft. Das an den Tischen eingespielte Geld wandert - neben zusätzlichen freiwilligen Beiträgen - als Spende in einen gemeinsamen Topf und wird einer gemeinnützigen humanitären Organisation in Afrika zugeführt. 3

4 Ich beschäftigte mich nun fortan intensiver mit den Möglichkeiten von Excel und deren Programmiermöglichkeiten und kam letztendlich zu dem Entschluss, es nicht bei dieser einfachen Liste bewenden zu lassen. Ich kannte zwar weder die VBA-Umgebung für Excel (VBA = Visual Basic for Applications), noch dessen Sprachkern Visual Basic, hatte aber zumindest Programmiererfahrung in prozeduraler Programmiertechnik. Außerdem bot mir Excel ja bekanntermaßen die Möglichkeit, viele Tätigkeiten durch den Einsatz des Makrorekorders zu automatisieren. Der dabei erzeugte Quellcode der Makros half mir zudem beim Einstig in VBA. Zusätzliche Literatur sowie Recherchen im Internet trugen zusätzlich dazu bei, mich recht schnell in der Umgebung zurechtzufinden. Fortan machte ich mich an die Arbeit; herausgekommen ist dabei ein komplettes Turnierprogramm, 2002 erstmalig erstellt und 2010 verbessert und um einige Funktionen erweitert. Das Programm wird mittlerweile nicht nur einmal im Jahr bei dem besagten Turnier eingesetzt, sondern auch immer dann, wenn im Freundes- und Bekanntenkreis eine derartige Veranstaltung angesagt ist. 1.2 Was leistet das Programm Kurz zusammengefasst bietet das Programm folgende Funktionen: Mischprogramm bei der Auslosung: die Teilnehmer bekommen per Zufallsgenerator einen Tischplatz zugewiesen Anzahl der Durchgänge sowie Anzahl der Runden pro Durchgang jeweils zwischen 1 und 10 frei wählbar die Gesamtanzahl der Tische kann durch eine vermehrte Anzahl an 5er-Tischen reduziert werden (für den Fall, dass die Räumlichkeiten keine weiteren Tische mehr zulassen) Generierung neuer Excel-Tabellenblätter nach der Auslosung: eine alphabetisch sortierte Liste aller Teilnehmer zum Ausdrucken, aus der jeder für sich ablesen kann, in welchem Durchgang er an welchem Tisch an welchem Platz spielt pro Durchgang ein Tabellenblatt für die Eintragung der erreichten Punktzahl pro Spieler; die Tische (mit ihren Teilnehmern) werden nach Tisch-Nr sortiert aufgelistet ein Ergebnis-Tabellenblatt mit einer Liste aller Teilnehmer, in der nach Spielende (oder auch schon früher, um Zwischenstände abzurufen) per Knopfdruck die Ergebnisse aus den einzelnen Durchgängen übernommen werden 4

5 die Spielzettel sind komplett vorformatiert und enthalten bereits die Namen der Spieler. Für den Ausdruck stehen zwei Varianten zur Auswahl: einfache Version für den Privatgebrauch und offizielle Spielzettel-Version vom Deutschen Doppelkopf Verband für gehobene Ansprüche 1.3 Inhalt und Ziele der Ausarbeitung Bei der vorliegenden Arbeit stehen die folgenden drei Aspekte im Vordergrund: Darstellung der Bestandteile des Turnierprogramms Kurzeinweisung in VBA Workshop-Charakter Im Focus steht dabei natürlich die Absicht, die wesentlichen Bestandteile des Programms vorzustellen, verbunden mit dem Ziel, deren Implementierung in VBA herauszuarbeiten. Auf ein komplettes Code-Listing wird allerdings verzichtet (ein Workshop soll auch ein Workshop bleiben); bei Interesse kann es aber natürlich auf Anfrage ( von mir bezogen werden. Denjenigen Lesern, die bisher noch keinerlei Erfahrungen in VBA gesammelt haben, aber Interesse daran haben, das Programm nachzuvollziehen, soll der Einstieg dadurch erleichtert werden, dass in groben Zügen die wesentlichen Sprachelemente und Programmiertechniken in VBA vorgestellt werden, (Kapitel 2.1) und dass auch auf die Bedienung der Entwicklungsumgebung (Kapitel 2.3) sowie auf den Einsatz von Dialogtechniken (Kapitel 2.5.1) eingegangen wird. Den Hauptteil dieser Abhandlung bildet zwangsläufig das Main- Programm Sub Auslosung(): Struktur und wesentliche Bestandteile werden thematisiert. Abschließend werden noch einige interessante Zusatzfunktionen des Programms vorgestellt. Der Intention eines Workshops entsprechend, sind für diejenigen Leser, die Interesse an dem Programm gefunden haben und sich mit der Materie vertraut machen wollen, am Ende einiger Kapitel/Abschnitte einige Übungen (ohne Lösungen) eingestreut. 5

6 1.4 Programm-Umgebung Die erste Version des Programms wurde von mir in VBE Office XP erstellt. Lauffähig war das Programm auch ohne jegliche Anpassungen in den Nachfolge-Versionen Office Excel 2003 und Unter Office Excel 2007 erfolgte im Jahr 2010 eine Ergänzung/Verbesserung. Auf diese Office-Version beziehen sich auch alle in diesem Workshop verwendeten VBA-/Excel-Elemente. Als Betriebssystemumgebungen des Turnier-Programms wurden bisher Windows XP und Microsoft Windows 7 Professional eingesetzt. Hinweis 2 VBE (= Visual Basic Editor) ist das Entwicklertool der VBA- Programmierung. Mit der Tastenkombination <Alt><F11> gelangt man in die Entwicklungsumgebung (und wieder zurück). 1.5 Weitere (persönliche) Anmerkungen Wenn im Folgenden von "den Spielern" oder "den Teilnehmern" die Rede ist, so ist damit natürlich das weibliche Geschlecht implizit immer mit eingeschlossen. Würde ich stattdessen jedesmal von "den SpielerInnen" oder "den Spielern und Spielerinnen" bzw. von "den TeilnehmerInnen" oder "den Teilnehmern und Teilnehmerinnen" sprechen, so hätte darunter die Lesbarkeit des Dokumentes zu leiden. Eine Diskriminierung des weiblichen Personenkreises bzgl. des Doppelkopfspiels liegt mir absolut fern. Zusätzlich sei noch angemerkt, dass alle Namen der in diesem Dokument erwähnten Personen frei erfunden sind. 2 Das Programm 2.1 Grundsätzliches zur Programmierung in VBA Variablendeklarationen Eine Variablendeklaration beginnt mit der Anweisung Dim, gefolgt von dem frei wählbaren Variablen-Namen. Danach gibt man mit dem Schlüsselwort As an, welchen Datentyp die Variable enthalten soll. Konstante Größen lassen sich noch einfacher deklarieren, da sie keinen Datentyp besitzen. Statt mit der Anweisung Dim beginnen sie mit Const. 6

7 Möchte man einen array anlegen, so geschieht das ebenfalls mit Dim, gefolgt von dem Variablennamen und anschließender Klammerung (). Damit lässt man sich aber die Dimensionierung und die Länge des arrays noch offen. Beispiele: Dim Zahl1 As Integer 'Integer-Variable namens Zahl Const Zahl2 = 10 'Speicherplatz Zahl2 mit festem Wert 10 Dim Zahl() As Integer 'Integer-array ohne Dimension und ohne Länge Es gibt drei mögliche Gültigkeitsbereiche für eine Variable: a) Wird die Variable nur innerhalb einer Prozedur benötigt, handelt es sich um eine lokale Variable. Die Deklaration steht dann am Anfang einer Prozedur. Sub Test() Dim MeineVariable As Long gültig Anweisung... Anweisung End Sub 'MeineVariable ist nur innerhalb der Prozedur Test() b) Wird die Variable in mehreren Prozeduren eines Moduls benötigt, so muss sie als globale Variable am Anfang des Moduls deklariert werden mit Dim oder Private als Anweisung. Unter dem Begriff "Modul" muss man sich einfach einen Container vorstellen, der Quellcode enthält der Code muss ja schließlich irgendwo untergebracht sein. Je nachdem, wofür so ein Modul genutzt wird, wird unterschieden z.b. zwischen einem Modul für Userformen (siehe Eigene Dialoge entwerfen und programmieren) oder einem Modul für ein Tabellenblatt (siehe 2.5 Der Kern des Programms: die Auslosung) oder einem Modul für die Ereignissteuerung (siehe 2.4 Ereignisse in VBE) oder... Dim MeineVariable As Long 'MeineVariable ist auf Modulebene gültig Private MeineVariable1 As Long 'ebenso MeineVariable1 Sub Test() Anweisung... Anweisung End Sub c) Soll die Variable auch in anderen Modulen des Projektes Gültigkeit haben, muss sie als öffentliche Variable mit Public deklariert werden. Public MeineVariable As Long 'MeineVariable ist im ganzen Projekt gültig Sub Test() Anweisung... Anweisung End Sub 7

8 2.1.2 Makros Der einfachste Weg, sich einen ersten Einblick in die VBA- Programmierung zu verschaffen, ist der, dass man sich die Makro- Programmierung einmal näher anschaut. Im folgenden Beispiel wird per Makro-Recorder (Aufruf über "ENTWICKLERTOOLS/MAKRO AUFZEICHNEN") der Zellenbereich "A1:C2" mit Inhalt gefüllt: Abbildung 1 Makro MwSt Die Schaltfläche Bearbeiten öffnet die Entwicklungsumgebung und man gelangt direkt in den Quellcode des Makros Das aufgezeichnete Makro lässt sich nun nachträglich weiter bearbeiten. Durch den Aufruf der Schaltfläche Bearbeiten erscheint allerdings nicht mehr der Makro-Recorder, sondern man hat den VBA-Quellcode in der Entwicklungsumgebung vor sich. Für obiges Beispiel wurden folgende Zeilen generiert: Sub MwSt() Range("A1").Select ActiveCell.FormulaR1C1 = "MwSt" Range("B1").Select ActiveCell.FormulaR1C1 = "Brutto" Range("C1").Select ActiveCell.FormulaR1C1 = "Netto" Range("A2").Select ActiveCell.FormulaR1C1 = "0.19" Range("B2").Select ActiveCell.FormulaR1C1 = "50" Range("C2").Select ActiveCell.FormulaR1C1 = "=RC[-1]*(1+RC[-2])" Range("A1:C1").Select 'Name des Makros 'Netto-Berechnung in Zelle C2 Listing 1 Makro MwSt Die in grün gehaltenen Bemerkungen sind Kommentare 8

9

10 2.1.3 Unterprogrammtechnik Um den Programmcode in kleine unabhängige und überschaubare Einheiten zu unterteilen, stehen in VBA zwei Varianten zur Verfügung Prozeduren und Funktionen. Prozeduren beginnen, wie im vorherigen Beispiel eines Makros zu sehen, immer mit Sub, gefolgt von dem Prozedurnamen, und enden immer mit End Sub. Sub Prozedurname [(Argumente)] Anweisung... Anweisung End Sub Die (optionalen) Argumente können Referenzen (nicht der Wert selber wird übergeben, sondern der Zeiger, also die Adresse im Arbeitsspeicher) oder Werte sein. Zudem kann ihnen der Datentyp mitgegeben werden. Beispiel: Sub TestProzedur (ByRef Argument1 As Integer, ByVal Argument2 As Long) Zeiger = Argument1 Wert = Argument2 End Sub Der Aufruf dieser Prozedur sieht dann entweder so aus: TestProzedur Parameter1, Parameter2 oder so: Call TestProzedur(Parameter1, Parameter2) Prozeduren können Aktionen unterschiedlicher Art ausführen, sie können aber keine Werte zurückgeben. Hierzu bedarf es einer Funktion. Die Syntax einer Funktion ist ähnlich wie bei einer Sub: sie beginnen mit Function und enden mit End Function: [Public] [Private] [Static] Function Funktionsname [(Argumente)] [As Typ] Anweisung... Anweisung End Function Objekte, Eigenschaften und Methoden An dieser Stelle möchte ich die Gelegenheit nutzen, herauszustellen, warum VBA für viele Anwendungen eine gute Alternative zu den etab- 10

11 lierten Sprachen wie etwa C++ oder Java ist. Hierfür gibt es i.w. zwei handfeste Gründe: Zum einen sind es die Makros, die dem Programmierer nicht nur viel Arbeit abnehmen können, sondern die auch wie bereits erwähnt die Möglichkeit bieten, sich der Skriptsprache VBA Schritt für Schritt zu nähern. Der zweite Grund ist der, dass in vielen Anwendungen wie z.b. in diesem Programm fast ausschließlich mit Tabellen gearbeitet wird. Da bietet eine Tabellenverarbeitung wie Excel, die etwa die 200 wichtigsten Objekte mit ihren Eigenschaften und Methoden für jedermann frei zugänglich macht, eine ideale Plattform für eigene Entwicklungen. Ein Großteil der Arbeit, die bei der Software- Entwicklung anfällt, nämlich die Planung der Objekte (Tabellenblätter, Zellen etc.), ist bereits erledigt, bevor man überhaupt damit angefangen hat, da sie bereits vorhanden sind und genutzt werden können. Nun aber zum Thema - Objekte, Eigenschaften und Methoden in VBA. Was verbirgt sich eigentlich hinter diesen Begriffen und noch wichtiger - wie kann man diese Bausteine für sich nutzen? Für den in der Objektorientierung erfahrenen Entwickler sind die Begrifflichkeiten natürlich klar, dennoch profitiert auch der unerfahrene Programmierer von den folgenden Ausführungen, da er praktisch gar keine Klassen und Objekte selbst definieren muss, weil ja alle notwendigen Bauteile bereits vorhanden sind Objekte und ihre Hierarchie Da VBA eine - zumindest teilweise - objektorientierte Programmiersprache (fehlende Implementierungsvererbung) ist, lassen sich natürlich eigene Klassen definieren und somit eigene Objekte erstellen. In den allerhäufigsten Fällen (so auch in diesem Programm) sind es jedoch die MS-Office eigenen Objekte mit ihren Eigenschaften und Methoden, die in der Anwendung zum Einsatz kommen. Sie sollen hier in Kurzform dargestellt werden. Zu den wichtigsten Objekten zählen: APPLICATION Excel selbst / Excel Fenster WORKBOOK Die Excel Arbeitsmappe WORKSHEET Ein Tabellenblatt RANGE Zellenbereich, bestehend aus einer oder mehrerer Zellen 11

12 Die Objekte stehen in hierarchischer Abhängigkeit zueinander. Objekte höherer Stufe beinhalten Objekte untergeordneter Stufe(n). Für o.g. Objekte gilt die Hierarchieordnung. Application Workbook Worksheet Range Die gesamte Objekthierarchie ist natürlich wesentlich komplizierter und umfangreicher. Für die Programmierung ist es wichtig zu wissen, dass die Objekthierarchie nicht nur ein willkürliches Ordnungsschema ist. Die Kenntnis der festgelegten Position eines Objektes in der Hierarchie ist nötig, um das Objekt zu referenzieren darauf zuzugreifen. Beispiel: Worksheets(list).Range("A1").EntireColumn.ColumnWidth = 22 Der Objektkatalog enthält eine Übersicht aller Excel-Objekte, ihrer Eigenschaften und Methoden. So rufen Sie den Objektkatalog auf: 1. Öffnen Sie den VBA-Editor über die Tastenkombination <ALT> <F11>. 2. Drücken Sie die Taste <F2>, um den Objektkatalog aufzurufen. 3. Stellen Sie in der oberen Auswahlliste den Eintrag Excel ein. Hinweis 3 In dem Tabellenblatt Liste (Const list = "Liste") wird für die Spalte der Zelle "A1" die Spaltenbreite auf den Wert 22 gesetzt. Abbildung 2 Der Objektkatalog 12

13 Eigenschaften Eigenschaften sind die Attribute, die das Objekt beschreiben. Sie legen z.b. fest, wie das Objekt aussieht, welche Farbe oder welchen Wert es hat, ob es sichtbar ist oder nicht, usw. Es gibt Eigenschaften, die lesbar und veränderbar sind, z.b. Value (Wert) oder Name (Name), andere lassen sich nur abfragen, aber nicht verändern. Beispiel: Sp_Name = Worksheets(1).Range("M" & (Zuf_Nr(d, n))).value Methoden Zu den Objekten gehören neben Eigenschaften auch METHODEN. Über Methoden lässt sich das Verhalten von Objekten steuern / verändern. Eine Methode ist eine Aktion, die eine Operation auf einem Objekt ausführen kann. Zu den am häufigsten benutzten Methoden gehören: OPEN öffnet eine Arbeitsmappe CLOSE schließt eine Arbeitsmappe (ein Workbook-Objekt) oder Excel (ein Application-Objekt). CLEAR löscht einen Zellbereich oder ein Diagramm. ACTIVATE SELECT aktiviert ein Objekt wählt ein Objekt aus Hinweis 4 Der Variablen Sp_Name wird der Wert zugewiesen, der sich in Spalte "M" in der Zeile Zuf_Nr(d, n) befindet Für den Einsteiger ist es oft problematisch zwischen Eigenschaften und Methoden zu unterscheiden (insbesondere wenn Methoden die gleichen Namen tragen wie beispielsweise Auflistungen). So sind beispielsweise die beiden Anweisungen Assistant.Visible = true Assistant.Move 250,275 zumindest optisch sehr ähnlich. Es stellt sich die Frage - sind Visible und Move Eigenschaften oder Methoden und wenn nicht, welches Element von beiden ist eine Methode und welches eine Eigenschaft. Die Antwort ist hier relativ einfach: Bei Zuweisungen von Eigenschaften wird das Gleichheitszeichen benutzt, bei Methoden benutzt man (optionale) Parameter ohne Gleichheitszeichen. 13

14 Füllen Sie den Tabellenbereich "A1:A10" mit beliebigen Zahlen. Markieren Sie einige Zellen dieses Bereiches mit der Hintergrundfarbe "Rot". Fügen Sie in der Entwicklungsumgebung ein neues Modul ein, indem Sie im Projekt-Explorer mit der rechten Maustaste klicken und den Kontextmenübefehl EINFÜGEN/MODUL wählen. Übung 2 Benutzerdefinierte Funktion schreiben Schreiben Sie eine Funktion Function SummeRoteZellen(Zelle As Range), die nur die Zellen mit roter Hintergrundfarbe addiert. Hinweise: 1) Setzen Sie als erstes die Anweisung Application.Volatile. Hierdurch wird bewirkt, dass die Funktion immer neu berechnet wird, wenn in einer beliebigen Zelle des Tabellenblattes eine Berechnung durchgeführt wird 2) Um jede Zelle eines Bereiches zu erreichen, verwenden Sie die for-schleife: For Each Zelle In Zelle.Cells 3) Addieren Sie nur dann, wenn die Zelle einen numerischen Wert enthält: If IsNumeric(Zelle) 4) Abfrage der Hintergrundfarbe einer Zelle des Bereiches auf die Farbe "Rot" mit If Zelle.Interior.ColorIndex = 3 5) Addition der Funktionswerte: SummeRoteZellen = Summe- RoteZellen + Zelle.Value 6) Prüfen Sie die Funktion, indem Sie in Zelle "A11" die Formel eingeben "=SummeRoteZellen(A1:A10)" 2.2 Die Gäste kommen Nun wieder zurück zu unserem Doppelkopfturnierprogramm. Die Teilnehmer melden sich größtenteils vor dem Turnier telefonisch oder per Mail, so dass sie bereits vorab in einer Liste im Programm (in Spalte "A") aufgenommen werden können (das gesamte Excel-Sheet besteht zu diesem Zeitpunkt lediglich aus einem Tabellenblatt). Es genügt dann am Turnierabend nur ein Klick, um die betreffende Person real am Turnier teilnehmen zu lassen. 14

15 Abbildung 3 Die Teilnehmerliste in Spalte "F" Rechtsklick oder Doppelklick in eine Zelle der Spalte "B" oder "C" aktiviert das ereignisgesteuerte Makro Sub Worksheet_BeforeRightClick bzw. Sub Worksheet_BeforeRightClick (s. 2.4) Hinweis 5 Die "Häkchen" in Spalte B und C werden erzeugt mit dem Zeichen "ü" (= Chr (252)) in der Schriftart Wingdings (siehe auch Listing 2) Dieser Tabellenausschnitt macht deutlich, wie die Teilnehmerliste realisiert wird. In Spalte "A" können bereits vor Turnierbeginn die Namen der möglichen Teilnehmer, sofern bekannt, eingetragen werden. Es genügt dann nur noch ein Doppelklick (oder Rechtsklick) in Spalte "B" (= bezahlt) oder "C" (= anwesend), um die betreffende Person in die tatsächliche Teilnehmerliste (Spalte "F") aufzunehmen. Die Teilnehmer werden mit einer Spieler-Nummer (Spalte "E") versehen, welche aber im weiteren Verlauf des Turniers seitens des Teilnehmers nicht benötigt wird; die Spieler-Nr dient lediglich programminternen Zwecken (s. 2.4 Ereignisse in VBA). Die programmtechnische Umsetzung dieses Vorgangs - die Erstellung der Spielerliste in Spalte "F" - muss noch ein wenig warten (2.4 Ereignisse in VBA). Vielmehr soll für all diejenigen, die bisher noch keinerlei VBA- Erfahrung besitzen, im Folgenden eine weitere kurze Einführung in VBA und der Entwicklungsumgebung gegeben werden. 15

16

17 Der Projekt-Explorer: er enthält hierarchisch gegliedert alle Objekte, die zum VBA-Projekt "DokoTurnier.xlsx" gehören. Das Eigenschaftenfenster: in ihm werden alle Eigenschaften des ausgewählten Steuerelements angezeigt - in obiger Abbildung die Eigenschaften der Tabelle3. In der linken Spalte dieses Fensters steht der Name der Eigenschaft und in der rechten Spalte der zugehörige aktuelle Wert. Diese Werte können, wie wir bei den Steuerelementen von Formularen noch sehen werden, den eigenen Bedürfnissen angepasst werden, und zwar entweder durch das Überschreiben im Eigenschaftenfenster selbst oder aber per Quellcode-Programmierung. Das Code-Fenster: in diesem Fenster (meistens werden mehrere gleichzeitig bearbeitet) befindet sich der Quelltext des Programms aus dem betreffenden Modul. Wie bereits in obigem Beispiel gesehen, ist der Makro-Recorder - insbesondere für den VBA-Neuling - eine sehr gute Hilfe bei der Generierung des Listings. Ohne jegliche VB-Kenntnisse zu besitzen, kann man sich so auf einfache und schnelle Art und Weise einen ersten Überblick über die gängigen Befehle verschaffen. Für darüber hinausgehende Anpassungen sind dann natürlich tiefergehende VB/VBA-Kenntnisse notwendig. Die wichtigsten Elemente hatte ich bereits in Kapitel 2.1 Grundsätzliches zur Programmierung in VBA vorgestellt. Ich halte es allerdings für unverhältnismäßig, im Rahmen dieses Workshops noch tiefer in diese Materie einzusteigen. Für formale Elemente wie Datentypen, Variablen sowie sprachliche Konstrukte wie Schleifen, Verzweigungen etc. verweise ich zum einen auf Online- Recherchen im Internet sowie natürlich auf die in ausreichendem Maße vorhandene Literatur zur Excel-VBA-Programmierung an. Nicht zuletzt können auch die Listings hierzu einen guten Beitrag leisten. 2.4 Ereignisse in VBA Nun aber wie versprochen zur Realisierung der Teilnehmerliste in VBA. Benötigt wird zu diesem Zweck ein bstimmtes technisches Hilfsmittel, und zwar die ereignisgesteuerte Eingabemöglichkeit, z.b. per Rechtsklick (Sub Worksheet_BeforeRightClick) oder per Doppelklick (Sub Worksheet_BeforeDoubleClick). Diese beiden Funktionen überwachen die betreffenden Mausklicks und es lassen sich die gewünschten Aktionen mit ihnen verbinden. Schauen wir uns beispielhaft einmal den Worksheet_BeforeDoubleClick an (die Tastenkombination für die Entwicklungsumgebung ist uns nun bereits geläufig: <Alt>< F11>): 17

18 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Dim rng As Range If Intersect(Target, Worksheets(1).Range("B:C")) Is Nothing Then Exit Sub If Target.Row = 1 Then Exit Sub If Target.Column = 2 Then If Target.Interior.ColorIndex = 4 Then 'Color 4 = Farbe Grün Cells(Target.Offset(0, 2) + 1, 6) = "" 'Sp-Name löschen Cells(Target.Offset(0, 2) + 1, 5) = "" 'Sp-Nr löschen Target.Offset(0, 2).Value = "" 'Nr in Spalte D löschen Target.Interior.ColorIndex = 0 'Farbe zurücksetzen Target.Offset(0, 1).Interior.ColorIndex = 0 Target.Offset(0, 1).Value = "" Target.Value = "" Range("I8").Value = Range("I8").Value - 1 'Anzahl Spieler Range("I9").Value = Range("I8").Value \ 4 'Anzahl Tische Range("I10").Value = Range("I8").Value Mod 4 'Anzahl 5er-Tische Else 'in Liste aufnehmen If Target.Offset(0, 2) <> "" Then Target.Interior.ColorIndex = 4 Target.Value = Chr(252) Exit Sub Else If Target.Offset(0, -1).Value = "" Then Exit Sub End If End If For Each rng In Worksheets(1).Range("F:F").Cells If IsEmpty(rng) Then lz = rng.row rng = Target.Offset(0, -1).Value Target.Offset(0, 2).Value = lz - 1 Cells(lz, 5).Value = lz - 1 Target.Value = Chr(252) Target.Offset(0, 1).Value = Chr(252) Target.Interior.ColorIndex = 4 Target.Offset(0, 1).Interior.ColorIndex = 4 Range("I8").Value = Range("I8").Value + 1 'erste freie Zelle in Spalte "F" 'Anzahl Spieler 'Anzahl Tische Range("I9").Value = Range("I8").Value \ 4 Range("I10").Value = Range("I8").Value Mod 4 'Anzahl 5er-Tische End End If Next rng End If Listing 2 Sub Worksheet_BeforeDouble Click(ByVal Target As Range, Cancel As Boolean) Abfrage einer angeklickten Zelle in Spalte "B" auf Farbhintergrund: falls grün (ColorIndex=4), dann Teilnehmer aus Liste in Spalte "F" löschen, sonst Spieler neu in Spalte "F" aufnehmen Zu diesem Listing bedarf es nun einiger Erläuterungen. Mit der Methode Intersect wird sichergestellt, dass nur dann weitere Aktionen stattfinden, wenn sich die aktuell markierte Zelle im Zielbereich Range("B:C") befindet. Auch der Doppelklick in die 1. Zeile Target.Row = 1 soll keine weitere Aktion nach sich ziehen. Was passiert nun aber, wenn in Spalte "B" oder "C" eine Zelle angeklickt wird? Der Einfachheit halber soll hier nur das Vorgehen für die Spalte "B" (= bezahlt) erläutert werden: If Target.Column = 2. Die Codierung für Spalte "C" (= anwesend") kann als Übung (s. Übung 3) dienen. 18

19 Wird nun beispielsweise die Zelle "B88" rechtsgeklickt und ist die Zelle "A88" leer, so ist wiederum nichts zu tun: If Target.Offset(0, -1).Value = "" Then Exit Sub. Gibt es aber in Zelle "A88" einen Teilnehmereintrag, so müssen zwei Fälle unterschieden werden: entweder die Zelle "B88" ist bereits mit einem Häkchen markiert und mit grüner Hintergrundfarbe versehen, d.h. der Teilnehmer ist bereits aufgenommen und soll jetzt wieder gelöscht werden, oder die Zelle ist nicht markiert und der Teilnehmer aus "A88" muss noch in die Teilnehmerliste, also in Spalte "F" aufgenommen werden. Fall A: Ein Teilnehmer wird neu aufgenommen, Beispiel "Tanja Evers" durch Doppelklick in "B13" Es wird zunächst nach der ersten freien Zelle in Spalte "F" Ausschau gehalten For Each rng In Worksheets(1).Range("F:F").Cells If IsEmpty(rng) und die entsprechende Zeilennummer in der Variablen lz (steht für leerzelle) gespeichert lz = rng.row. Der Spielername "Tanja Evers" wird aus "A13" in der Variablen rng zwischengespeichert rng = Target.Offset(0, -1).Value, und die - nur intern vorgehaltene - Spielernummer in der Zelle "D13" (nicht sichtbar im Tabellenblatt, da für den Anwender ohne Belang) gemerkt (Target.Offset(0, 2).Value = lz - 1), um die Möglichkeit eines Löschvorgangs nicht zu verbauen. Anschließend werden lediglich noch die Zellen "B13" und "C13" mit einem Häkchen Target.Value = Chr(252) sowie der grünen Füllfarbe Target.Interior.ColorIndex = 4 versehen und es werden einige weitere Zellen ("I8", "I9" und "I10" für die spätere Auslosung bereits mit Werten gefüllt, und zwar enthalten "I8" die Anzahl der Spieler (bisherigen Wert um 1 erhöhen) Range("I8").Value = Range("I8").Value + 1 "I9" die Anzahl der benötigten Tische (= Anzahl der Spieler dividiert durch 4 als Integer-Wert) Range("I9").Value = Range("I8").Value \ 4 "I10" die Anzahl der benötigten 5er Tische (als Restwert der Division durch 4) Range("I10").Value = Range("I8").Value Mod 4 Hinweis 6 Chr (252) entspricht dem Zeichen "ü" und liefert in der Schriftart Wingdings das Häkchen Fall B: Ein bereits aufgenommener Teilnehmer wird wieder aus der Liste entfernt, Beispiel "Gerd Förster" (etwa weil man sich "verklickt" hat) In diesem Fall ist die Zelle "B18" grün markiert: If Target.Interior.ColorIndex = 4. Der Spieler muss nun wieder aus der Liste in Spalte "F" gelöscht werden. 19

20 Die Zeile, in der er in Spalte "F" eingetragen wurde, ist leicht wieder auffindbar, da die Spieler-Nummer in "D13" zwischengespeichert wurde: Offset(0, 2). Der Löschvorgang wird ausgelöst über die Anweisung Cells(Target.Offset(0, 2) + 1, 6) = "", also das Löschen derjenigen Zelle, dessen Zeile um den Wert 1 erhöht in "D13" steht und dessen Spalte gleich 6 ist. Ebenso muss die in "C13" vorgenommene Markierung wieder entfernt werden, und es muss die Anzahl der Spieler, die Anzahl der Tische und die Anzahl der 5er-Tische korrigiert werden. Vervollständigen Sie den Quellcode für den Doppelklick auf ein Zelle in Spalte "C". Übung 3 Ereignissteuerung 2.5 Der Kern des Programms: die Auslosung Nachdem sich die Teilnehmer angemeldet haben und in die Spielerliste in Spalte "F" aufgenommen wurden, erfolgt die Auslosung, d.h. die Zuordnung der einzelnen Spieler zu den Spieltischen. Hierfür steht im Tabellenblatt Auslosung ein Button mit dem Text Auslosung starten bereit (erstellen lässt er sich über die Menüleiste mit ENTWICKLERTOOLS, EINFÜGEN aus der Gruppe STEUERELEMENTE, Element BEFEHLSSCHALTFLÄCHE). Ein Klick auf diesen Button startet das Main-Programm Sub Auslosung() im Modul des Tabellenblattes Auslosung. An dieser Stelle ist nun der Zeitpunkt gekommen, den Aufbau und die wesentlichen Bestandteile des Auslosungsprogramms zunächst einmal in groben Zügen vorzustellen, um anschließend in den Kapiteln bis auf die einzelnen Teile näher einzugehen. Zu Beginn des Programms Sub Auslosung() sollen vom Anwender über einen Dialog (s. Abbildung 5, Seite 22) die Startparameter "Anzahl der Durchgänge" und "Anzahl der Runden pro Durchgang" festgelegt werden. Anschließend besteht die wesentliche Aufgabe des Programms darin ein Tabellenblatt Liste zu erstellen, aus der hervorgeht, wer in welchem Durchgang an welchem Tisch mit welcher Platz-Nr teilnimmt (s Das Tabellenblatt "Liste") pro Durchgang ein Tabellenblatt für die Eingabe der erreichten Punkte zu erstellen (s Pro Durchgang je ein Tabellenblatt) 20

21 den Teilnehmern per Mischprogramm einen Platz an einem Tisch zuzuweisen: Sub Tischzuweisung() (s Das Mischprogramm) ein Tabellenblatt Ergebnis mit einer sortierten Rangfolge der Teilnehmer zu erzeugen: Sub ergebnis() (s Das Tabellenblatt "Ergebnis") Diese vier Aspekte werden wie erwähnt - ausführlich als Einzelthemen in den genannten Abschnitten gesondert behandelt. Um mit dem Main-Programm vertraut zu werden, werfen wir zunächst einen Blick a) auf die global definierten Variablen und b) auf die Eingabemaske für die Startparameter Zu a) Die global definierten Variablen und Konstanten stehen ganz am Anfang des Moduls (Modul des Tabellenblattes Auslosung) und sind für alle in diesem Modul eingesetzten Prozeduren verfügbar. Const MaxAnzDg = 10 Const MaxAnzRd = 10 Const ZeilBeg = 3 Const SpBeg = 2 Const HGrFaSp = 6 Const HGrFaTi = 32 Const list = "Liste" Const dg = "Durchgang" Const erg = "Ergebnis" Const wf4e = "Wert-Form4e" Const wf4v = "Wert-Form4v" Const wf5e = "Wert-Form5e" Const wf5v = "Wert-Form5v" Const AnzTiProBlock = 4 'maximale Anzahl Durchgänge 'maximale Anzahl Runden pro Durchgang 'in den Durchgangsblättern beginnen die Tischüberschriften ab Zeile 3 'und Spalte B 'Hintergrundfarbe in SpielerZelle (Durchgangs-Tabelle) 'Hintergrundfarbe in TischüberschriftZelle (Durchgangs-Tabelle) 'Name des Tabellenblattes "Liste" 'Name für Durchgangs-Tabellenblätter 'Name des Tabellenblattes "Ergebnis" 'Name der Tabellenblätter für die Standard-Spielzettel mit 4 Spielern 'Name der Tabellenblätter für die DDV-Spielzettel mit 4 Spielern 'Name der Tabellenblätter für die Standard-Spielzettel mit 5 Spielern 'Name der Tabellenblätter für die DDV-Spielzettel mit 5 Spielern 'Anzahl Tische im 16-er Block Listing 3 Globale Programm-Variable des Auslosungsprogramms Public Anz_Dg As Integer 'Anzahl Durchgänge Public DurchBeg As Integer 'Bei welchem Durchgang soll begonnen werden Dim Zuf_Nr() As Integer '2-dimensionale Tabelle, enthält Zufalls-Nr und Durchgangs-Nr Dim Anz_Sp() As Integer 'eindimensionale Tabelle mit Anzahl Spielern pro Durchgang Dim Max_AnzSp As Variant 'maximale Anzahl an Spielern (alle Durchgänge) Dim Anz_5erTi() As Integer 'Anzahl der 5-er Tische pro Durchgang Dim Max_Anz_5erTi() As Integer 'max. Anzahl an möglichen 5-er Tischen pro Durchgang Dim Anz_16Bl() As Integer 'Anzahl 16-er Blöcke Dim Anz_Tische() As Integer 'Anzahl benötigter Tische... 21

22 Leicht zu erkennen an der Variablen-Deklaration Const MaxAnzDg = 10 sowie Const MaxAnzRd = 10 ist die Festlegung auf maximal 10 Durchgänge sowie 10 Runden pro Durchgang. Bei einem "normalen" Turnier sind i.a. nicht mehr als 4 Durchgänge und 4 Runden pro Durchgang üblich, so dass diese Werte allemal ausreichend sind. Alle weiteren Deklarationen sind hinsichtlich ihrer Funktion anhand der Kommentierung zu erkennen bzw. werden noch im weiteren Verlauf im jeweiligen Zusammenhang erläutert. Zu b) Nun wieder zurück zum Auslosungsprogramm. Wie bereits erwähnt, erscheint nach dem Start für den Anwender eine Eingabemaske mit der Abfrage nach der gewünschten Anzahl der Durchgänge und der Anzahl der Runden pro Durchgang (s. Abbildung 5). Hinweis 7 Im Listing 3 wird deutlich, wie Kommentare im Queltext innerhalb einer Zeile gesetzt werden: durch einen Apostroph Abbildung 5 Die Userform Startparameter Auslosung Zusätzlich lässt sich, falls die Voreinstellung nicht übernommen werden soll, die Anzahl der insgesamt benötigten Tische durch eine Erhöhung der 5er-Tische verringern (s Zusatzfunktionen, Punkt (2)). Aktiviert wird diese selbst erstellte Eingabemaske, eine sogenannte UserForm, im Programm durch den Befehl StartAuslosung.Show. StartAuslosung ist hierbei der Name dieser Dialogmaske. Dieser Name findet sich wieder im Eigenschaftenfenster dieser UserForm in der Entwicklungsumgebung (s. Abbildung 9). Das ist ja nun soweit alles gut und schön, wirft aber viele neue Fragen auf, wie z.b. "womit und wie lässt sich so eine Dialog-Box erstellen", "wie lässt sie sich im Programm anzeigen/aktivieren", "wie kann man 22

23 sie programmieren", "wie werden Daten entgegengenommen und wieder zurückgegeben", usw. Diesem Thema wollen wir uns nun in Schritt für Schritt nähern Eigene Dialoge entwerfen und programmieren Zunächst einmal muss eine sogenannte Userform erzeugt und anschließend den eigenen Bedürfnissen entsprechend angepasst werden. Hierfür wechselt man wieder in die Entwicklungsumgebung (Tastenkombination wie gehabt <Alt><F11>). Abbildung 6 Der Projekt-Explorer Im Projekt-Explorer (wird standardmäßig in der Entwicklunksumgebung oben links eingeblendet, siehe auch 2.3 Die Entwicklungsumgebung von VBA sowie Abbildung 2) werden die Objekte und Dateien angezeigt, die zum Projekt gehören. Man sieht, dass die Arbeitsmappe zurzeit nur aus einer Tabelle (mit dem Namen Auslosung) und zwei Formularen (DruckenSpielzettel und StartAuslosung) besteht. Der Doppelklick auf ein Objekt öffnet die Möglichkeit zu ihrer Bearbeitung, beispielsweise öffnet sich beim Tabellenmodul Tabelle1(Auslosung) der Editor mit dem Quellcode des Hauptprogramms. Hier in diesen Bereich des Projekt-Explorers klickt man mit der rechten Maustaste; falls der Projekt-Explorer nicht erscheint, muss er noch über den Menüpunkt ANSICHT aufgerufen werden (alternativ Tastenkombination <Strg><R>). 23

24 In dem darauffolgenden Kontextmenü wählt man den Befehl EINFÜGEN/USERFORM (Abbildung 7). Abbildung 7 UserForm einfügen Nun bekommt man ein leeres Formular namens UserForm1 zur Verfügung gestellt, zusammen mit einer Werkzeugsammlung, die die wichtigsten Steuerelemente enthält (Abbildung 8). Über das Menü EXTRAS/ZUSÄTZLICHE STEUERELEMENTE können bei Bedarf weitere Elemente hinzugefügt werden. Damit steht dem Entwickler ein großes Repertoire an Hilfsmitteln zur Verfügung, mit denen er sich seine Dialogmaske den eigenen Vorstellungen entsprechend zusammenbasteln kann. Abbildung 8 UserForm mit Werkzeugsammlung Für unsere Userform StartAuslosung (die derzeit noch UserForm1 heißt), werden folgende Steuerelemente benötigt: 24

25 sechs Bezeichnungsfelder (Label) für die Beschriftungen "Wieviel Durchgänge insgesamt", "Tische gesamt", etc. fünf Textfelder (TextBox) für die Anzeige und Eingabe von Daten wie z.b. Anzahl der Durchgänge für drei der fünf Textfelder (s. Abbildung 5) jeweils ein Drehfeld (SpinButton) für das schrittweise Hochzählen der Werte in den Textfeldern zwei Befehlsschaltflächen (CommandButton) für die Ausführung von Befehlen (z.b. ) Ein einzelnes Steuerelement kann, nachdem es in der Werkzeugsammlung ausgewählt wurde, in der Userform platziert und den eigenen Bedürfnissen angepasst werden. Die Anpassungen erfolgen zum einen über die Mausoperationen, um etwa das Element zu vergrößern oder zu verkleinern und an die richtige Stelle zu setzen, zum anderen aber auch über das Editieren im zugehörigen Eigenschaften-Fenster (sichtbar unterhalb des Projektexplorers per <F4> oder Menü ANSICHT/ EIGENSCHAFTENFENSTER). Die beiden folgenden Abbildungen 9 und 10 zeigen in Ausschnitten zwei Beispiele von Eigenschaften-Fenstern. Beispiel 1: Das Eigenschaften-Fenster StartAuslosung Abbildung 9 Eigenschaftenfenster StartAuslosung Hier handelt es sich um die Userform selbst. Der von VBA bei der Erstellung der UserForm vorgeschlagene Name UserForm1 wurde inzwischen in StartAuslosung geändert. 25

26 Beispiel 2: Das Eigenschaften-Fenster TextBox3 Abbildung 10 Eigenschaftenfenster TextBox3 Diese TextBox enthält das Steuerelement zur Eingabe der Tischanzahl. In diesem Fall wurde der von VBA vorgeschlagene Name Text- Box3 beibehalten. Kommen wir nun zur Makro-Programmierung dieser Steuerelemente, also der Möglichkeit, sie per Quellcode zu bearbeiten/"steuern". Um das Formular StartAuslosung zu initialisieren bzw. zu ändern, führen wir zunächst einen Doppelklick innerhalb des Formulars (oder Kontextmenü CODE ANZEIGEN) aus. Excel generiert automatisch einen leeren Programmrahmen zum Editieren(Abbildung 11). Abbildung 11 Programmrahmen einer User- Form Am oberen Rand sieht man zwei Listenfelder. Im rechten Listenfeld hat man neben dem (ereignisgesteuerten) Click u.a. auch die Möglichkeit einer Initialisierung. Die Auswahl dieses Elementes erzeugt automatisch den Text Private Sub userform_initialize() Die Textboxen der in Abbildung 5 (Seite 22) dargestellten UserForm (TextBox1 = Anzahl der Durchgänge, TextBox2 = Anzahl der Runden und TextBox3 = Anzahl der Tische) sollten nun mit Standard-Werten initialisiert werden. Während die Textboxen 1 und 2 bereits im jeweiligen Eigenschaftenfenster mit den Anfangswerten 3 (= Anzahl Durch- End Sub 26

27 gänge) und 4 (= Anzahl Runden) versehen werden können, ist dies bei der Anzahl der Tische nicht möglich; die Anzahl der Tische ist abhängig von der Anzahl der Teilnehmer und muss daher per Quellcode- Programmierung berechnet werden: Private Sub userform_initialize() Dim AnzSp As Integer Dim MaxAnzTi As Integer... If Worksheets(1).Range("M1").Value = "" Then AnzSp = 0 Else AnzSp = Range Worksheets(1).Range("I8").Value 'Anzahl Spieler End If Listing 4 Sub userform_initialize() Vorbelegung Anzahl der Tische in TextBox3 mit dem maximal möglichen Wert MaxAnzTi = AnzSp \ 4 SpinButton3.Value = MaxAnzTi TextBox3.Value = SpinButton3.Value SpinButton1.Min = Worksheets(1).Range("I11").Value + 1 End Sub Im nächsten Schritt geht es darum, ein Makro für die Änderung der Tischanzahl zu schreiben. Da die Änderung über das nebenstehende Drehfeld SpinButton3 erfolgen soll, ist für die TextBox3 selber keine Codierung notwendig, wohl aber für das nebenstehende Drehfeld. Führen wir zunächst einen Doppelklick auf die Schaltfläche SpinButton3 in der Userform StartAuslosung aus, generiert Excel wiederum automatisch einen leeren Programmrahmen, diesmal mit der Option Change: Private Sub SpinButton3_Change() End Sub In diesem Rahmen werden nun die gewünschten Anpassungen bzw. Berechnungen vorgenommen (s. auch Listing 16, Seite 43): Private Sub SpinButton3_Change() Dim Max_AnzSp As Integer Dim AnzSp As Integer Dim i As Integer Dim MaxAnzTi As Integer Dim MinAnzTi As Integer Dim Anz5erTi() As Integer Dim Anz4erTi() As Integer Dim Anz_Tische() As Integer 'Max-Anzahl Spieler alle Durchgänge 'Anzahl Spieler in einem Durchgang 'Anzahl Tische Maximum 'Anzahl Tische Minimum 'Anzahl 5er-Tische 'Anzahl 4er-Tische 'Anzahl benötigter Tische insgesamt Listing 5 Sub SpinButton3_Change() If Worksheets(1).Range("M1").Value = "" Then AnzSp = 0 Else AnzSp = Worksheets(1).Range("I8").Value 'Anzahl Spieler End If 27

28 If AnzSp > Max_AnzSp Then Max_AnzSp = AnzSp Worksheets(1).Range("H3").Value = Max_AnzSp End If MaxAnzTi = AnzSp \ 4 If AnzSp Mod 5 = 0 Then MinAnzTi = AnzSp \ 5 Else MinAnzTi = AnzSp \ End If SpinButton3.Min = MinAnzTi SpinButton3.Max = MaxAnzTi TextBox3.Text = SpinButton3.Value ReDim Preserve Anz5erTi(MinAnzTi To MaxAnzTi) ReDim Preserve Anz4erTi(MinAnzTi To MaxAnzTi) For i = MinAnzTi To MaxAnzTi Anz4erTi(i) = 5 * i - AnzSp Anz5erTi(i) = i - Anz4erTi(i) Next i TextBox4.Value = Anz5erTi(SpinButton3.Value) TextBox5.Value = Anz4erTi(SpinButton3.Value) End Sub Durch die Variablen Max_AnzSp und AnzSp soll man sich nicht irritieren lassen. Sie dienen im Programm nur zur Differenzierung nach Anzahl der Spieler pro Durchgang, falls mal jemand nach einem Durchgang aussteigt oder neu dazu kommt (s Zusatzfunktionen). Es soll hier eigentlich nur deutlich werden, wie die Eigenschaften dieses Elementes durch die Makro-Programmierung gesteuert werden können. Zunächst einmal werden die maximale und minimale Anzahl an benötigten Tischen berechnet (MaxAnzTi und MinAnzTi) und ihre Werte den Variablen SpinButton3.Min und SpinButton3.Max zugewiesen. Damit hat das Drehfeld SpinButton3 die Eigenschaften maximal möglicher Wert und minimal möglicher Wert zugewiesen bekommen. Da über die Anweisung TextBox3.Text = SpinButton3.Value die TextBox3 mit dem Drehfeld SpinButton3 verbunden ist, kann somit die Text- Box3 jetzt nur noch Werte innerhalb dieses Intervalls annehmen. Aus diesen Ausführungen wird auch deutlich, dass in diesem Fall eine Quellcode-Programmierung unumgänglich ist, da Maximal- und Minimal-Wert jeweils variabel sind. Ein Eintrag im Eigenschaften-Fenster macht somit keinen Sinn, auch wenn diese Optionen im Eigenschaftenfenster von SpinButton3 mit Max bzw. Min vorgesehen sind und somit auch möglich wären. Aus dem Quelltext geht ferner hervor, dass für jeden möglichen Wert zwischen der minimalen und maximalen Anzahl an Tischen eine Aufteilung in Anzahl 4er-Tische (= TextBox4) und Anzahl 5er-Tische (= 28

29

30

31

32 2.5.2 Die neuen Tabellenblätter Zu Beginn des Programms existiert lediglich das Tabellenblatt mit dem Namen Auslosung. Es besteht i.w. aus der Teilnehmerliste (s. Abbildung 3) und dem Button Auslosung starten. Mit dem Klick auf diesen Button wird das Programm Sub Auslosung() ausgeführt. Es ist das Haupt-Programm. Es sorgt zunächst einmal dafür, dass jeder Teilnehmer für jeden einzelnen Durchgang einen zufällig ausgewählten Tisch- Platz zugewiesen bekommt. Nachdem das erfolgt ist, können neue zusätzliche Tabellenblätter generiert werden, und zwar ein Tabellenblatt Liste als Übersicht je ein Tabellenblatt pro Durchgang zur Eingabe der erreichten Punktzahl pro Spieler ein Tabellenblatt Ergebnis, in dem die Punktzahlen eines jeden Teilnehmers übersichtlich dargestellt werden Ein neues Tabellenblatt wird in VBA mit der Funktion Worksheets.Add erzeugt Das Tabellenblatt "Liste" Dieses Tabellenblatt enthält eine übersichtliche Liste aller Teilnehmer, aus der hervorgeht, welcher Spieler in welchem Durchgang an welchem Tisch mit welcher Tisch-Nr spielt. Mit der Anweisung Worksheets.Add After:=Worksheets(Worksheets.Count) wird hinter dem letzten Tabellenblatt ein neues angehängt. Es bekommt den Namen Liste. list ist eine globale Konstante: Const list = "Liste". Worksheets(1).Cells(2, 9).Value = Anz_Dg Worksheets(1).Cells(1, 9).Value = Worksheets(1).Cells(11, 9).Value Worksheets.Add After:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = list 'Erstellung des Tabellenblattes "Liste" Worksheets(1).Range("M:M").Copy Destination:=Worksheets(list).Range("A:A") Worksheets(list).Range("A1").Insert Worksheets(list).Range("A1").EntireColumn.ColumnWidth = 22 Dieses Tabellenblatt dient dazu, eine übersichtliche, alphabetisch sortierte Liste zu erstellen, aus der für jeden Spieler hervorgeht, in welchem Durchgang er an welchem Tisch spielt. Aus dieser Liste kann z.b. die Teilnehmerin Marlies Bäumer erkennen, dass sie im ersten Durchgang am Tisch 4 spielt mit der Tisch-Nr 2 (s. Abbildung 13). Listing 7 Tabellenblatt Liste hinzufügen Hinweis 10 Die Spielerliste wurde in der Zwischenzeit im Tabellenblatt Auslosung (=Worksheets(1) von Spalte "F" nach Spalte "M" kopiert. 32

33 Durch einen Klick auf den Button Liste drucken kann die Liste (evtl. mehrfach) ausgedruckt werden und als Aushang (an evtl. verschiedenen Örtlichkeiten) angebracht werden. Abbildung 13 Tabellenblatt Liste bereits vorformatiert und nach Namen sortiert Pro Durchgang je ein Tabellenblatt Im Anschluss an das Listentabellenblatt folgt pro Durchgang je ein weiteres Tabellenblatt für die Eingabe der erreichten Punkte jedes einzelnen Spielers. For d = DurchBeg To Anz_Dg 'Erstellung der Durchgangstabellenblätter Worksheets.Add After:=Worksheets(Worksheets.Count) Worksheets(d + 2).Name = d & ". " & dg 'Name des Durchgangs- Tabellenblattes: const dg = Durchgang Sheets(d + 2).Range("A1").EntireColumn.ColumnWidth = 5 'es folgen weitere Formatierungen Sheets(d + 2).Range("B1").EntireColumn.ColumnWidth = Next d Listing 8 Je ein Tabellenblatt pro Durchgang hinzufügen Ein komplett durchformatiertes Tabellenblatt hat dann folgendes Aussehen (Abbildung 14): Abbildung 14 Tabellenblatt 1. Durchgang 33

34 Aus der Abbildung lässt sich schon mal grob erkennen, was bei der Codierung alles zu beachten ist: Spaltenbreiten festlegen Überschriften berücksichtigen Unterscheidung zwischen 5er- und 4er-Tischen Werden alle Tische nebeneinander auf dem Bildschirm platziert, wird die spätere Eingabe der Punkte umständlich; übersichtlicher wird es, wenn jeweils 4 Tische zu einem Block zusammengefasst werden, und die Blöcke jeweils untereinander zu stehen Neben den Formatierungen der einzelnen Zellen erfolgt die Zuweisung der Teilnehmer zu den einzelnen Tischen. Auf die Implementierung dieses Vorganges, dem Mischvorgang, wird im Abschnitt "2.5.3 Wer kommt in welchem Durchgang an welchem Platz?" näher eingegangen. Die Zellen mit dem Wert 0 enthalten als Formel die Summe aller Punkte pro Tisch Worksheets(d + 2).Cells(zeile, spalte + 1).FormulaR1C1 = "=SUM(R[-5]C:R[-1]C)" Sie muss in jedem Falle als Ergebnis den Wert 0 ergeben (sofern an den Tischen die Punkte mit Plus/Minus notiert werden). Der Nutzen dieser Summenformel liegt darin, dass direkt bei Eingabe der Punktzahl ersichtlich wird, ob an dem betreffenden Tisch korrekt gezählt wurde. Hinweis 11 Anzahl der Tische pro Block s. Listing 3 (Glob. Variable) Const AnzTiProBlock=4 'Anzahl Tische im 16-er Block Listing 9 Summenformel pro Tisch Das Tabellenblatt "Ergebnis" Nachdem der Anwender die Punktzahlen der Spieler in die Durchgangs- Tabellenblätter eingetragen hat, möchte er sich natürlich die Gesamtergebnisse in einer Übersicht anschauen können. Hierzu dient das Tabellenblatt Ergebnis, welches als letztes vom Haupt-Programm Sub Auslosung erzeugt wird (s. Abbildung 15). Worksheets.Add After:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = erg 'Tabellenblatt "Ergebnis" ganz am Ende Worksheets(erg).Range("A1").EntireColumn.ColumnWidth = 4.43 Worksheets(1).Range("M:M").Copy Destination:=Worksheets(erg).Range("B:B")... Listing 10 Tabellenblatt Ergebnis hinzufügen 34

35 Abbildung 15 Tabellenblatt Ergebnis Die Formatierung der Zellen hält sich hier in Grenzen. Es werden i.w. lediglich die Teilnehmer nach Spalte "B" kopiert und es wird ein Button Punkte aus allen Durchgängen generiert. Hinter diesem Button verbirgt sich das Unterprogramm Sub Ergebnis. Dieser Programmteil sorgt dafür, dass die Punktzahlen eines jeden Spielers aus den einzelnen Durchgängen in die Ergebnisliste übernommen werden. Die Spalte "B" in dem Ergebnis-Tabellenblatt mit den Spielernamen wird Zeile für Zeile abgearbeitet, wobei für jeden Durchgang nach dem entsprechenden Namen in der Spalte "K" der Durchgangstabelle (s. auch "2.5.3 Wer kommt in welchem Durchgang an welchem Platz?") gesucht wird; wurde er gefunden, wird die betreffende Punktzahl für den Spieler in die Ergebnisliste übernommen. Hinweis 12 Spalte "A" ist reserviert für die Rangfolge (s. Abbildung 16, Seite 36) Außerdem werden noch zwei weitere Buttons generiert: ErgSortRangButtonErstellen ErgDruckButtonErstellen 'Ergebnisliste nach Punktzahl sortieren 'Ergebnisliste ausdrucken Die sich hinter ihnen verbergenden Makros sind selbsterklärend und recht einfach zu implemetieren. Der Quellcode der Ergebnis-Prozedur sieht nun wie folgt aus: Sub ergebnis() ErgSortNameButtonErstellen ErgSortRangButtonErstellen ErgDruckButtonErstellen Listing 11 Quellcode Sub Ergebnis() Anz_Dg = Worksheets(1).Range("I6") Max_AnzSp = Worksheets(1).Range("H3").Value Sheets(list).Range("A:A").Copy Destination:=Sheets(erg).Range("B:B") For n = 1 To Anz_Dg + 3 'und noch ein bisschen die Tabelle formatieren Worksheets(erg).Cells(1, n).interior.colorindex = HGrFaSp Worksheets(erg).Cells(1, n).font.bold = True 35

36 For m = 1 To Worksheets(erg).Range("B" & Rows.Count).End(xlUp).Row Worksheets(erg).Cells(m, n).borders.linestyle = xlcontinuous Next m Next n Worksheets(erg).Cells(1, 2).Value = "Name Vorname" With Worksheets(erg) Set bereich =.Range(.Cells(2, 3),.Cells(Max_AnzSp + 1, Anz_Dg + 2)) bereich.value = "" End With Sheets(erg).Range("A2:A" & Max_AnzSp + 1).Value = "" Dim Mat As Variant For d = 1 To Anz_Dg For n = 2 To Max_AnzSp + 1 Mat = Application.Match(Sheets(erg).Range("B" & n), Sheets(d & ". " & dg).range("k:k"), 0) If Not IsError(Mat) Then Sheets(erg).Cells(n, d + 2).Value = Sheets(d & ". " & dg).range("l" & Mat).Value End If Next n Next d Hinweis 13 Übernahme der Punktzahl aus den Durchgangs- Tabellenblättern Die Ergebnis-Tabelle könnte nach der Übernahme der Punktzahl und anschließender Sortierung etwa folgendes Aussehen haben: Abbildung 16 Tabellenblatt Ergebnis komplett durch formatiert Das Mischprogramm: wer kommt in welchem Durchgang an welchem Tisch an welchem Platz? Machen wir nun wieder einen Sprung zurück zum Haupt-Programm Sub Auslosung() und kommen zum eigentlichen Kern. Nachdem der Anwender im Start-Dialog StartAuslosung (s. Abbildung 5) seine Eingaben gemacht hat, steht nun für das Turnier fest, wie viel Durchgänge gespielt werden, wie viel Runden pro Durchgang gespielt werden und wie viel Personen auf wie viel 4er-Tische und 5er-Tische verteilt werden müssen. Die eigentliche Auslosung kann nun beginnen. 36

37 Im Mischprogramm Sub Tischzuweiung bekommt jeder einzelne Teilnehmer für jeden einzelnen Durchgang per Zufallsgenerator einen Platz an einem Tisch zugewiesen. Sub Tischzuweisung() ReDim Zuf_Nr(1 To Anz_Dg, 1 To Anz_Sp(d)) Dim q As Integer, z As Integer, tmp As Integer For q = 1 To Anz_Sp(d) Zuf_Nr(d, q) = q Next For q = Anz_Sp(d) To 1 Step -1 Randomize z = Int(Rnd * q) + 1 'Vorbelegung der Zuf_Nr-Tabelle mit 1, 2, 3,...,q 'neuer Startwert für Rnd-Funktion 'z = Zufallszahl zwischen 1 und q tmp = Zuf_Nr(d, z) 'tausche Zuf_Nr(d, z) Zuf_Nr(d, z) = Zuf_Nr(d, q) 'mit Zuf_Nr(d, q) = tmp 'Zuf_Nr(d, q) Next... Listing 12 Quellcode Sub Tischzuweisung Mit der ReDim-Anweisung wird der bereits deklarierte array Zuf_Nr() zum einen als 2-dimensionale Tabelle deklariert und zum zweiten wird die array-länge definiert ( Länge der 1.Dimension = Anz_Dg = Anzahl der Durchgänge, Länge der 2.Dimension = Anz_Sp(d)= Anzahl Spieler in Durchgang d). Der Mischalgorithmus bringt eine Zahlenfolge von 1 bis Anz_Sp(d) in eine zufällige Anordnung. Dies kann man sich wie folgt vorstellen: man hat einen Kartenstapel vor sich mit Anz_Sp(d) (=Anzahl Spieler pro Durchgang) Karten. Nun wird die unterste Karte mit einer zufälligen anderen über ihr liegenden Karte getauscht, dann die zweit-unterste, danach die dritt-unterste usw. Anschließend hat man also pro Durchgang eine Zahlenfolge von 1 bis Anz_Sp(d) generiert, die per Zufallsgenerator in eine zufällig angeordnete Reihenfolge gebracht wurde. Jetzt kann man daran gehen, diese Liste sukzessive von vorne bis hinten abzuarbeiten und dabei die Teilnehmer (sie sind in der Zwischenzeit nach Spalte "M" kopiert worden) in dieser zufällig ausgewählten Reihenfolge auf die einzelnen Tische zu verteilen: Sp_Name = Worksheets(1).Range("M" & (Zuf_Nr(d, n))).value (s. Quellcode in der Unterprozedur Sub ZelleMitNameFuellen() in Listing 13) In dieser Reihenfolge werden nun die Spieler auf die einzelnen Tische verteilt, zuerst die 5er-Tische, danach die 4er-Tische. 37

38 Optisch aufbereitet sollen die Durchgangs-Tabellenblätter das in der Abbildung 14 (Seite 33) dargestellte Aussehen haben. Vier Tische, nebeneinander dargestellt jeder Tisch besteht aus zwei Spalten, nämlich Name und Punktzahl bilden dabei jeweils einen Block. Die Blöcke wiederum werden untereinander platziert, wobei zwischen zwei Blöcken jeweils zwei Zeilen frei gelassen werden (aus der Abbildung 14 nicht ersichtlich, da in unserem Beispiel nur ein Block benötigt wurde). Die Implementierung erfolgt naturgemäß über mehrere Schleifen: ganz außen die Schleife der Blöcke For i16b = 1 To Anz_16Bl(d) innerhalb eines Blockes 4 Tische For itb = 1 To AnzTiProBlock (beachte globale Konstante Const AnzTiProBlock = 4) innerhalb eines Tisches 7 Zeilen For j = 1 To 7 'bei den 4er-Tischen 6 Zeilen Es folgt nun der komplette Quellcode für die 5er-Tische in der Prozedur Sub Tischzuweisung() (= Fortsetzug von Listing 12): n = 1 'Zähler für Spieler it = 1 'Laufvariable für Tische i5t = 1 'Laufvariable für 5er-Tische (für 4er-Tische nicht erforderlich, da es nur diese beiden Möglichkeiten gibt) For i16b = 1 To Anz_16Bl(d) 'Abarbeitung blockweise: mehrere Tische pro Block (Voreinstellung = 4) For itb = 1 To AnzTiProBlock 'weitere Abarbeitung tischweise (AnzTiProBlock = 4) spalte = SpBeg + 2 * (itb - 1) 'Festlegung der Spalte pro Tisch If it <= Anz_Tische(d) Then 'solange die Anzahl der Tische (Feld "I9") nicht überschritten wird If i5t <= Anz_5erTi(d) Then 'Falls Anzahl 5er-Tische überschritten wird, weiter bei 4er-Tische (s. else) For j = 1 To 7 'pro Tisch 7 Zeilen bei 5er-Tischen, bei 4er-Tischen 6 Zeilen zeile = ZeilBeg + 7 * (i16b - 1) + j - 1 Select Case j Case 1 '1.Zeile = Überschrift Worksheets(d + 2).Cells(zeile, spalte).value = "Tisch " & it Worksheets(d + 2).Cells(zeile, spalte + 1).Value = "Pkte" Worksheets(d + 2).Cells(zeile, spalte).font.bold = True Worksheets(d + 2).Cells(zeile, spalte).font.colorindex = 2 Worksheets(d + 2).Cells(zeile, spalte + 1).Font.ColorIndex = 2 Worksheets(d + 2).Cells(zeile, spalte + 1).Font.Bold = True Worksheets(d + 2).Cells(zeile, spalte).borders.linestyle = xlcontinuous Worksheets(d + 2).Cells(zeile, spalte + 1).Borders.LineStyle = xlcontinuous Worksheets(d + 2).Cells(zeile, spalte).horizontalalignment = xlcenter Worksheets(d + 2).Cells(zeile, spalte + 1).HorizontalAlignment = xlcenter Worksheets(d + 2).Cells(zeile, spalte).interior.colorindex = HGrFaTi Worksheets(d + 2).Cells(zeile, spalte + 1).Interior.ColorIndex = HGrFaTi Listing 13 Quellcode für 5er-Tische in der Sub Tischzuweisung() 38

39 Case 2 To 6 ZelleMitNameFuellen 'Zeile 2 bis 6 = Befüllung mit Namen 'Eintrag des Teilnehmers in die entsprechende Zelle Case 7 '7.Zeile = Summ-formel für Zeilen 2 bis 6 Worksheets(d + 2).Cells(zeile, spalte + 1).FormulaR1C1 = "=SUM(R[-5]C:R[-1]C)" Worksheets(d + 2).Cells(zeile, spalte + 1).FormatConditions.Delete Worksheets(d + 2).Cells(zeile, spalte + 1).FormatConditions.Add _ Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="0" With Worksheets(d + 2).Cells(zeile, spalte + 1).FormatConditions(1).Font.Bold = True.Italic = False.ColorIndex = 3 End With Worksheets(d + 2).Cells(zeile, spalte + 1).FormatConditions(1).Interior.ColorIndex = 5 Worksheets(d + 2).Cells(zeile, spalte + 1).HorizontalAlignment = xlcenter End Select Next j i5t = i5t + 1 'nach Abarbeitung 5er-Tisch Zähler um 1 erhöhen Else... 'Abarbeitung der 4er-Tische nach dem gleichen Schema Sub ZelleMitNameFuellen() Dim Sp_Name As String Dim MatchZeile As Variant Sp_Name = Worksheets(1).Range("M" & (Zuf_Nr(d, n))).value 'Zeile aus Spalte "M" entspricht Zufallszahl Worksheets(d + 2).Cells(zeile, spalte) = Sp_Name 'Eintragung des Spielers in der Durchgangs-Tabelle Worksheets(d + 2).Cells(zeile, spalte).locked = True 'entsprechende Zelle sperren Worksheets(d + 2).Cells(zeile, spalte).borders.linestyle = xlcontinuous Worksheets(d + 2).Cells(zeile, spalte).horizontalalignment = xlcenter Worksheets(d + 2).Cells(zeile, spalte).interior.colorindex = HGrFaSp Worksheets(d + 2).Cells(zeile, spalte + 1).Borders.LineStyle = xlcontinuous Worksheets(d + 2).Cells(zeile, spalte + 1).HorizontalAlignment = xlcenter Worksheets(d + 2).Cells(zeile, spalte + 1).Interior.ColorIndex = HGrFaSp Worksheets(d + 2).Cells(n, 11).Value = Sp_Name 'zusätzlich den Namen in Spalte "K" der Durchgangstabelle eintragen Worksheets(d + 2).Cells(n, 11).Locked = True 'und die betreffende Zelle sperren Worksheets(d + 2).Cells(n, 12).Formula = "=R" & zeile & "C" & spalte + 1 & "" 'außerdem die Punktzahl des Spielers automatisch übernehmen lassen Worksheets(d + 2).Cells(n, 12).Locked = True 'und auch diese Zelle (gleiche Zeile, aber Spalte "L"), sperren lassen MatchZeile = Application.Match(Sp_Name, Sheets(list).Range("A:A"), 0) 'Spielernamen in Tabelle "Liste", Spalte "A" suchen If IsError(MatchZeile) Then 'falls noch nicht vorhanden lz = Sheets(list).Range("A" & Rows.Count).End(xlUp).Row + 1 'neue Zeile "aufmachen" 39

40 Sheets(list).Range("A" & lz).value = Sp_Name 'und in dieser den Namen eintragen Worksheets(list).Cells(lz, d + 1).Value = it & "(" & j - 1 & ")" 'mit Eintrag der Tisch- und Platz-Nr in der betreffenden Durchgangsspalte Else 'falls schon vorhanden Worksheets(list).Cells(MatchZeile, d + 1).Value = it & "(" & j - 1 & ")" 'Eintrag der Tisch- und Platz-Nr in der betreffenden Durchgangsspalte End If n = n + 1 'Nach Eintragung in Durchgangs-Tabelle Spierzähler um 1 erhöhen End Sub Für jeden Tisch wird zunächst einmal eine Überschrift erzeugt (Case 1), dann in der Unterprozedur ZelleMitNameFuellen() die Spielernamen eingetragen (Case 2 To 6) und zum Schluss (Case 7) noch eine Summenformel notiert, in der die Summe der erreichten Punktzahl pro Tisch berechnet wird (s. auch Listing 9). Sie dient lediglich als Kontrolle, da bekanntermaßen bei einer Plus-Minus-Wertung die Gesamtsumme immer Null sein muss. Sukzessive holt sich die Unterprozedur ZelleMitNameFuellen() aus dem 1.Tabellenblatt (=Tabellenblatt mit dem Namen Auslosung) eine zuvor zufällig ausgewählte Zelle der Spalte "M" Sp_Name = Worksheets(1).Range("M" & (Zuf_Nr(d, n))).value und überträgt dessen Inhalt den Spielernamen in die dafür vorgesehene Zelle der Durchgangstabelle: Worksheets(d + 2).Cells(zeile, spalte) = Sp_Name Der gleiche Spieler(name) wird zusätzlich noch in Spalte "K" eingetragen, Worksheets(d + 2).Cells(n, 11).Value = Sp_Name und mit ihm noch in der Zelle rechts daneben, also in Spalte "L" der gleichen Zeile eine Formel zur Übernahme der Punkte; somit werden alle Änderungen in der Punktezahl-Zelle des Spielers mit übernommen: Worksheets(d + 2).Cells(n, 12).Formula = "=R" & zeile & "C" & spalte + 1 & "" Die beiden Spalten "K" und "L" spielen später bei Übernahme der Punktzahl eines Spielers in das Tabellenblatt Ergebnis noch eine wichtige Rolle. Hinweis 14 Die Spielerliste wurde bereits zu Beginn des Main-Programms Sub Auslosung von Spalte "F" nach Spalte "M" kopiert. Hinweis 15 s. Listing 11 bzw. Hinweis 13, Seite 36 Im weiteren Verlauf wird in dem Tabellenblatt Liste nach dem betreffenden Spielernamen gesucht: MatchZeile = Application.Match(Sp_Name, Sheets(list).Range("A:A"), 0) 40

41 Wurde er nicht gefunden, wird er neu in die Liste mit aufgenommen. Dies erscheint zunächst einmal umständlich programmiert; es hat lediglich damit zu tun, dass in diesem Programm die Möglichkeit berücksichtigt wird, dass in einem Durchgang Spieler neu hinzukommen oder - aus welchen Gründen auch immer - nicht weiter am Turnier teilnehmen (s. auch das folgende Kapitel Zusatzfunktionen, Punkt (1)) Zusatzfunktionen Die Schwerpunkte des Programms wurden in allen wichtigen Punkten vorgestellt. Das Rüstzeug für die Implementierung in VBA steht nunmehr bereit. Das komplette Programm bietet allerdings noch einige Sonderfunktionen, die im Folgenden vorgestellt werden sollen. (1) Teilnehmer können nach einem gespielten Durchgang ausfallen oder neu hinzukommen. Abbildung 17 Die Zellen I6 bis I11 im Tabellenblatt "Auslosung" Die Zellen I6 und I7 werden nach Eingabe der Startparameter gefüllt, die Zellen I8 bis I10 bereits vor Beginn des Auslosungsprogramms (s. 2.4 Ereignisse in VBE) In diesem Fall bietet das Programm die Möglichkeit, ab einem bestimmten, selbst gewählten Zeitpunkt einen oder mehrere noch nicht gespielte Durchgänge neu zu mischen. Hierzu dient im Tabellenblatt Auslosung die Zelle "I11" (s. Abbildung 17), in dem die Anzahl der bereits gespielten Durchgänge manuell hochgesetzt werden kann. Wenn dann erneut die Schaltfläche Auslosung starten gedrückt wird, werden nur noch die nicht gespielten Durchgänge neu gemischt. Zu diesem Zweck wird im Programm eine Variable DurchBeg deklariert, die aus der Zelle "I11" eingelesen und um 1 erhöht wird: DurchBeg = Worksheets(1).Range("I11")

42 Außerdem werden bei Spielbeginn (DurchBeg = 1) alle Tabellenblätter entfernt, jedoch bei einer erneuten Auslosung ab dem zweiten Durchgang nur die noch nicht benutzten Durchgangstabellenblätter. Die Tabellenblätter Liste und Ergebnis werden ohnehin in jedem Fall neu generiert. Public DurchBeg As Integer 'bei welchem Durchgang soll begonnen werden... DurchBeg = Worksheets(1).Range("I11") If DurchBeg = 1 Then 'bei Spielbeginn alle Tabellenblätter löschen bis auf das "Auslosung"s-Tabellenblatt For d = 1 To (ActiveWorkbook.Sheets.Count - 1) Sheets(2).Delete Next End If... If DurchBeg > 1 Then On Error Resume Next For d = DurchBeg To MaxAnzDg Sheets(d & ". " & dg).delete Next End If... 'falls erneute Auslosung (ab Durchgang 2), 'die Durchgangstabellenblätter löschen, 'die anschließend per Auslosung 'neu erstellt werden Listing 14 Nach einem bereits gespielten Durchgang soll neu gemischt werden (2) Die Gesamtanzahl der Tische lässt sich dadurch reduzieren, dass die Anzahl der 5er-Tische erhöht wird auf das maximal Mögliche Die Möglichkeit hierzu wurde bereits bei der Erläuterung der Dialogbox für die Startparameter der Auslosung im Kapitel 2.5 Der Kern des Programms: die Auslosung erwähnt. Die Zellen "I9" = Anzahl 4er-Tische und "I10" = Anzahl 5er-Tische (s. Abbildung 17) werden direkt bereits bei der (ereignisgesteuerten) Aufnahme eines Spielers in die Teilnehmerliste (s. Kap. "2.4 Ereignisse in VBE") berechnet. Da es sich um ganzzahlig definierte Zellen handelt, ist die Berechnung auf recht einfache Weise zu bewerkstelligen: Hinweis 16 Im Kapitel "2.4 Ereignisse in VBE" wurden bereits die in Abbildung 17 zu sehenden Zellen "I8", "I9" und "I10" im Tabellenblatt "Auslosung" vorgestellt. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)... Range("I9").Value = Range("I8").Value \ 4 'I8 = Anzahl der Teilnehmer Range("I10").Value = Range("I8").Value Mod 4 'Rest bei Division durch 4 Listing 15 Berechnung der Werte für Zellen "I9" und "I10" 42

43 Somit sind die beiden Zellen "I9" und "I10" mit Inhalt gefüllt, bevor das Hauptprogramm Sub Auslosung startet. Die Sub Auslosung kann nun diese Zellen einlesen und die entsprechenden Variablen mit dessen Inhalt initialisieren, z.b.: Anz_5erTi(d) = Worksheets(1).Cells(10, 9).Value Für den Anwender besteht nun über die bereits in Kapitel 2.5 (siehe auch Abbildung 5, Seite 22) erwähnte Dialog-Box Startparameter Auslosung die Möglichkeit, eine Änderung vorzunehmen und zwar in der Textbox TextBox3. Dies geschieht wir erinnern uns über das Drehfeld SpinButton3. Die Prozedur zum Ändern lautet Private Sub SpinButton3_Change(). Sie enthält die Berechnung der 4erund 5er-Tische: Hinweis 17 Bzgl. TextBox3 und Spin- Button3 vgl. die Ausführungen Seite 26/27 Private Sub SpinButton3_Change()... MaxAnzTi = AnzSp \ 4 If AnzSp Mod 5 = 0 Then MinAnzTi = AnzSp \ 5 Else MinAnzTi = AnzSp \ End If Listing 16 Quellcode zur Änderung der Tischanzahl (s. auch Listing 5) SpinButton3.Min = MinAnzTi SpinButton3.Max = MaxAnzTi TextBox3.Text = SpinButton3.Value ReDim Preserve Anz5erTi(MinAnzTi To MaxAnzTi) ReDim Preserve Anz4erTi(MinAnzTi To MaxAnzTi) For i = MinAnzTi To MaxAnzTi Anz4erTi(i) = 5 * i - AnzSp Anz5erTi(i) = i - Anz4erTi(i) Next i TextBox4.Value = Anz5erTi(SpinButton3.Value) TextBox5.Value = Anz4erTi(SpinButton3.Value) Hier werden zunächst die minimale und maximale Anzahl der Tische festgelegt (berechnet) und in SpinButton3.Min sowie SpinButton3.Max als Extremwerte eingetragen, damit der Anwender diese Grenzen nicht unter-/überschreiten kann. Innerhalb dieses Intervalls werden in einer Mini-Tabelle für jeden einzelnen Wert die Anzahl der 4er- und 5er-Tische berechnet und in den beiden folgenden Textboxen ausgegeben. (3) Zwei Spielzettelversionen Wie aus der Abbildung 13 in " Das Tabellenblatt Liste" zu ersehen ist, werden zusammen mit der Generierung des Tabellenblattes noch zwei Buttons/Makros erzeugt zur Druckausgabe: zum einen die 43

44 Teilnehmerliste mit Tisch- und Platz-Nr und zum zweiten für jeden Tisch ein vorgefertigter Spielzettel, der die Namen der Teilnehmer bereits beinhaltet. Die Besonderheit dieser Spielzettel liegt nun darin, dass der Anwender eine Auswahl treffen kann zwischen zwei Varianten, und zwar zwischen einem recht einfach gehaltenen Spielzettel und dem offiziellen Spielzettel des DDV (Deutscher Doppelkopf Verband). Abbildung 18 UserForm Drucken Eingabemaske für die Auswahl der Spielzettel ("privat/einfach" oder "offiziell nach DDV") Als Gastgeber eines inoffiziellen privaten Turniers empfiehlt sich die einfachere Variante. Möchte man jedoch streng nach den Turnierspiel-Regeln des DDV das Turnier ausrichten, so wählt man den offiziellen DDV-Spielzettel. Damit man sich eine Vorstellung von den Spielzetteln machen kann, werden beide Varianten beispielhaft für einen 5er-Tisch (jeweils für den 1. Durchgang mit vier Runden bzw. als Extrembeispiel mit zehn Runden) auf den Folgeseiten abgebildet. 44

45 45

46 46

Text-Zahlen-Formatieren

Text-Zahlen-Formatieren Text-Zahlen-Formatieren Beobachtung: Bei der Formatierung einer Zahl in eine Textzahl und umgekehrt zeigt Excel ein merkwürdiges Verhalten, welches nachfolgend skizziert werden soll: Wir öffnen eine neue

Mehr

3. GLIEDERUNG. Aufgabe:

3. GLIEDERUNG. Aufgabe: 3. GLIEDERUNG Aufgabe: In der Praxis ist es für einen Ausdruck, der nicht alle Detaildaten enthält, häufig notwendig, Zeilen oder Spalten einer Tabelle auszublenden. Auch eine übersichtlichere Darstellung

Mehr

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Überschrift/Caption. Eigenschaftenfenster

Überschrift/Caption. Eigenschaftenfenster UsserrForrm errssttel llen Dass Codeffensstterr 22000044 NNi iikkoo BBeecckkeerr Öffnen Sie EXCEL und wechseln Sie mit der Tastenkombination Alt + F11 in den Visual Basic-Editor. Alternativ können Sie

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Excel 2010 Kommentare einfügen

Excel 2010 Kommentare einfügen EX.015, Version 1.0 25.02.2014 Kurzanleitung Excel 2010 Kommentare einfügen Beim Arbeiten mit Tabellen sind Kommentare ein nützliches Hilfsmittel, sei es, um anderen Personen Hinweise zu Zellinhalten zu

Mehr

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Excel-Schnittstelle Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Voraussetzung: Microsoft Office Excel ab Version 2000 Zum verwendeten Beispiel:

Mehr

Wir basteln einen Jahreskalender mit MS Excel.

Wir basteln einen Jahreskalender mit MS Excel. Wir basteln einen Jahreskalender mit MS Excel. In meinen Seminaren werde ich hin und wieder nach einem Excel-Jahreskalender gefragt. Im Internet findet man natürlich eine ganze Reihe mehr oder weniger

Mehr

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Um mit IOS2000/DIALOG arbeiten zu können, benötigen Sie einen Webbrowser. Zurzeit unterstützen wir ausschließlich

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

Bedienungsanleitung Einsatzplanung. Bedienungsanleitung Einsatzplanung. Inhalt. Bedienung einer Plan-Tabelle

Bedienungsanleitung Einsatzplanung. Bedienungsanleitung Einsatzplanung. Inhalt. Bedienung einer Plan-Tabelle Bedienungsanleitung Einsatzplanung Dieses Programm ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen, also Typ.xlm, deshalb werden Sie

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

Excel Funktionen durch eigene Funktionen erweitern. Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Handbuch ECDL 2003 Modul 4: Tabellenkalkulation Formatierungen von Zahlen- und Datumswerten

Handbuch ECDL 2003 Modul 4: Tabellenkalkulation Formatierungen von Zahlen- und Datumswerten Handbuch ECDL 2003 Modul 4: Tabellenkalkulation Formatierungen von Zahlen- und Datumswerten Dateiname: ecdl4_05_01_documentation.doc Speicherdatum: 26.11.2004 ECDL 2003 Modul 4 Tabellenkalkulation - Formatierungen

Mehr

Variablen & erweiterte Aktionen nutzen

Variablen & erweiterte Aktionen nutzen 341 In Captivate können Sie mit Hilfe von Variablen Texte & Werte speichern oder Systeminformationen ausgeben. Außerdem können Sie auf Basis von Variablen komplexere Aktionen entwickeln, wie z. B. eine

Mehr

Access 2013. Grundlagen für Anwender. Susanne Weber. 1. Ausgabe, 1. Aktualisierung, Juni 2013

Access 2013. Grundlagen für Anwender. Susanne Weber. 1. Ausgabe, 1. Aktualisierung, Juni 2013 Access 2013 Susanne Weber 1. Ausgabe, 1. Aktualisierung, Juni 2013 Grundlagen für Anwender ACC2013 2 Access 2013 - Grundlagen für Anwender 2 Mit Datenbanken arbeiten In diesem Kapitel erfahren Sie was

Mehr

Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager

Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager Homepage-Manager Navigation Home Der Homepage-Manager bietet die Möglichkeit im Startmenü unter dem Punkt Home einfach und schnell

Mehr

MICROSOFT OFFICE. Inhaltsverzeichnis

MICROSOFT OFFICE. Inhaltsverzeichnis MICROSOFT OFFICE TASTENKOMBINATIONEN Dieses Dokument erklärt Ihnen den Umgang mit der Excel-Datei TASTENKOMBINATIONEN.XLS. Mit dieser Datei können Sie alle möglichen Tastenkombinationen in Word, Excel

Mehr

Inhalt. meliarts. 1. Allgemeine Informationen... 2 2. Administration... 2 2.1 Aufruf... 2 2.2 Das Kontextmenü... 3 3. E-Mail Vorlagen...

Inhalt. meliarts. 1. Allgemeine Informationen... 2 2. Administration... 2 2.1 Aufruf... 2 2.2 Das Kontextmenü... 3 3. E-Mail Vorlagen... Inhalt 1. Allgemeine Informationen... 2 2. Administration... 2 2.1 Aufruf... 2 2.2 Das Kontextmenü... 3 3. E-Mail Vorlagen... 4 Seite 1 von 7 meliarts 1. Allgemeine Informationen meliarts ist eine Implementierung

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Grundlagen Word Eigene Symbolleisten. Eigene Symbolleisten in Word erstellen

Grundlagen Word Eigene Symbolleisten. Eigene Symbolleisten in Word erstellen Eigene Symbolleisten in Word erstellen Diese Anleitung beschreibt, wie man in Word eigene Symbolleisten erstellt und mit Schaltflächen füllt. Im zweiten Teil wird erklärt, wie man mit dem Makrorekorder

Mehr

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem

Mehr

Persönliches Adressbuch

Persönliches Adressbuch Persönliches Adressbuch Persönliches Adressbuch Seite 1 Persönliches Adressbuch Seite 2 Inhaltsverzeichnis 1. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 2. ALLGEMEINE INFORMATIONEN ZUM PERSÖNLICHEN

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

1. So einfach ist der Excel-Bildschirm

1. So einfach ist der Excel-Bildschirm 1. So einfach ist der Excel-Bildschirm So sieht Excel aus, wenn ich es gestartet habe. Leider ist bei vielen Symbolen in der Menüleiste nicht auf den ersten Blick zu erkennen, welche Funktion sie übernehmen.

Mehr

Bauteilattribute als Sachdaten anzeigen

Bauteilattribute als Sachdaten anzeigen Mit den speedikon Attributfiltern können Sie die speedikon Attribute eines Bauteils als MicroStation Sachdaten an die Elemente anhängen Inhalte Was ist ein speedikon Attribut?... 3 Eigene Attribute vergeben...

Mehr

Speichern. Speichern unter

Speichern. Speichern unter Speichern Speichern unter Speichern Auf einem PC wird ständig gespeichert. Von der Festplatte in den Arbeitspeicher und zurück Beim Download Beim Kopieren Beim Aufruf eines Programms Beim Löschen Beim

Mehr

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote Zweck dieser Anleitung ist es einen kleinen Überblick über die Funktion Last Minute auf Swisshotelportal zu erhalten. Für das erstellen

Mehr

1. Einführung. 2. Die Abschlagsdefinition

1. Einführung. 2. Die Abschlagsdefinition 1. Einführung orgamax bietet die Möglichkeit, Abschlagszahlungen (oder auch Akontozahlungen) zu erstellen. Die Erstellung der Abschlagsrechnung beginnt dabei immer im Auftrag, in dem Höhe und Anzahl der

Mehr

VBA- Programmierung. Integrierte Lösungen mit Office 2013. Ricardo Hernández García. 1. Ausgabe, November 2013

VBA- Programmierung. Integrierte Lösungen mit Office 2013. Ricardo Hernández García. 1. Ausgabe, November 2013 VBA- Programmierung Ricardo Hernández García 1. Ausgabe, November 2013 Integrierte Lösungen mit Office 2013 VBA2013 3 VBA-Programmierung - Integrierte Lösungen mit Office 2013 3 Die VBA-Entwicklungsumgebung

Mehr

Microsoft Access 2013 Navigationsformular (Musterlösung)

Microsoft Access 2013 Navigationsformular (Musterlösung) Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft Access 2013 Navigationsformular (Musterlösung) Musterlösung zum Navigationsformular (Access 2013) Seite 1 von 5 Inhaltsverzeichnis Vorbemerkung...

Mehr

Die Dateiablage Der Weg zur Dateiablage

Die Dateiablage Der Weg zur Dateiablage Die Dateiablage In Ihrem Privatbereich haben Sie die Möglichkeit, Dateien verschiedener Formate abzulegen, zu sortieren, zu archivieren und in andere Dateiablagen der Plattform zu kopieren. In den Gruppen

Mehr

Outlook Web App 2010 Kurzanleitung

Outlook Web App 2010 Kurzanleitung Seite 1 von 6 Outlook Web App 2010 Einleitung Der Zugriff über Outlook Web App ist von jedem Computer der weltweit mit dem Internet verbunden ist möglich. Die Benutzeroberfläche ist ähnlich zum Microsoft

Mehr

Newsletter. 1 Erzbistum Köln Newsletter

Newsletter. 1 Erzbistum Köln Newsletter Newsletter 1 Erzbistum Köln Newsletter Inhalt 1. Newsletter verwalten... 3 Schritt 1: Administration... 3 Schritt 2: Newsletter Verwaltung... 3 Schritt 3: Schaltflächen... 3 Schritt 3.1: Abonnenten Verwaltung...

Mehr

2.1 Erstellung einer Gutschrift über den vollen Rechnungsbetrag

2.1 Erstellung einer Gutschrift über den vollen Rechnungsbetrag 1. Einführung Manchmal ist es notwendig, dem Kunden eine Gutschrift zu einer bestimmten Rechnung, über einzelne Positionen oder auch völlig frei von einer Basis-Rechnung zu erstellen. Die verschiedenen

Mehr

Frankieren in Microsoft Word mit dem E Porto Add in der Deutschen Post

Frankieren in Microsoft Word mit dem E Porto Add in der Deutschen Post Frankieren in Microsoft Word mit dem E Porto Add in der Deutschen Post 1. E Porto Word Add in für Microsoft Office 2003, 2007 oder 2010 kostenfrei herunterladen unter www.internetmarke.de/add in/download

Mehr

Dokumentation von Ük Modul 302

Dokumentation von Ük Modul 302 Dokumentation von Ük Modul 302 Von Nicolas Kull Seite 1/ Inhaltsverzeichnis Dokumentation von Ük Modul 302... 1 Inhaltsverzeichnis... 2 Abbildungsverzeichnis... 3 Typographie (Layout)... 4 Schrift... 4

Mehr

Anleitung zur Verwendung der VVW-Word-Vorlagen

Anleitung zur Verwendung der VVW-Word-Vorlagen Anleitung zur Verwendung der VVW-Word-Vorlagen v1.0. Feb-15 1 1 Vorwort Sehr geehrte Autorinnen und Autoren, wir haben für Sie eine Dokumentenvorlage für Microsoft Word entwickelt, um Ihnen die strukturierte

Mehr

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern Dateiname: ecdl_p2_02_03_documentation.doc Speicherdatum: 08.12.2004 ECDL 2003 Professional Modul 2 Tabellenkalkulation

Mehr

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E S TAND N OVEMBE R 2012 HANDBUCH T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E Herausgeber Referat Informationstechnologie in der Landeskirche und im Oberkirchenrat Evangelischer Oberkirchenrat

Mehr

Maturaarbeit: Formatieren mit Word 2010

Maturaarbeit: Formatieren mit Word 2010 Maturaarbeit: Formatieren mit Word 2010 Dieses Dokument zeigt, wie sich in Word 2010 Formatvorlagen, Fussnoten und ein Inhaltsverzeichnis erstellen lassen. Fussnoten Mit Word lassen sich sehr einfach Fussnoten

Mehr

Outlook 2000 Thema - Archivierung

Outlook 2000 Thema - Archivierung interne Schulungsunterlagen Outlook 2000 Thema - Inhaltsverzeichnis 1. Allgemein... 3 2. Grundeinstellungen für die Auto in Outlook... 3 3. Auto für die Postfach-Ordner einstellen... 4 4. Manuelles Archivieren

Mehr

Hilfe zur Urlaubsplanung und Zeiterfassung

Hilfe zur Urlaubsplanung und Zeiterfassung Hilfe zur Urlaubsplanung und Zeiterfassung Urlaubs- und Arbeitsplanung: Mit der Urlaubs- und Arbeitsplanung kann jeder Mitarbeiter in Coffee seine Zeiten eintragen. Die Eintragung kann mit dem Status anfragen,

Mehr

Berechtigungen im Kalender Anleitung für die Rechtevergabe im Outlook Kalender 2010. FHNW, Services, ICT

Berechtigungen im Kalender Anleitung für die Rechtevergabe im Outlook Kalender 2010. FHNW, Services, ICT Berechtigungen im Kalender Anleitung für die Rechtevergabe im Outlook Kalender 2010 FHNW, Services, ICT Windisch, März 2013 Berechtigungen im Kalender 1 1 Gruppen 3 1.1 Die Gruppe/der Benutzer Standard

Mehr

Handbuch zum Excel Formular Editor

Handbuch zum Excel Formular Editor Handbuch zum Excel Formular Editor Mit diesem Programm können Sie die Zellen von ihrer Excel Datei automatisch befüllen lassen. Die Daten können aus der Coffee Datenbank, oder einer weiteren Excel Datendatei

Mehr

Alerts für Microsoft CRM 4.0

Alerts für Microsoft CRM 4.0 Alerts für Microsoft CRM 4.0 Benutzerhandbuch Der Inhalt des Dokuments ist Änderungen vorbehalten. Microsoft und Microsoft CRM sind registrierte Markenzeichen von Microsoft Inc. Alle weiteren erwähnten

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie kann ich E-Mails schreiben? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory E-Mails schreiben können. In myfactory können Sie jederzeit schnell und einfach E-Mails verfassen egal

Mehr

Access und die andern (Office) Programme. Armin Hess

Access und die andern (Office) Programme. Armin Hess Access und die andern (Office) Programme Armin Hess Was wir wollen Excel, Word, Powerpoint und andere Programme von Access aus fernsteuern Grundlagen Excel, Word, Powerpoint und andere Programme präsentieren

Mehr

Einkaufslisten verwalten. Tipps & Tricks

Einkaufslisten verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Grundlegende Informationen 3 1.2 Einkaufslisten erstellen 4 1.3 Artikel zu einer bestehenden Einkaufsliste hinzufügen 9 1.4 Mit einer Einkaufslisten einkaufen 12 1.4.1 Alle

Mehr

Erzherzog Johann Jahr 2009

Erzherzog Johann Jahr 2009 Erzherzog Johann Jahr 2009 Der Erzherzog Johann Tag an der FH JOANNEUM in Kapfenberg Was wird zur Erstellung einer Webseite benötigt? Um eine Webseite zu erstellen, sind die folgenden Dinge nötig: 1. Ein

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Einstellungen in MS-Word - Schnellzugriffsleiste -

Einstellungen in MS-Word - Schnellzugriffsleiste - - Schnellzugriffsleiste - Anpassen der Schnellzugriffsleiste Zusätzlich zum Menüband (Multifunktionsleiste) existiert eine Schnellzugriffsleiste die man sich selbst konfigurieren kann Schaltfläche "Office"

Mehr

Erstellen eines Formulars

Erstellen eines Formulars Seite 1 von 5 Word > Erstellen bestimmter Dokumente > Formen Erstellen von Formularen, die in Word ausgefüllt werden können Basierend auf einer Vorlage können Sie dieser Inhaltssteuerelemente und Hinweistext

Mehr

BERECHNUNGSHILFE FÜR KOSTENNOTE NACH PKV

BERECHNUNGSHILFE FÜR KOSTENNOTE NACH PKV BERECHNUNGSHILFE FÜR KOSTENNOTE NACH PKV B e r e c h n u n g s h i l f e f ü r K o s t e n n o t e n a c h P K V S e i t e 1 Inhalt Installation... 3 Erste Schritte... 3 Wie verwenden Sie die Berechnungshilfe?...

Mehr

Bilder zum Upload verkleinern

Bilder zum Upload verkleinern Seite 1 von 9 Bilder zum Upload verkleinern Teil 1: Maße der Bilder verändern Um Bilder in ihren Abmessungen zu verkleinern benutze ich die Freeware Irfan View. Die Software biete zwar noch einiges mehr

Mehr

Excel-Anwendung Wartungsplan

Excel-Anwendung Wartungsplan Excel-Anwendung Wartungsplan 1. Eigenschaften 2. Installation 3. Makros in Excel 2010 aktivieren 4. Hinweise zur Eingabe der Daten 5. Dateneingabe 6. Suchblatt 7. Autor 1. Eigenschaften (zurück) Wartungsplan

Mehr

Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5

Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5 Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5 In diesem Tutorial will ich Ihnen zeigen, wie man mit LibreOffice Calc 3.5 eine einfache Entlohnungsberechnung erstellt, wobei eine automatische

Mehr

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Ab der Version forma 5.5 handelt es sich bei den Orientierungshilfen der Architekten-/Objektplanerverträge nicht

Mehr

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser Seite 1 von 14 Cookie-Einstellungen verschiedener Browser Cookie-Einstellungen verschiedener Browser, 7. Dezember 2015 Inhaltsverzeichnis 1.Aktivierung von Cookies... 3 2.Cookies... 3 2.1.Wofu r braucht

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Handbuch ECDL 2003 Basic Modul 3: Textverarbeitung Serienbrief erstellen - Datenquelle

Handbuch ECDL 2003 Basic Modul 3: Textverarbeitung Serienbrief erstellen - Datenquelle Handbuch ECDL 2003 Basic Modul 3: Textverarbeitung Serienbrief erstellen - Datenquelle Dateiname: ecdl3_05_01_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 3 Textverarbeitung

Mehr

Excel Auswertungen in XAuftrag / XFibu

Excel Auswertungen in XAuftrag / XFibu 1 Excel Auswertungen in XAuftrag / XFibu Im Folgenden wird kurz beschrieben, wie Anwender die Sicherheitseinstellungen in Excel Auswertungen anpassen können. Sicherheitseinstellungen verhindern, dass Makros

Mehr

BERECHNUNGSHILFE FÜR KOSTENNOTE NACH PKV

BERECHNUNGSHILFE FÜR KOSTENNOTE NACH PKV BERECHNUNGSHILFE FÜR KOSTENNOTE NACH PKV B e r e c h n u n g s h i l f e f ü r K o s t e n n o t e V 2 n a c h P K V S e i t e 1 Inhalt Installation... 3 Erste Schritte... 3 Wie verwenden Sie die Berechnungshilfe?...

Mehr

VBA-Programmierung WS 2008/09

VBA-Programmierung WS 2008/09 VBA-Programmierung Sibylle Schwarz Westsächsische Hochschule Zwickau Dr. Friedrichs-Ring 2a, RII 263 http://wwwstud.fh-zwickau.de/~sibsc/ sibylle.schwarz@fh-zwickau.de WS 2008/09 Organisation der Lehrveranstaltung

Mehr

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis www.wir-lieben-shops.de 1

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis www.wir-lieben-shops.de 1 Beispiel Shop-Eintrag Ladenlokal & Online-Shop. Als Händler haben Sie beim Shop-Verzeichnis wir-lieben-shops.de die Möglichkeit einen oder mehrere Shop- Einträge zu erstellen. Es gibt 3 verschiedene Typen

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

tentoinfinity Apps 1.0 EINFÜHRUNG

tentoinfinity Apps 1.0 EINFÜHRUNG tentoinfinity Apps Una Hilfe Inhalt Copyright 2013-2015 von tentoinfinity Apps. Alle Rechte vorbehalten. Inhalt der online-hilfe wurde zuletzt aktualisiert am August 6, 2015. Zusätzlicher Support Ressourcen

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Anleitung: Sammel-Rechnungen für Lizenzen bei Swiss Basketball

Anleitung: Sammel-Rechnungen für Lizenzen bei Swiss Basketball Anleitung: Sammel-Rechnungen für Lizenzen bei Swiss Basketball Inhalt 1. Login: Wo und Wie kann ich mich einloggen?... 2 Die Webseite: www.basketplan.ch... 2 Mein Klub-Login?... 2 2. Orientierung: Was

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Kapitel 3 Frames Seite 1

Kapitel 3 Frames Seite 1 Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den

Mehr

Anleitung zur Erstellung einer Batchdatei. - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart -

Anleitung zur Erstellung einer Batchdatei. - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart - Anleitung zur Erstellung einer Batchdatei - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart - Mögliche Anwendungen für Batchdateien: - Mit jedem Systemstart vordefinierte Netzlaufwerke

Mehr

Der Kalender im ipad

Der Kalender im ipad Der Kalender im ipad Wir haben im ipad, dem ipod Touch und dem iphone, sowie auf dem PC in der Cloud einen Kalender. Die App ist voreingestellt, man braucht sie nicht laden. So macht es das ipad leicht,

Mehr

xcall White Paper Wählen-Buttons in Excel

xcall White Paper Wählen-Buttons in Excel xcall White Paper Wählen-Buttons in Excel Seite 2 White Paper... 1 Wählen-Buttons in Excel... 1 Wählen-Button in einer Tabelle... 3 Schritt 1: Excel-Datei öffnen... 3 Schritt 2: Button einbauen... 3 Schritt

Mehr

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Postfach aufräumen und archivieren

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Postfach aufräumen und archivieren Handbuch ECDL 2003 Professional Modul 3: Kommunikation Postfach aufräumen und archivieren Dateiname: ecdl_p3_04_03_documentation.doc Speicherdatum: 08.12.2004 ECDL 2003 Professional Modul 3 Kommunikation

Mehr

Was Sie bald kennen und können

Was Sie bald kennen und können Den Rechner verwenden 6 Heutzutage gehört auf jeden Schreibtisch auch ein Taschenrechner denn wer vertraut im Computer-Zeitalter noch seinen eigenen Rechenkünsten? Und da Microsoft mit Windows die Vision

Mehr

Auswertung erstellen: Liste mit E-Mail-

Auswertung erstellen: Liste mit E-Mail- Anleitung Auswertung erstellen: Liste mit E-Mail-Adressen Auswertung erstellen: Liste mit E-Mail- Adressen Das Beispiel Sie möchten für den Versand eines Newletters per E-Mail eine Liste der in mention

Mehr

32.4 Anpassen von Menüs und Symbolleisten 795i

32.4 Anpassen von Menüs und Symbolleisten 795i 32.4 Anpassen von Menüs und Symbolleisten 795i Fortsetzung der Seiten in der 8. Auflage 32.4 Anpassen von Menüs und Symbolleisten 32.4.1 Anpassen von Menüs Die Menüs können um folgende Typen von Optionen

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

EINFACHES HAUSHALT- KASSABUCH

EINFACHES HAUSHALT- KASSABUCH EINFACHES HAUSHALT- KASSABUCH Arbeiten mit Excel Wir erstellen ein einfaches Kassabuch zur Führung einer Haushalts- oder Portokasse Roland Liebing, im November 2012 Eine einfache Haushalt-Buchhaltung (Kassabuch)

Mehr

Faktura. IT.S FAIR Faktura. Handbuch. Dauner Str.12, D-41236 Mönchengladbach, Hotline: 0900/1 296 607 (1,30 /Min)

Faktura. IT.S FAIR Faktura. Handbuch. Dauner Str.12, D-41236 Mönchengladbach, Hotline: 0900/1 296 607 (1,30 /Min) IT.S FAIR Faktura Handbuch Dauner Str.12, D-41236 Mönchengladbach, Hotline: 0900/1 296 607 (1,30 /Min) 1. Inhalt 1. Inhalt... 2 2. Wie lege ich einen Kontakt an?... 3 3. Wie erstelle ich eine Aktion für

Mehr

1. Arbeiten mit dem Touchscreen

1. Arbeiten mit dem Touchscreen 1. Arbeiten mit dem Touchscreen 1.1. Einleitung Als weitere Buchungsart steht bei DirectCASH ein Touchscreen zur Verfügung. Dieser kann zwar normal via Maus bedient werden, vorzugsweise jedoch durch einen

Mehr

Lieber SPAMRobin -Kunde!

Lieber SPAMRobin -Kunde! Lieber SPAMRobin -Kunde! Wir freuen uns, dass Sie sich für SPAMRobin entschieden haben. Mit diesem Leitfaden möchten wir Ihnen die Kontoeinrichtung erleichtern und die Funktionen näher bringen. Bitte führen

Mehr

Noten ausrechnen mit Excel/Tabellenkalkulation. 1) Individuellen Notenschlüssel/Punkteschlüssel erstellen

Noten ausrechnen mit Excel/Tabellenkalkulation. 1) Individuellen Notenschlüssel/Punkteschlüssel erstellen Noten ausrechnen mit Excel/Tabellenkalkulation online unter: www.lehrerfreund.de/in/schule/1s/notenschluessel-excel Dies ist eine Einführung in die Funktionen von Excel, die Sie brauchen, um Noten und

Mehr

Berechnungen in Access Teil I

Berechnungen in Access Teil I in Access Teil I Viele Daten müssen in eine Datenbank nicht eingetragen werden, weil sie sich aus anderen Daten berechnen lassen. Zum Beispiel lässt sich die Mehrwertsteuer oder der Bruttopreis in einer

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Innerhalb der Entwicklungsebene werden Makros in einem sog. zu einer Arbeitsmappe gehörenden Modul gespeichert.

Innerhalb der Entwicklungsebene werden Makros in einem sog. zu einer Arbeitsmappe gehörenden Modul gespeichert. www.dozent-online.de - 10010-VBA-Einfuehrung/Seite 1(8) 10010-MAKROS + VBA-Programmierung Seminarbegleitende Einführung und Beispiele Makros sind in der Programmiersprache VBA (Visual Basic for Applications)

Mehr

PowerPoint 2010 Mit Folienmastern arbeiten

PowerPoint 2010 Mit Folienmastern arbeiten PP.002, Version 1.1 07.04.2015 Kurzanleitung PowerPoint 2010 Mit Folienmastern arbeiten Der Folienmaster ist die Vorlage für sämtliche Folien einer Präsentation. Er bestimmt das Design, die Farben, die

Mehr

Dossier: Rechnungen und Lieferscheine in Word

Dossier: Rechnungen und Lieferscheine in Word www.sekretaerinnen-service.de Dossier: Rechnungen und Lieferscheine in Word Es muss nicht immer Excel sein Wenn Sie eine Vorlage für eine Rechnung oder einen Lieferschein erstellen möchten, brauchen Sie

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

Tipps & Tricks im CRM

Tipps & Tricks im CRM Tipps & Tricks im CRM 1. Mehrere Datensätze gleichzeitig bearbeiten S. 2 2. Änderung der Spaltenreihenfolge S. 3 3. Auto-Vervollständigung S. 3 4. Katalogwert wählen, ohne Katalog zu öffnen S. 4 5. Tastenkombination

Mehr

Installationsanleitung CLX.PayMaker Office

Installationsanleitung CLX.PayMaker Office Installationsanleitung CLX.PayMaker Office Inhaltsverzeichnis 1. Installation und Datenübernahme... 2 2. Erste Schritte Verbindung zur Bank einrichten und Kontoinformationen beziehen... 4 3. Einrichtung

Mehr

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de GEVITAS-Sync Bedienungsanleitung Stand: 26.05.2011 Copyright 2011 by GEVITAS GmbH www.gevitas.de Inhalt 1. Einleitung... 3 1.1. Installation... 3 1.2. Zugriffsrechte... 3 1.3. Starten... 4 1.4. Die Menü-Leiste...

Mehr

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep 1. Erstellen Sie ein neues Rechnungsformular Mit book n keep können Sie nun Ihre eigenen

Mehr

Kontakte Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering.

Kontakte Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering. Kontakte Kontakte Seite 1 Kontakte Seite 2 Inhaltsverzeichnis 1. ALLGEMEINE INFORMATIONEN ZU DEN KONTAKTEN 4 2. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 3. STAMMDATEN FÜR DIE KONTAKTE 4 4. ARBEITEN

Mehr