Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Excel 2013 VBA Grundkurs

UsedRange

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Ein Benutzer muss in einer Tabelle gar nicht markieren, wo die Daten enthalten sind, denn mit UsedRange können Sie genau das ermitteln lassen.

Transkript

Die Objekte, wie ActiveCell und Selection lassen vermuten, Ihr Benutzer müsste immer vorher markieren, was er verändert haben will. Das wäre lästig. Im Gegenteil, dafür ist eigentlich VBA da, um sowas rauszufinden. Der kann natürlich nicht vorausahnen was der Benutzer machen will. Aber wenn der Benutzer sagt: "Hier stehen noch Daten, siehst du doch", dann können Sie per VBA sagen: "Ja, sehe ich". Ich nehme mal ein völlig beliebiges Beispiel. Ich habe hier in der Tabelle mal irgendwas reingeschrieben. Das ist nicht mal zwingend im Block. Sie werden nachher sehen: auch da funktioniert es. Aber hier kann man es erstmal deutlicher sehen. Dies ist die Datei, die wird frisch geöffnet und der Cursor steht mit Absicht boshaft irgendwo. Und jetzt möchte der Benutzer, dass wenn er irgendwo hinklickt, mein Makro startet, dieser Bereich gefunden und dann irgendwie weiter verarbeitet wird. Ich werde ihn nur markieren, als Beweis, dass ich ihn gefunden habe. Denn es gibt ein fertiges Objekt dafür. Mit Alt + F11 bin ich wieder im Code. Das nennt sich UsedRange. Deswegen werde ich jetzt auch den genutzten Bereich finden. Also, FindeGenutztenBereich. Und mit Dim rngGenutzt As Range - kann ich das erstmal zuweisen. rngGenutzt ist gleich vom ActiveSheet der UsedRange. Da müsste ich jetzt das Worksheet wieder richtig als Objekt vereinbaren, damit Sie sehen, dass es das gibt. Das ist mir jetzt zu mühsam. Sie werden gleich feststellen, das funktioniert trotzdem. Der UsedRange existiert in jeder Tabelle. Wenn ActiveSheet natürlich ein Diagram, Diagramm ist, haben wir ein Problem. Aber das haben wir ja hier nicht. Das sind alles so mögliche Fehlerquellen, über die sollte man mal nachdenken. Aber im Moment, um die Beispiele einfach zu erhalten, muss das nicht sein. Und jetzt kann ich z.B. sagen: diesen Range genutzt, hätte ich gerne markiert. Markiert ist die Aktion, das sehen Sie an diesem fliegenden Backstein davor - Select. Und unabhängig davon, schreibe ich mal mit Debug.Print auch rein, welchen Bereich ich denn gefunden habe. Auch der kennt ein Address.Local. Es ist ja ein ganz normaler Range. Und nach dem Speichern sehen Sie, einmal F5: unten steht der Bereich - "B4" bis "G13". Und wenn ich mit Alt + F11 rüberwechsle, ist er auch markiert. Ich hatte den Cursor vor hier stehen. Und ich hatte versprochen: das funktioniert nicht nur da, wo da die Blöcke so schön sind, sondern auch hier, wo ja wild zusammenhängend, oder besser gesagt, nicht zusammenhängend, die Elemente stehen. Da müssen Sie später im Code nicht suchen: was steht denn hier, kommt da vielleicht noch was, wo ist die letzte Zeile? Ist einer der beliebtesten Fehler, den ich in Excel VBA-Code sehe: in der Spalte A abwärts zu laufen und zu gucken, ob man bis Zeile 65 000 oder neuerdings 2,1 Milliarden da irgendwie noch Inhalte findet. Ist Quatsch, gar nicht nötig. Sie fragen UsedRange nach seiner letzten Zelle z.B. Also, hier eine kompliziertere Eingabe. Mit Alt + F11 bin ich wieder im Code. Hier alles aufgeräumt und hier mit F5 laufen lassen. Und dann sehen Sie von "B1" bis "H11", und markiert ist dieser Bereich, der irgendwie Daten enthält. Und wenn wir zur Not rauskriegen wollen, wie denn die letzte Zeile von dem genutzten Bereich ist. Dann schreiben wir das eben raus: Debug.Print "Letzte Zeile in dieser Tabelle ist". Und fragen diesen Bereich rngGenutzt nach Rows.Count. Soweit, so gut, da haben wir jetzt die Anzahl der Zeilen. Aber wir müssen natürlich noch seine erste Zeile draufzählen. Also, da kommt eine Zahl raus. Wir können uns das eben schon mal angucken. Diese Zahl sagt nur, mit F5, wie viele Zeilen in diesem Bereich sind. Und glücklicherweise, passt das gerade noch bei dem ersten Beispiel, weil es in Zeile 1 beginnt. Dann ist die Zeile 11 auch die Letzte. In diesem Beispiel würde ich erfahren, dass es die Zeile 10 ist. Tatsächlich ist es die Zeile 13, weil noch drei davor sind. Wenn wir das hier für mal... Ich markiere mal wieder irgendwas anderes, hier für nochmal durchführen. Also, F5, letzte Zeile ist 10 und das ist falsch. Wir müssen also noch drauf addieren, von dem rngGenutzt seine erste Zelle. Wir können die links oben nehmen, die ist wunderbar. Und dessen Row, nicht die Auflistung, ich will nicht die Liste aller Zeilen haben, die es gibt. Sondern ich will seine erste Zeile haben und das ist schlicht eine Zahl. Diese Zahl heißt 3, ich zeige das noch mal eben. Nein, sie heißt 4, weil die erste Zelle sich in Zeile 4 befindet. Und dann würde ich rechnen: 10 Zeilen Plus diese 4 ist also genau einen zu viel, weil die ja schon darin vorkommt. Ich muss also vom Ergebnis wieder einen abziehen. Das bedeutet, wenn ich das vielleicht mal andersrum schreibe, ist es deutlicher. So. Zuerst will ich die Zeile, wo die linke obere Ecke steht. Das ist die Zeile 4, davon ziehe ich einen ab, damit ich in die Zeile davor komme. Das sind drei Zeilen vor dem Block. Und dann sage ich: wie viel Zeilen hat denn der Block? Und jetzt wollen wir gucken, was da rauskommt. Da sollte eine 13 erscheinen. Also, mit F5. Die Zeile 13 ist die letzte Zeile und genau das ist, was da drin richtig ist. Also, das UsedRange-Objekt ist wunderbar, wenn Sie die Tabelle einfach nur fragen wollen, wo stehen denn die Daten. Müssen Sie nicht lange suchen, das weiß das Objekt voll automatisch.

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!