Excel 2013 VBA Grundkurs

Selection und ActiveCell

Testen Sie unsere 1985 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mit den Objekten ActiveCell und Selection erfahren Sie, welchen Bereich der Benutzer markiert hat und eventuell durch Ihr Makro verändert haben möchte.

Transkript

Obwohl die beiden Objekte Selection und ActiveCell scheinbar so wichtig sind, sind sie es eigentlich gar nicht. Die entstehen ganz oft, wenn Sie mal groß aufzeichnen lassen und dort, das werden Sie später noch sehen, meistens unbrauchbar, fehlerhaft oder wenigstens schlecht. Eigentlich braucht Ihr Programm normalerweise kein ActiveCell oder Selection. Es sei denn, Sie wollen ausdrücklich wissen, was der Benutzer oder die Benutzerin gerade aktiviert hat. Aber ungeachtet dessen müssen wir uns natürlich darum kümmern, was man damit machen kann. Also, gucken wir mal einfach was sich da rausholen lässt. Fangen wir an, damit erstmal rauszukriegen, welche Zelle markiert ist. Also, Sub ZeigeMarkierteZelle. Und da kann ich direkt mit Debug.Print die Zelladresse ausdrucken lassen. Also, ich frage mal ActiveCell nach Address. Achten Sie darauf: Address mit Doppel-D, die amerikanische Schreibweise. Und ich wechsle direkt auf AddressLocal. Das ist für die A1-Schreibweise egal, aber wenn Sie mal die Z1, S1-Schreibweise haben wollen, also im Spalten oben eine 1 steht, statt A, dann werden Sie einen erheblichen Unterschied feststellen. Die heißt nämlich im Deutschen Z1, S1 (Zeile 1, Spalte 1). Im Englischen heißt sie R1, C1 (Row 1, Column 1). Und wenn Sie die versuchen dann zu übersetzen, weil Sie eigentlich ahnen, dass es jetzt plötzlich in Amerikanisch geliefert wird, dann verhärdert sich Ihr Code. Also, im Zweifelsfall, wenn Sie erwarten, dass das so aussehe wie ein Deutscher das haben möchte, dann sollten Sie auf AddressLocal wechseln. Das ist hier wurscht, aber ich habe es mir direkt angewöhnt. Wichtiger, um das zu finden, ist Address mit Doppel-D. Ja, dann gucken wir doch einmal schnell nach, wo denn die Zelle steht. Im Blatt "Beispiel" in F9, das sieht man ja hier oben auch. Also, mit Alt + F11 zurück, sicherheitshalber nochmal speichern. Und dann gucken wir mal, F5 - tatsächlich "$F$9". Das Blatt wird nicht mitgeliefert, es ist automatisch ActiveWorksheet, in ActiveCell ist es nämlich schon enthalten. Also, wenn Sie wissen wollten, wo sich denn die Zelle befindet. Das würden Sie normalerweise nämlich in einem Range-Objekt speichern. Wenn Sie also die Adresse sehen wollen, das ist zu Prüfzwecken immer sehr häufig, dann mit AddressLocal. Das geht auch für eine größere markierte Auswahl. Also, können wir direkt kopieren. Nämlich ZeigeMarkierteAuswahl. Und statt ActiveCell heißt es hier Selection und sonst ändert sich nichts. Wenn ich es jetzt so aufrufe, kann ich direkt machen mit F5, eine Zelle ist die Selection auch nur das Gleiche wie ActiveCell. Wenn ich allerdings mit Alt + F11 jetzt einen größeren Bereich markiere, dann wird es entsprechend wieder angezeigt. Also, ich nehme da unten die Reste mal weg. Jetzt ist mit F5 der ausgewählte Bereich: "$E$6" bis "$K$19". Und zu diesem ausgewählten Bereich lässt sich natürlich noch viel mehr ermitteln. Allerdings ist dieses Selection-Objekt wieder so ein Wischiwaschi-Objekt, kann man nicht anders sagen. Das kann nicht so richtig genau von sich selbst sagen, was es eigentlich darf und kann. Deswegen werde ich das umspeichern in ein ordentliches Objekt. Also, das können wir mal kopieren und als Besser betiteln. Es braucht eine neue Variable, das ist eine Range-Variable für die Auswahl. Denn Range ist ja der Datentyp für Zellen. Also, für einzelne Zellen, ActiveCell genauso wie für ganze Zellen-Bereiche, Selection und ähnliche. Wann immer Sie mit Zellen zu tun haben - Range. Und deswegen kann ich jetzt hier einmal umspeichern, Set rngAuswahl ist gleich Selection. Und beziehe mich hier dann natürlich direkt auf rngAuswahl. Ich zeige Ihnen nochmal direkt warum rngAuswahl. Weiß nämlich, vernünftigerweise, was es alles kann, und AddressLocal ist dabei. Zudem kann ich jetzt auch mal abfragen, das könnte man jetzt hier rechnen. Wir können ja mal eben zählen, wie viel Spalten und Zeilen das sind: 2, 4, 6, 7 Spalten. Und 2, 4, 6, 8, 10, 12, 14 Zeilen. Das kann man natürlich auch direkt nachfragen. Also, mit Debug.Print frage ich die rngAuswahl doch mal, wie viel Zeilen sie hat. Zeilen heißt im Englischen Row. Allerdings müssen Sie aufpassen: Row ist dieser Singular. Der würde tatsächlich die Zeile mit ihrer Adresse nennen, abgesehen davon, dass es mehrere sind. Aber Sie können mit Row die eine Zeile herauskriegen. Aber Sie kriegen keine Auflistung, ein Auflistungsobjekt aller Zeilen. Das brauchen Sie. Und zwar nicht wirklich aller Zeilen, sondern natürlich nur der Rows von dieser Auswahl. Und die hat dann tatsächlich, wie es sich für ein Auflistungsobjekt gehört, eine Count, eine Anzahl. Das sollten wir vielleicht noch erwähnen, was da gezählt wird, nämlich die Rows, die Zeilen. Und dasselbe funktioniert auch für rngAuswahl, die Spalten, die heißen auf Englisch Columns. Haben das gleiche Problem, nicht Column, der Singular ist gewünscht, sondern Columns, die Auflistung und deren Count-Eingabe. Und auch hier noch einen schönen Text hinterher, also "Zeilen und Spalten". Das Ganze speichern, unten aufräumen. Und dann lassen wir uns doch mal vorführen mit F5, was da denn markiert ist. Wie Sie sehen "14 Zeilen, 7 Spalten". Sie können zusätzlich noch sowas abfragen, wie, sagen wir: die linke obere Ecke. Oder ein bestimmtes Element davon. Meistens brauchen Sie konkret links oben oder rechts unten oder sowas. Die anderen kriegt man anders. Also, mit rngAuswahl.Cells, auch ein Range, hat eine Cells-Auflistung, nicht nur das ganze Blatt. Und davon nehmen Sie jetzt die linke obere Ecke: das ist "1, 1". Es ist nicht mehr die Zelle A1, das wäre nämlich Cells 1,1 von der ganzen Tabelle, sondern es ist die linke obere Ecke. Da wird gleich E6 rauskommen, das sagt mir hier schon die Anzeige. Und natürlich dessen AddressLocal. Da haben wir wieder so einen Kandidaten, Cells ist auch so ein unentschiedenes Objekt. Da müssen Sie also tatsächlich selber wieder schreiben, das lohnt jetzt nicht, um zu speichern. Und dann schreibe ich direkt dazu: "ist die linke obere Ecke". Und ausdrücklich dazu nehme ich noch mal die aktive Zelle, damit Sie gleich sehen, wo sich das mal unterscheiden kann. Die "Aktive Zelle" ist ActiveCell, nicht der ganze Range, sondern ActiveCell und dann AddressLocal. Das reicht jetzt erstmal an Informationen. Wenn ich jetzt auf F5 gehe, nach dem Speichern, F5, dann sehen Sie, wenig überraschend: die 6 "ist die linke obere Ecke" und es ist auch die "Aktive Zelle". Das werde ich jetzt ändern. Normalerweise, wenn Sie markieren, haben Sie Blöcke und eine von den Zellen ist heller. Die können Sie jetzt nicht durch Klick verschieben, aber Sie können mit Tab-Taste oder Return-Taste die aktive Zelle innerhalb der Markierung verändern. Jetzt steht sie z.B. auf G8 - kann ich da oben sehen. Und entsprechend, ich nehme das hier mal wieder raus. Wenn ich es jetzt aufrufe, steht die aktive Zelle auf G8. Es muss also nicht die linke obere sein, da sehen Sie mal, wie sich Selection und ActiveCell jeweils unterscheiden. Aber sie ist es meistens, vor allem weil Benutzer das beim Selber-Markieren gar nicht wissen, wie sie das ändern können. Also, ActiveCell und Selection sind wichtig, um vom Benutzer Daten zu erfragen. Um was reinzuschreiben eigentlich eher nicht, werden Sie sehen.

Excel 2013 VBA Grundkurs

Holen Sie aus Excel 2013 mit der integrierten Programmiersprache VBA auch das letzte Quäntchen an Funktion heraus und lassen Sie sich dazu zeigen, was alles möglich ist.

6 Std. 18 min (63 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!