Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Basiswissen für die Arbeit mit Excel 2007
3 Aufbau von Kalkulationstabellen
4 Entwicklung von Berechnungen mit Formeln
5 Gestaltung von Tabellenblättern
6 Auswertungen und Was-wäre-wenn-Analysen
7 Optimierungen
8 Grafische Präsentation von Daten
9 Diagramme optimal einsetzen
10 Tabellen grafisch aufbereiten
11 Verteilungsvorbereitung
12 Ausdruck und E-Mail-Versand
13 Excel-Daten im Web
14 Gemeinsame Arbeit an Arbeitsmappen
15 Tabellenfunktionen
16 Informationen als Tabellen ordnen und verwalten
17 Datenabfragen und Datenauszüge
18 Pivot–Tabellen und -Diagramme
19 Arbeit mit externen Daten
20 Datenaustausch zwischen Anwendungen
21 Datenaustausch mit anderen Anwendungen
22 Routineaufgaben mit Makros automatisieren
23 Visual Basic für Applikationen
A Tastenkombinationen
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Excel 2007 - Das umfassende Handbuch von Helmut Vonhoegen
Buch: Excel 2007 - Das umfassende Handbuch

Excel 2007 - Das umfassende Handbuch

1012 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-864-4
gp 23 Visual Basic für Applikationen
  gp 23.1 Grundlagen von VBA
    gp 23.1.1 Das Objektmodell von Excel
    gp 23.1.2 Variablen und Konstanten in VBA
    gp 23.1.3 Grundeinheiten und Sprachelemente
  gp 23.2 Die Entwicklungsumgebung
    gp 23.2.1 Projekt-Explorer und Modulfenster
    gp 23.2.2 Editierhilfen
    gp 23.2.3 Programme testen
    gp 23.2.4 Ausdruck von Code und Formularen
  gp 23.3 Ein- und Ausgabe
    gp 23.3.1 Einfacher Eingabedialog
    gp 23.3.2 Meldungsdialoge
    gp 23.3.3 Bereiche in Tabellen auswählen
    gp 23.3.4 Schreiben in Tabellen
    gp 23.3.5 Daten aus Tabellen auslesen
  gp 23.4 Entwurf von Formularen
    gp 23.4.1 Entwicklung eines Eingabeformulars
    gp 23.4.2 Eingabeelemente einbauen
    gp 23.4.3 Einbau von Schaltflächen
    gp 23.4.4 Eingabe der Prozeduren
    gp 23.4.5 Erweiterbare Werkzeugsammlung
  gp 23.5 Eigene Funktionen in VBA
    gp 23.5.1 Per Funktion von DM zu Euro und zurück
    gp 23.5.2 Sicherheit für Makros
  gp 23.6 Musterprozeduren für Standardaufgaben
    gp 23.6.1 Prozedur zum Neuformatieren
    gp 23.6.2 Beispiele für Plausibilitätsprüfungen
    gp 23.6.3 Daten aus einem Formular in eine neue Zeile einer Tabelle übernehmen
    gp 23.6.4 Lesen von Daten aus einer Textdatei
    gp 23.6.5 Einen Bereich neu definieren
    gp 23.6.6 Einen Wert in einer Spalte finden und ersetzen
    gp 23.6.7 In einer Liste von Arbeitsmappen Werte einfügen


Rheinwerk Computing

23.3 Ein- und Ausgabe  downtop

Ein zentraler Bereich der Programmierung ist die Gestaltung der Interaktion zwischen einem Programm und denen, die es benutzen. Diese Interaktion findet auf zwei Ebenen statt. Zum einen gibt es den direkten Dialog Programm – Benutzer, bei dem der Benutzer Werte eingibt oder Ereignisse (z. B. Mausklicks) verursacht, auf die das Programm reagiert. Zum anderen kann das Programm dazu veranlasst werden, aus Tabellen zu lesen und in Tabellen zu schreiben.


Rheinwerk Computing

23.3.1 Einfacher Eingabedialog  downtop

Die einfachste Form, in einem Programm Benutzereingaben vorzunehmen, ist das Eingabedialogfeld. Hier handelt es sich um ein Standarddialogfeld, das von VBA mit der Funktion InputBox aufgerufen werden kann. Das ausgabeseitige Äquivalent zum Eingabedialog ist der Meldungsdialog. Dafür wird die Funktion MsgBox genutzt.

Für Programme, die nur wenig Eingabe erfordern, ist das Eingabedialogfeld sehr praktisch; bei komplexeren Eingaben sollten dagegen die weiter unten besprochenen Formulare verwendet werden. Das Dialogfeld ist schon mit den Schaltflächen OK und Abbrechen ausgestattet. Wird OK angeklickt, liefert das Dialogfeld die Eingabe als Ergebnis an eine Variable.

In der einfachsten Version kommt die Funktion InputBox mit einem einzigen Argument aus, etwa

InputBox("Betrag")

Durch zusätzliche Argumente kann die Gestaltung des Dialogfeldes modifiziert werden: eine Eingabeaufforderung, ein eigener Fenstertitel, eine Vorgabe, die verwendet wird, wenn nichts eingetragen wird.

Beispiel für ein gestaltetes Eingabefenster ...

... und sein Aufruf

Das Wesentliche am Eingabefenster ist natürlich die Übernahme des eingegebenen Wertes in eine Variable. Dass als Eingabe nur Text akzeptiert wird, ist zwar etwas unglücklich, stellt aber keine unüberwindbare Hürde dar: Mit den Umwandlungsfunktionen von VBA lässt sich die Eingabe in den entsprechenden Datentyp konvertieren. CInt verwandelt z. B. die Zeichenkette in eine ganze Zahl.

Konvertierung von Datentypen bei der Eingabe

Soll der Datentyp dagegen schon bei der Eingabe kontrolliert werden, kann statt der InputBox-Funktion die InputBox-Methode verwendet werden; das Objekt dabei ist Excel selbst als Application. Neben den Argumenten, die auch bei der InputBox-Funktion möglich sind, können hier noch weitere Festlegungen getroffen werden, insbesondere der Ort (die linke obere Ecke), an dem das Fenster erscheinen soll.


Beim Rückübersetzen Maßeinheit beachten

Beachten Sie, dass die Position des Dialogfeldes seit der Version 97 in der Einheit Twips festgelegt wird und nicht mehr in Punktwerten. Twips sind ein 24stel Punkt. Wenn Sie beispielsweise für die x/y-Koordinaten Werte in der Größenordnung 2000, 2000 verwenden und eine solche Arbeitsmappe in das Format von Excel 95 zurückübersetzen, stürzt Excel 95 beim Ausführen des Makros ab, weil versucht wird, eine Bildschirmposition zu erreichen, die nicht möglich ist. Excel 95 versteht nämlich den Wert 2000 als Punktangabe.


Auch der Bezug auf eine Hilfedatei lässt sich einbauen. Insbesondere aber kann ein bestimmter Datentyp für die Eingabe festgelegt werden. Zum Beispiel verlangt Type:= 1 eine Zahl, 2 einen Text und 8 einen Zellbezug. Sie können auch Kombinationen verwenden.

Zahlodertext = Application.InputBox(Prompt:= "Geben Sie Zahlen _ 
oder Text ein:",Type:=3)

Type:= 3, Summe aus 1 + 2 erlaubt also in diesem Fall die Eingabe von Zahlen oder Texten.


Rheinwerk Computing

23.3.2 Meldungsdialoge  downtop

Das Gegenstück zum Eingabedialog ist, wie schon erwähnt, der Meldungsdialog. Den Text, der ausgegeben werden soll, können Sie entweder direkt als Zeichenfolge in Anführungszeichen angeben oder als Variable.

Meldungstext als Zeichenfolge oder Variable

Nur auf den ersten Blick ist das Meldungsfenster ein reines Ausgabemedium. Durch zusätzliche Argumente lässt es sich so gestalten, dass die Reaktion des Benutzers im weiteren Verlauf des Programms berücksichtigt werden kann, wobei sich die Benutzerreaktion allerdings auf das Anklicken von Schaltflächen beschränkt. Um auszuwählen, mit welchen Schaltflächen das Meldungsfenster zu versehen ist, wird gleich nach dem Meldungstext als Argument eine Kennziffer eingefügt: 0 (OK); 1 (OK und Abbrechen); 2 (Abbrechen, Wiederholen und Ignorieren); 3 (Ja, Nein und Abbrechen); 4 (Ja und Nein); 5 (Wiederholen und Abbrechen).

Zu den Ziffern für die Schaltflächen können noch Kennziffern für eingeblendete Symbole addiert werden: 16 (Stopp); 32 (?); 48 (!); 64 (i für Info). Die Kennziffer 68 etwa liefert ein Meldungsfenster mit einem Info-Symbol und den Schaltflächen Ja und Nein.

Abhängig davon, welche Schaltfläche der Benutzer anklickt, wird ein Wert zurückgegeben, der in eine Variable übernommen werden kann. Abhängig von diesem Wert kann der weitere Programmablauf gesteuert werden. Als Rückgabewerte kommen in Frage: 1 (OK); 2 (Abbrechen); 3 (Abbruch); 4 (Wiederholen); 5 (Ignorieren); 6 (Ja); 7 (Nein). Wie schon für die Methoden beschrieben, gibt es auch bei den Funktionen zwei Schreibweisen:

meldung = MsgBox(ausdruck) 
MsgBox ausdruck

Soll eine einfache Meldung ausgegeben werden, genügt die zweite Schreibweise. Soll aber das Ergebnis des Meldungsdialogs (welche Schaltfläche wurde angeklickt) in eine Variable übernommen werden, muss die erste Form verwendet werden.

Kleines Testprogramm für Schaltflächen in Meldungen

Mit einem kleinen Programm lassen sich diese Zusammenhänge einfach testen: Im ersten Dialog wird zunächst die Kennziffer für die Art des Meldungsdialogs eingegeben. Das Programm zeigt in einem zweiten Meldungsfenster den Code derjenigen Schaltfläche an, die im ersten Meldungsdialog angeklickt wurde.


Rheinwerk Computing

23.3.3 Bereiche in Tabellen auswählen  downtop

Bei der Arbeit mit VBA innerhalb von Excel ist natürlich der zentrale Punkt der Programmierung die Arbeit mit Tabellen: das Auswählen von Zellen oder Bereichen, das Lesen von Daten aus diesen Bereichen und das Schreiben von Daten in diese Bereiche. Ein Programm in VBA kann vieles eleganter lösen, als es bei der manuellen Arbeit in der Tabelle möglich ist: Zum Beispiel kann es in einer Tabelle lesen, ohne dass der zu lesende Teil auf dem Bildschirm sichtbar wird, und es kann in Zellen schreiben, ohne diese vorher auszuwählen.

Wenn eine Prozedur, in der Zellen oder Bereiche ausgewählt werden sollen, direkt von einer Tabelle aus gestartet wird, lässt sich die Methode Select direkt anwenden, ohne dass das Objekt (die Tabelle) weiter spezifiziert wird:

Auswahl von Zellen der aktiven Tabelle

Mit der Eigenschaft Formula wird in die aktivierte Zelle jeweils eine Formel eingetragen, wobei bei der Auswahl eines ganzen Bereichs die linke obere Zelle die aktive Zelle ist.

Ist die Tabelle, in der ein Bereich ausgewählt (oder gelesen oder beschrieben) werden soll, gerade nicht aktiv, muss zunächst das Tabellenblatt ausgewählt werden, bevor der Bereich bestimmt werden kann. Diese Methode empfiehlt sich auch dann, wenn vom Programmablauf her nicht eindeutig sichergestellt ist, dass das richtige Tabellenblatt zum richtigen Zeitpunkt aktiv ist.

Auswahl Tabellenblatt und Bereich

In diesem Beispiel wird den Zellen keine Formel zugewiesen, sondern ein Wert. Dies geschieht mit Hilfe der Value-Eigenschaft. In der kleinen Prozedur wird außerdem noch eine andere Methode der Auswahl vorgeführt: Die Cells-Methode bezieht sich direkt auf Zellen und gestattet die Auswahl nach Zeilen und Spalten. Diese Möglichkeit ist der Auswahl nach Zelladressen in vielen Fällen vorzuziehen, da sie es gestattet, von den leicht abzufragenden Zeilen- und Spaltennummern einer Zelle auszugehen und dann die Adressen weiterer Zellen im Programm zu berechnen.


Rheinwerk Computing

Zellauswahl mit Hilfe von Variablen  downtop

Im ersten Beispiel in der folgenden Abbildung wird zunächst in die aktive Zelle start geschrieben. Dann werden Zeilen- und Spaltennummern der aktiven Zelle abgefragt und aus diesen Werten neue Zeilen- und Spaltennummern errechnet, die für die nächste Auswahl verwendet werden können.

Auswahl nach Zeilen und Spalten

Das zweite Beispiel zeigt, dass diese Adressierungsart auch für die Auswahl von Bereichen geeignet ist, die sich über mehrere Zellen erstrecken. So lassen sich bequem Bezüge herstellen, bei denen Zeilen- und Spaltennummern anderweitig ermittelt wurden. Diese Methode muss aber nicht als Ersatz für die Auswahl von Zellen oder Bereichen relativ zur aktiven Zelle benutzt werden. Hierfür gibt es in VBA eigene Möglichkeiten mit Hilfe der Offset-Eigenschaft:

Relative Bereichswahl

Im ersten Beispiel (auswahl4) wird die Auswahl um eine angebbare Zahl von Zeilen und Spalten versetzt, und von da aus ein Bereich ausgewählt. Die Bereichsbezeichnung »A1:A5« ist etwas verwirrend, da im Beispiel ja der Bereich »D2:D6« ausgewählt wird. Tatsächlich wird die nach dem Versetzen des Bereichs aktive Zelle als Ausgangspunkt genommen und vom Programm so behandelt, als wäre sie die Zelle »A1«. Nur in diesem Sinne kann vom Bereich »A1:A5« die Rede sein. Durchschaubarer ist die Reihenfolge im zweiten Beispiel (auswahl5).


Rheinwerk Computing

Ermitteln von Zellverweisen  downtop

Oben wurde schon darauf hingewiesen, dass die Zeilennummern und Spaltenbezeichnungen einer aktiven Zelle ermittelt werden können, um für die Verarbeitung im Programm zur Verfügung zu stehen. Z.  B. mit

zeile = Selection.Row 
spalte = Selection.Column

Ähnliches gilt auch für ausgewählte Bereiche. Auf diese Weise lassen sich Verweise ermitteln, die ihrerseits wieder in allen Befehlen, für die »A1«- Verweise verwendet werden, zum Einsatz kommen können.


Rheinwerk Computing

23.3.4 Schreiben in Tabellen  downtop

Im Unterschied zur manuellen Arbeit ist es in einem Programm nicht zwingend, eine Zelle, in die etwas geschrieben werden soll, vorher zur aktiven Zelle zu machen. VBA gestattet es, sowohl mit absoluten als auch mit relativen Bezügen direkt in Zellen zu schreiben.

Schreiben absolut und relativ

Zum Vergleich ist im ersten Beispiel noch einmal die Methode wiederholt worden, zunächst eine Zelle auszuwählen und dann in die aktive Zelle zu schreiben. Die beiden anschließenden Schreibvorgänge geschehen direkt, also ohne dass die Zellen vorher ausgewählt würden. Während das erste Beispiel feste Adressen für die Zellen verwendet, arbeitet das zweite Beispiel mit relativen Bezügen. Zunächst wird in die aktive Zelle geschrieben, dann wird relativ zu dieser Zelle (im Beispiel eine Zeile tiefer, 0 Spalten nach rechts) der nächste Eintrag vorgenommen.

Oben wurde schon die bequeme Methode der Zellauswahl über die Zeilen- und Spaltennummer beschrieben. Diese Methode lässt sich auch beim Schreiben in Zellen verwenden:

Schreiben in mehrere Zellen

In diesem Beispiel werden zwei ineinander verschachtelte For-Next-Schleifen dazu benutzt, die Zeilen- und Spaltennummern bestimmte Werte durchlaufen zu lassen und in die jeweiligen Zellen diese Nummern einzutragen.


Rheinwerk Computing

Eintragen von Formeln  downtop

Wenn es darum geht, Formeln in Zellen einzutragen, können Sie statt der Eigenschaft Formula auch die Eigenschaft FormulaR1C1 verwenden. Der Unterschied soll hier an einem kleinen Beispiel demonstriert werden.

Schreiben von Formeln in ein Tabellenblatt

In der ersten Zeile kann die Formel für die Zelle in der so genannten R1C1-Schreibweise eingegeben werden, in der zweiten Zeile muss die »A1«-Schreibweise verwendet werden. In beiden Fällen wird im Tabellenblatt die korrekte Formel für das Produkt der beiden vorangehenden Spalten (B und C) in die Spalte D eingetragen. Die R1C1-Schreibweise mag dabei zunächst etwas ungewohnt erscheinen, hat aber den großen Vorteil, dass sich relative Bezüge hier sehr einfach und klar gestalten lassen. Hier bedeutet beispielsweise:


R1C1 die Zelle A1 (1. Zeile, 1.Spalte)
RC(1) eine Spalte weiter
RC(-1) eine Spalte vorher
R(1)C(1) eine Zeile tiefer, eine Spalte rechts


Rheinwerk Computing

23.3.5 Daten aus Tabellen auslesen  toptop

Auch das Lesen von Zellinhalten aus einem Tabellenblatt in eine Variable bedient sich ganz ähnlicher Verweisformen wie das Auswählen und Schreiben. In allen folgenden Beispielen werden Zellinhalte in eine Variable zellentext übernommen und stehen dann dem Programm zur Verfügung. In den Beispielen werden die übernommenen Inhalte lediglich in eine weitere Zelle geschrieben.

Lesen von Zellinhalten

Bei diesen Beispielen werden immer die Werte der Zellen übernommen, unabhängig davon, wie sie im Tabellenblatt zustande gekommen sind. Anders verhält es sich, wenn Sie nicht die Werte, sondern die Formeln übernehmen wollen, die in Zellen eingetragen sind.

Lesen von Inhalten und Formeln

Im obigen Beispiel werden der Zelleninhalt und die Formeln gelesen, letztere in beiden Schreibweisen, und nacheinander in Meldungsfenstern ausgegeben. Beim Lesen des Inhalts in der ersten Zeile ist diesmal nicht die Eigenschaft Value, sondern die Eigenschaft Text verwendet worden. Das ist auch dann möglich, wenn in der Zelle ein numerischer Wert steht.

Dass VBA natürlich Zahlen auch direkt als Zahlen lesen kann, zeigt Ihnen das letzte Beispiel: Hier erfolgt eine Fehlermeldung, wenn in der angesprochenen Zelle keine Ganzzahl oder eine Formel, die eine Ganzzahl ergibt, steht.

Die Flexibilität, mit der VBA die Datentypen handhabt, lässt sich an einem kleinen Beispiel demonstrieren, bei dem die Eigenschaften Value, Text und Formula in Variablen gelesen (aus den Zellen A1 bis A4) und dann über diese Variable die Eigenschaften für die Zellen B1 bis B4 festgelegt werden. Die Texteigenschaft kann hierbei nur zum Lesen verwendet werden. Wird der mit der Texteigenschaft ermittelte Wert wieder in eine Zelle übertragen, ist der Zellinhalt eine Zeichenfolge, d.  h., eine Zahl wird in eine Zeichenfolge umgewandelt.

Lesen und Setzen von Eigenschaften



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 <<   zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Excel 2007 - Das umfassende Handbuch
Excel 2007 -
Das umfassende
Handbuch

Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: VBA mit Excel






 VBA mit Excel


Zum Rheinwerk-Shop: Einstieg in VBA mit Excel






 Einstieg in VBA
 mit Excel


Zum Rheinwerk-Shop: Excel 2010 im Controlling






 Excel 2010
 im Controlling


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Visual C# 2012






 Visual C# 2012


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern