Excel 2013 VBA für Profis

Genutzten Datenbereich finden

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit UsedRange lässt sich in VBA zuverlässig der jeweilige Bereich einer Tabelle finden, der überhaupt Daten enthält. Das erspart langwierige Schleifen.

Transkript

Der Dialog soll langfristig in einer Liste alle Adressen anbieten. Das wird noch ein paar Schritte brauchen bis dahin. Die Liste können wir aber ruhig schonmal anzeigen, selbst wenn sie noch nicht von Anfang an das optimale Ergebnis anzeigt. Also hier ein Klick auf ListBox. Und ich lege die erstmal so ein bisschen lieblos dahin. Schönheit kommt später. Und sie kriegt auch schonmal den richtigen Namen. lstAdressen. Und damit man später auch weiß, was denn dort angezeigt wird, ein Label dazu. Achtung, das habe ich jetzt in der falschen Reihenfolge eingefügt. Dieses Label heißt entsprechend lblAdressen. Wird Transparent und darf einen kürzer werden. Und muss bei Gelegenheit anzeigen, wie viele Adressen da drinstehen. Das können wir im UserForm_Initialize ruhig schon vorbereiten, obwohl es eigentlich zu früh ist, denn da stehen noch keine drin, aber dann steht das eben entsprechend. Also mit Me.lblAdressen.Caption, das ist die Beschriftung von diesem Label. Die soll anzeigen, wie viele Einträge in der ListBox enthalten sind. Also Me.lstAdressen.ListCount, das ist die Anzeige. Und da können wir jetzt schreiben Adressen. Mit F5 sehen Sie, die Liste ist leer, steht also "0 Adressen". Die wird auch noch eine Zeit lang leer bleiben, aber der Teil ist funktionsfähig, auch wenn hier noch nichts läuft. Jetzt geht es nämlich erstmal darum, überhaupt rauszukriegen, wo Daten sind. Vielleicht gucken wir uns das erstmal hier an. Ich will rauskriegen diesen Bereich, und zwar ohne dass mir jemand was sagen muss. Die Idee dabei ist, Excel kann Ihnen automatisch diesen Bereich nennen. Das ist der sogenannte UsedRange, ein fertiges Objekt, welches flexibel immer anzeigt, welcher Bereich an Daten gerade gefüllt ist. Wenn ich jetzt hier ein X reinschreiben würde, wäre UsedRange entsprechend größer. Wenn ich hier oben was lösche, ist UsedRange vielleicht nur noch so klein. Also es ist wirklich flexibel immer nur der Bereich mit Daten drin. Sehr, sehr praktisch, Sie würden sich sonst einen Wolf suchen, wenn Sie das zu Fuß rauskriegen wollen. Ich sehe ganz oft Makros, in denen drinsteht, geh mal die Spalte A runter und geh so lange abwärts, bis du die erste leere Zelle findest. Das dauert drei Wochen und eine Stunde extra. In der Zeit ist UsedRange schon 30.000 Mal fertig. Also, UsedRange ist schonmal toll und wird uns sowas sagen. Und das muss ich später verkürzen um das, was unterhalb dieser Titelzeile steht, und dafür hatten wir einen Bereichsnamen. Also tasten wir uns mal ran. Am besten werde ich immer zwischendurch Bereiche markieren. Dann sehen Sie nämlich, was passiert ist. Mit Alt+F11 und Doppelklick hier komme ich in UserForm_Initialize. Ich muss irgendwo hier zwischen Bevor ich anfange, Adressen zu zählen und die also schon einzufügen, muss ich diesen Bereich ermitteln. Das bedeutet, ich brauche hier also eine Range-Variable. Nehmen wir Dim rngZeile As Range. Die werden wir später für andere Zwecke brauchen, aber erstmal können wir die einsetzen. Dann gucken wir doch mal, was passiert. Set rngZeile = ActiveSheet.UsedRange. Da dürfen Sie nicht irritiert gucken. ActiveSheet ist sehr unspezifisch, es ist zwar ein Worksheet-Objekt, enthält aber nicht die ganzen Zusatzabgaben, welche so ein Worksheet kennen sollte. Ich muss also im Moment behaupten, dass es ein UsedRange hat. Und der Einfachheit halber, lassen wir das einfach mal anzeigen. rngZeile.Activate. Und da kommt es jetzt auch nicht mehr drauf an. Hier steht vorübergehend Müll drin. Me.lstAdressen.AddItem lasse ich mir einfach mal von rngZeile, also diesen markierten Bereich der AddressLocal da reinschreiben. Das ist dann die erste Zeile. Und der Dialog wird behaupten, es gäbe eine Adresse. Einmal F5. Und Sie sehen erstens eine Adresse von $A$1 bis $H$10. Und das habe ich mir markieren lassen. Das bedeutet, Sehen Sie jetzt, was der UsedRange ist. Und jetzt können wir es mal ein klein bisschen besser machen. Also mit Alt+F11, Doppelklick hier. Wir brauchen wohl doch noch einen zweiten Bereichsname. Dim rngAdressen As Range. Und hier können wir mal sauber schreiben. Es geht nicht um ActiveSheet, sondern es geht um ein konkretes, und zwar eins, welches VBA-intern schon tblAdressen heißt. Also das wird sich ändern. Set rngAdressen will ich benutzen. Das ist gleich tblAdresse. Und der erkennt jetzt plötzlich wieder UsedRange, egal ob das aktiv ist oder nicht. ActiveSheet ist nett, häufig benutzt, aber dieses ist sauberer. Ich will exakt dieses Tabellenblatt. Das können wir nachher auch wieder umbenennen. Wenn Sie es hier umbenennen wollen, das ist die Programmierbezeichnung, unter der Sie es hier ansprechen können. Das in den Klammern ist bloß der Namen, den der Benutzer einsetzt. Und das Activate brauchen wir nicht mehr, das hatte ich schon geprüft. Und wenn ich hier was richtig stehen lassen will, dann muss es wenigstens rngAdressen heißen. Da wird sich nämlich gleich noch was ändern. Sie erinnern sich, der Bereich ist zu groß. Ich muss jetzt kürzen, sodass hier wirklich nur ab Zeile 4 der Bereich untersucht wird und nicht die Titelzeilen mit. Das braucht noch einige Schritte, deswegen soll das hier erstmal so weit reichen.

Excel 2013 VBA für Profis

Nutzen Sie die Möglichkeiten der Programmiersprache VBA in Excel 2013, um eigene Dialoge zu erstellen, auf andere Arbeitsmappen zuzugreifen und wichtige Funktionen einzusetzen.

4 Std. 59 min (53 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!