Willkommen

Pivottabelle

Spezialfilter

Formeln

Zellformate

Bedingte Formate

Gültigkeit

Programmierung

UDF - Funktionen

Tipps & Tricks

Webabfrage

Fehlersuche

Farbindex

Shortcuts

Limitationen

Downloads

Links

Kontakt

Disclaimer

Impressum

Select - oder die Reise des Cursors
Vermutlich machen die meisten Anwender, wie ich selber auch, ihre ersten Programmiererfahrungen mit dem Makrorekorder.
 
Da der Makrorekorder nicht weiß was wir machen wollen, zeichnet er jeden Tastaturanschlag sowie jeden Mausklick auf, ob sinnvoll oder nicht. Und da wir gezwungen sind, während der Aufzeichnungsphase unseren Cursor von einem Tabellenblatt in ein anderes zu führen, und dort eine Zelle anzuklicken um mit dieser etwas zu machen, findet man im aufgezeichneten Code etliche "Activate" und "Select", die zum einen völlig überflüssig sind und zum anderen viel an Performance nehmen.
 
Folgendes Szenario:
 
Es ist Samstagabend und wir haben vom Sofa aus einen spannenden Krimi im Fernsehen verfolgt. Nun ist der Film zu Ende und wir wollen ein bisschen durch die anderen Programme zappen.
 
Das könnte wir folgt aussehen.
 
1.        Vom Sofa aufstehen und zum Fernsehgerät gehen
2.        Dort das Bedienfeld mit den Programmknöpfen auswählen
3.        Ein anderes Programm, z.B. das 2te einschalten
4.        Zurück zum Sofa gehen
5.        Und dort wieder in die bevorzugte Ecke, beispielsweise links setzen.
 
 
Eine ermüdende Tätigkeit um durch die nächsten 20 Programme zu steppen.
 
Auf VBA und eine Exceldatei bezogen:
Es gibt Tabellenblatt1 umbenannt nach -> Sofa
Es gibt Tabellenblatt2 umbenannt nach -> Fernseher
Wir ( Der Cursor ) befinden uns auf dem Sofa Zelle A1 und wollen zum Fernseher, dort ebenfalls nach A1 um beispielsweise "ZDF" in die Zelle zu schreiben. Dies simuliert das Umschalten. Anschließend zurück zum Ausgangspunkt, unser Sofa.
 
Wir starten den Rekorder und zeichnen die einzelnen Schritte auf:
 
Sub Zappen1()
'
' Zappen1 Makro
' Makro am 21.11.2009 von Jürgen_H aufgezeichnet
'
 
'
    Sheets("Fernseher").Select                 'Zum Fernseher gehen
    Range("A1").Select                                'Das Bedienfeld mit den Programmknöpfen auswählen
    ActiveCell.FormulaR1C1 = "ZDF"         'Den gewünschten Sender einschalten
    Sheets("Sofa").Select                            'Zurück zum Sofa gehen
    Range("A1").Select                                'Auf  das Sofa setzen
End Sub
 
 
Hier bewegt sich nun der Cursor analog zu unserem Weg vom Sofa durchs Wohnzimmer zum TV und zurück.
 
Glücklicherweise gibt es aber Fernbedienungen.
Da bleiben wir ( Der Cursor ) doch einfach auf dem Sofa sitzen und schalten bequem von dort den Fernseher um.
 
Public Sub Zappen_mit_Fernbedienung()
Worksheets("Fernseher").Range("A1").Value = "RTL"
End Sub
 
Und wie im wahren Leben ist das Zappen mit der Fernbedienung nicht nur bequemer sondern auch wesentlich schneller.
 
Genau wie unser Fernseher ein Objekt* mit
Eigenschaften*: , z.B. 46" Größe, Farbe schwarz, Klavierlackoptik, LCD-Technik und
Methoden*: die Fähigkeit verschiedene Programme anzuzeigen, auf Videotext umzuschalten, andere Signalquellen auszuwählen etc ist, so sind auch die Tabellenblätter, Zeilen, Spalten und Zellen Objekte, die man direkt ansprechen und manipulieren kann. Der Cursor bewegt sich dabei nicht.
 
Egal von welchem Tabellenblatt dieser Code gestartet wird, gibt er dem Bereich A1 bis C2 auf Tabelle3 die Eigenschaft: Hintergrundfarbe rot.
Der Cursor bewegt sich dabei kein Stück.
 
Public Sub Hintergrundfarbe()
Worksheets("Tabelle3").Range("A1:C2").Interior.ColorIndex = 3
End Sub
 
 
* Noch ein paar Sätze zum Thema Eigenschaften und Methoden von Objekten
Ein Objekt besitzt zum Teil Eigenschaften, welche nicht geändert werden können. So läßt sich am Beispiel des Fernsehers, die Größe nicht auf 50" ändern, die Technik nicht von LCD in Plasma wandeln, und die Farbe ist schwarz ( es sei denn man kauft einen Pott grüne Farbe und streicht ihn an ).
So besitzt auch das Objekt "Tabellenblatt" Eigenschaften, welche sich nicht ändern lassen. Z.B hat es 256 Spalten und 65536 Zeilen. Man kann sie ausblenden aber nicht löschen.
Aber unser Fernseher hat eine Methode ( eine Fähigkeit ), die sich An-Aus-Schalter nennt. Schalten wir ihn ein, so ist die Eigenschaft "aktiv". Hier wurde nun eine Eigenschaft verändert. Von Aus auf An.
Unser Tabellenblatt kann ebenfalls durch Klick auf den Reiter oder in´s Blatt selber aktiviert werden.
 
Unser Fernseher besitzt eine Eigenschaft die sich Bildschirm nennt ( Alle Fernseher besitzen die Eigenschaft einen Bildschirm zu haben ). Der Bildschirm ist wiederrum ein Objekt mit Eigenschaften und Methoden.
Unser Tabellenblatt besitzt eine Eigenschaft die sich Cells ( Zellen ) nennt. Eine Zelle ist wiederum ein Objekt mit Eigenschaften und Methoden.
 
Wir können die Farbeeinstellungen am Bildschirm des Fernsehers verändern.
Wie können die Hintergrundfarbe einer Zelle ändern.
Wir können das Programm und damit den angezeigten Bildschirminhalt ändern
Wie können eine Formel oder einen Wert in der Zelle, und damit den Zellinhalt ändern.
 
Durch das richtige Ansprechen der Objekte können die Eigenschaften direkt geändert werden, ohne das der Cursor dafür auf die Reise quer durch die Arbeitsmappe geschickt wird.
 
Eine Übersicht über die Eigenschaften und Methoden der verschiedenen Objekte findet man im Objektkatalog.
Im Fenster der VBA-Entwicklungsumgebung: Ansicht - Objektkatalog ( alternativ F2 )